平滑地连接两条Bézier曲线(C2连续)

时间:2012-09-06 08:16:34

标签: math graphics bezier continuous

this question的后续行动。)

给定一系列三次Bézier曲线,如何最小化它们以使它们以C2连续的方式连接?

输入:

  • 曲线P与控制点P0P1P2P3
  • 曲线Q,其中包含控制点Q0Q1Q2Q3
  • 如果有帮助,你可以假设它们已经是C1连续的。

约束:

  • C0连续性:P3 = Q0
  • C1连续性:P2 - P3 = Q0 - Q1
  • C2连续性:P1 - 2*P2 + P3 = Q0 - 2*Q1 + Q2
  • 修改曲线尽可能接近原始曲线P和Q

1 个答案:

答案 0 :(得分:3)

使修改后的曲线尽可能接近原点可以有多种解释,但可以考虑保持远离连接点的端点和切线不变。因此,点P0P1P3 = Q0Q2Q3是不变的。

我们可以更改原点,P3 = Q0 = 0,强制C2连续性可以表示为:

P1 - 2*P2 = 2*Q1 + Q2

可以在复杂的表示中表达P2=a*e^i*rQ1=b*e^i*r(保持相同的角度强制C2连续性。计算

(P1 - Q2)/2 = c*e^i*s

实施C2连续性应选择r=s,并找到ab的组合,以a+b =c。有无限多的解决方案,但有人可能会使用启发式方法,如更改a,如果它是最小的(从而产生不太明智的变化)。

如果这不会产生足够小的变化,请尝试两步优化:首先更改P1Q2以使s更接近r,然后应用这些步骤上方。