(this question的后续行动。)
给定一系列三次Bézier曲线,如何最小化它们以使它们以C2连续的方式连接?
输入:
P0
,P1
,P2
,P3
Q0
,Q1
,Q2
,Q3
约束:
P3 = Q0
P2 - P3 = Q0 - Q1
P1 - 2*P2 + P3 = Q0 - 2*Q1 + Q2
答案 0 :(得分:3)
使修改后的曲线尽可能接近原点可以有多种解释,但可以考虑保持远离连接点的端点和切线不变。因此,点P0
,P1
,P3 = Q0
,Q2
,Q3
是不变的。
我们可以更改原点,P3 = Q0 = 0
,强制C2连续性可以表示为:
P1 - 2*P2 = 2*Q1 + Q2
可以在复杂的表示中表达P2=a*e^i*r
和Q1=b*e^i*r
(保持相同的角度强制C2连续性。计算
(P1 - Q2)/2 = c*e^i*s
实施C2连续性应选择r=s
,并找到a
和b
的组合,以a+b =c
。有无限多的解决方案,但有人可能会使用启发式方法,如更改a
,如果它是最小的(从而产生不太明智的变化)。
如果这不会产生足够小的变化,请尝试两步优化:首先更改P1
和Q2
以使s
更接近r
,然后应用这些步骤上方。