如何向心的Catmull-Rom样条的工作?
题
从这个网站,这似乎有大约的Catmull最详细的信息-ROM花键,似乎需要四个点来创建样条曲线。然而,它没有提及的点P0和p3如何影响P1和P2之间的值。
另一个问题我已经是你会如何创建连续样条线?难道是为定义点P1一样容易,P2可与P4连续,P5通过使P4 = P2(即,假设我们有P0,P1,P2,P3,P4,P5,P6,... ...,PN )。
一个更一般的问题是如何将一个计算上的Catmull-ROM花键切线?难道有涉及样条曲线上取两个点(说在0.01,0.011)和获得,考虑到位置,并根据毕达哥拉斯切线坐标的输入值给?
解决方案
看看方程式2 - 它描述了控制点如何影响线。你可以看到点P0
和P3
进入方程沿P1
的曲线P2
绘制点。您还可以看到该方程给出P1
时t == 0
和P2
时t == 1
。
此示例方程可以推广。如果你有个R0
,R1
,... RN
那么你可以通过使用公式2 RK
,RK + 1
,P0 = RK - 1
和P1 = RK
绘制P2 = RK + 1
和P3 = RK + 2
之间的点。
您不能从R0
密谋R1
或RN - 1
到RN
除非你增加额外的控制点,以代替R - 1
和RN + 1
。总的想法是,你可以选择你要添加到序列的头部和尾部给自己所有的参数,计算出什么样点。
可以一起通过删除它们之间的控制点中的一个连接两个花键。假设你有R0
,R1
,...,RN
和S0
,S1
,... SM
它们可以加入到R0
,R1
,...,RN - 1
,S1
,S2
,... SM
。
要计算的切线在任何点只取式(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影响它们之间的内插段的形状。