我有一条贝塞尔曲线,大约有48个控制点,我想把它转换成许多三次贝塞尔曲线…任何算法,数学理论或只是一个链接可能会有所帮助:)??
数学理论:你不能这么做。一条n阶Bezier曲线不能被表示为任意数量的(n-1)条n阶Bezier曲线,因为曲率不能被忠实地表示。你可以近似它,但你不会得到相同的结果。
实践:你可以将你的第48阶曲线切割成简单曲线的部分,其中所有的控制点都在开始/结束基线的同一侧,曲线的中点w.r.t你的控制变量大致在曲线的凸包的中心。对于这种曲线,低水平曲线是合理的近似值。您可以通过使用48阶曲线的一阶、二阶等导数根找到曲线上的拐点(参见http://pomax.github.io/bezierinfo/#derivatives和http://pomax.github.io/bezierinfo/#splitting),然后运行de Casteljau的算法,在每个拐点的控制变量值之间分割曲线来实现这一点。然后,您可以用三次曲线近似每个结果子曲线,结果将看起来非常接近(或在像素级别上看起来相同)原始曲线。
也就是说:为什么你有48阶曲线,这太疯狂了= p