来自 this site ,里面好像有关于Catmull-Rom样条的最详细的信息,看来创建样条需要四个点。但是,它没有提到点 p0 和 p3 如何影响 p1 和 p2 之间的值。
我的另一个问题是如何创建连续样条曲线?通过使 p4 = p2 定义点 p1, p2 与 p4, p5 连续(即假设我们有 p0, p1, p2, p3, p4, p5, p6, ..., pN )。
一个更普遍的问题是如何计算 Catmull-Rom 样条上的切线?考虑到这些输入值给出的位置坐标,它是否必须涉及在样条曲线上取两个点(比如 0.01、0.011)并根据毕达哥拉斯得到切线?
最佳答案
看看等式 2 - 它描述了控制点如何影响线。您可以看到点 P0
和 P3
进入方程,用于沿着从 P1
到 P2
的曲线绘制点。您还将看到,当 t == 0
时等式给出 P1
,当 t == 1
时给出 P2
.
这个例子方程可以推广。如果你有点 R0
, R1
, ... RN
那么你可以绘制 RK
和 之间的点RK + 1
通过使用公式 2 和 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 求导即可。
关于c++ - 向心 Catmull-Rom 样条如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1085617/