我必须编写一个函数,将三次贝塞尔(start,end,cp1,cp2)转换为简单的二次(start,end,cp1)实例(一个立方可以变成2或更多的二次方)。三次贝塞尔到二次方
接受任何编码语言,我只需要该算法。
我必须编写一个函数,将三次贝塞尔(start,end,cp1,cp2)转换为简单的二次(start,end,cp1)实例(一个立方可以变成2或更多的二次方)。三次贝塞尔到二次方
接受任何编码语言,我只需要该算法。
最后我决定由我自己来实现它,用了lineTo循环,与此类似: http://www.paultondeur.com/2008/03/09/drawing-a-cubic-bezier-curve-using-actionscript-3/
有一定的形状,如圆形,可以由立方体近似足够好,但不是由二次贝塞尔的。所以从纯粹的数学角度来看,这个任务是无法解决的。
然而,当然,用一组分段二次贝塞尔来逼近单立方贝塞尔是可能的。每个二次方程的设定点都在三次方的确切点上。通过一些优化手段(最小二乘法或类似的方法)找到的控制点,可以尽量减少立方和二次贝塞尔之间的差异。
虽然确实存在可以用立方而不是二次贝塞尔曲线表示的形状,但圆形也不能用任何一种表示。它可以近似。 –
@MikePedersen:谢谢。我重新回答了我的答案。 – datenwolf
本文可能戈夫一些很好的提示:http://www.timotheegroleau.com/Flash/文章/ cubic_bezier_in_flash.htm –
澄清:1)有没有办法? 2)最好的近似 – csomakk
伟大的环节,我想知道为什么我找不到它。谢谢 – csomakk