(跟进这个问题。)
给定一系列三次贝塞尔曲线,我怎样才能最小化地修改它们以使它们以 C2 连续方式连接?
输入:
- 具有控制点的曲线 P
P0,P1,P2,P3 - 带有控制点的曲线 Q
Q0,Q1,Q2,Q3 - 如果有帮助,您可以假设它们已经是 C1 连续的。
约束:
- C0 连续性:
P3 = Q0 - C1 连续性:
P2 - P3 = Q0 - Q1 - C2 连续性:
P1 - 2*P2 + P3 = Q0 - 2*Q1 + Q2 - 修改后的曲线尽可能接近原始曲线 P 和 Q
(跟进这个问题。)
给定一系列三次贝塞尔曲线,我怎样才能最小化地修改它们以使它们以 C2 连续方式连接?
输入:
P0, P1, P2,P3Q0, Q1, Q2,Q3约束:
P3 = Q0P2 - P3 = Q0 - Q1P1 - 2*P2 + P3 = Q0 - 2*Q1 + Q2使修改后的曲线尽可能接近原始曲线可以有多种解释,但可以考虑保持远离连接点的端点和切线恒定是合适的。所以点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,然后应用上述步骤。sr