【问题标题】:joining two Bézier curves smoothly (C2 continuous)平滑连接两条贝塞尔曲线(C2 连续)
【发布时间】:2012-08-31 00:27:30
【问题描述】:

this question的跟进。)

给定一系列三次 Bézier 曲线,我怎样才能对它们进行最小程度的修改以使它们以 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 的修改曲线

【问题讨论】:

    标签: math graphics bezier continuous


    【解决方案1】:

    使修改后的曲线尽可能接近原始曲线可以有多种解释,但可以考虑保持远离连接点的端点和切线恒定是合适的。所以点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,然后应用上述步骤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 2022-09-27
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多