我正在尝试创建一个接收任意数量的点(位置和控制)的类,并根据给定的信息创建一个 catmull-rom 样条曲线。
我正在做的 - 我真的不确定这是否是正确的方法 - 将每个单独的点存储在一个类中,如下所示:
class Point
{
public:
Vector3 position;
Vector3 control;
}
其中显然 position 是点的位置,而 control 是控制点。
我的问题是连接样条线 - 显然,鉴于上述类在样条线数组中持有一个点,表明任何给定位置只能有一个控制点。因此,当 catmull rom 样条中有三个或更多点时,正在连接的各种单独的 catmull-rom 样条共享一个位置,并且与另一个这样的样条共享一个控制。
现在需要相同的位置 - 因为我想创建它们之间连续的样条线。但是我真的很想知道,两条样条线之间的控制点是否也应该相同?稍微摆弄一下控制点,我可以让它看起来从一个样条曲线平滑过渡到另一个,但是我必须强调,我不确定它们的过渡方式是否与 catmull-rom 样条曲线形成它们的形状一致. 我宁愿正确地做它,也不愿坐在我的手上并合理化它已经足够好。
显然我的问题的第二部分是不言自明的:给定两个控制点和位置点,我如何计算 catmull-rom 样条的长度?