我必须编写一个函数,将三次贝塞尔曲线(开始、结束、cp1、cp2)转换为简单的二次(开始、结束、cp1)实例(一个三次可以变成 2 个或更多二次)。
任何编码语言都可以接受,我只需要算法。
我必须编写一个函数,将三次贝塞尔曲线(开始、结束、cp1、cp2)转换为简单的二次(开始、结束、cp1)实例(一个三次可以变成 2 个或更多二次)。
任何编码语言都可以接受,我只需要算法。
有某些形状,比如圆形,可以用三次方来近似,但不能用二次贝塞尔曲线来近似。所以从纯数学的角度来看,这个任务是无法解决的。
然而,当然可以用一组分段二次贝塞尔曲线来近似单个三次贝塞尔曲线。每个二次方的点将位于三次方的精确点上。您可以通过某种优化方法(最小二乘或类似方法)找到控制点,在这些控制点中,您尝试最小化三次贝塞尔曲线和二次贝塞尔曲线之间的差异。
最后我决定自己实现它,使用 lineto 循环,类似于: http: //www.paultondeur.com/2008/03/09/drawing-a-cubic-bezier-curve-using-actionscript -3/