卡特莫尔-ROM样条 - 他们是如何工作的?(Catmull-Rom splines - how d

2019-06-25 02:08发布

从这个网站似乎有大约卡特莫尔-ROM花键的最详细的信息: http://www.mvps.org/directx/articles/catmull/它使需要四个点来创建样条的记载。 但是它没有提及的点P0和P3是如何影响P1和P2之间的值。

另一个问题我已经是你会如何创建连续样条线? 难道是为定义点P1一样容易,P2可与P4连续,通过使P4 = P2 P5(这是假设我们有P0,P1,P2,P3,P4,P5,P6 ... PN)。

一个更普遍的问题是如何将一个计算上卡特莫尔ROM样条曲线的切线? 难道有涉及样条曲线上取两个点(说在0.01,0.011)和获得基于给定的位置坐标的输入值给出毕达哥拉斯切线?

Answer 1:

看看公式2 - 它描述了控制点如何影响线。 你可以看到点P0P3进入方程沿曲线绘制点P1P2 。 您还可以看到该方程给出了P1的时候t == 0P2的时候t == 1

此示例方程可以推广。 如果你有个R0R1 ,... RN那么你可以绘制的点RKRK + 1通过使用公式2 P0 = RK - 1P1 = RKP2 = RK + 1P3 = RK + 2

你可以不积从R0R1或从RN - 1RN ,除非你增加额外的控制点,以代替R - 1RN + 1 。 总的想法是,你可以选择你要添加到序列的头部和尾部给自己所有的参数,计算出什么样点。

您可以通过删除它们之间的控制点中的一个连接两个样条在一起。 假设你有R0R1 ,......, RNS0S1 ,... SM它们可以加入到R0R1 ,..., RN - 1S1S2 ,... SM

为了计算切线在任何点只取式(2)的衍生物。



Answer 2:

在维基百科的文章进入多一点点深度。 花键的一般形式需要为具有相关的切向量输入2控制点。 然后附加的花键段可以加入,条件是所述公共控制点的切线向量相等,它保留了C1连续性。

在具体的Catmull-ROM形式,在中间点的所述切向量被邻近控制点的位置来确定。 因此,为了创建通过多个点的C1连续样条,它是足以提供该组控制点和切线在第一和最后一个控制点的载体。 我认为标准的行为是使用P1 - P0在P0和PN切向量 - 在PN PN-1。

根据维基百科的文章,计算在控制点Pn切,你使用这个公式:

T(n) = (P(n - 1) + P(n + 1)) / 2

这也回答了你的第一个问题。 对于一组4个控制点,P1,P2,P3,P4,内插P2和P3之间的值需要的信息形成所有4个的控制点。 P2和P3可以自行确定通过插值段必须通过端点。 P1和P3确定切向量插值段将在点P2。 P4和P2确定切向量段将在点P3。 在控制点P2和P3影响它们之间的内插段的形状的切向量。



文章来源: Catmull-Rom splines - how do they work?