sor*_*h-r 14 algorithm bezier vector-graphics
我正在寻找一种算法,在Bézier曲线上插入一个新的控制点,而不会变形.
有没有人知道Bézier算法的库或参考(插入,优化,de Casteljau ...)?
Phi*_*oin 22
这被称为"结插入问题".对于Bézier曲线,de Casteljau算法将为您提供正确的答案.这是3度Bézier的简单算法.
假设您想在t由定义的Bézier曲线内的参数空间的一小部分处插入一个结P0, P1, P2, P3.这是你做的:
P0_1 = (1-t)*P0 + t*P1
P1_2 = (1-t)*P1 + t*P2
P2_3 = (1-t)*P2 + t*P3
P01_12 = (1-t)*P0_1 + t*P1_2
P12_23 = (1-t)*P1_2 + t*P2_3
P0112_1223 = (1-t)*P01_12 + t*P12_23
Run Code Online (Sandbox Code Playgroud)
然后你的第一个Bézier定义为:P_0, P0_1, P01_12, P0112_1223; 你的第二个Bézier定义如下:P0112_1223, P12_23, P2_3, P3.
几何解释很简单:在分数处拆分Bézier多边形的每个分段t,然后在新的多边形中连接这些分割点并迭代.当您离开1点时,此点位于曲线上,前一个/下一个分割点形成前一个/下一个Bézier多边形.相同的算法也适用于更高度的Bézier曲线.
现在,如果您想要将控制点插入到特定值t但在空间中的特定位置,则会变得更加棘手.就个人而言,我在这里所做的只是二元搜索,其值t接近所需的分割点......但如果性能至关重要,您可能会找到更快的分析解决方案.
| 归档时间: |
|
| 查看次数: |
4628 次 |
| 最近记录: |