我在3维空间中有N个点。我需要用一条线将它们连接起来。然而,如果我使用简单的直线,那么它看起来不够平滑,也不美观。
我的当前方法是使用Bezier曲线,使用DeCasteljau算法处理4个点,并对数据集中每组4个点运行该算法。但是,这种方法的问题在于,由于我分别运行它(例如点1-4、5-8、9-12等),因此在4-5、8-9等之间的连线不够平滑。
我还寻找其他方法;具体地说,我发现了关于Catmull-Rom样条的 这篇文章 ,它似乎更适合我的目的,因为该曲线通过所有控制点,而不像Bezier曲线。因此,我几乎要开始实施它了,但后来我在该网站上看到,该公式假设控制点均匀分布。而我的问题并非如此。
所以,我的问题是,我应该使用什么方法——Bezier、Catmull-Rom,还是完全不同的方法?如果使用Bezier,则如何解决4-5、8-9等之间的不平滑问题?如果使用Catmull-Rom,则为什么该公式不能用于非均匀间距的控制点,我需要什么替代方法?
编辑:我现在非常确定我想要Catmull-Rom样条,因为它通过每个控制点,这对我的应用程序是一个优势。因此,我想回答的主要问题是,为什么我提供的链接上的公式不能用于非均匀间距的控制点?
谢谢。
我的当前方法是使用Bezier曲线,使用DeCasteljau算法处理4个点,并对数据集中每组4个点运行该算法。但是,这种方法的问题在于,由于我分别运行它(例如点1-4、5-8、9-12等),因此在4-5、8-9等之间的连线不够平滑。
我还寻找其他方法;具体地说,我发现了关于Catmull-Rom样条的 这篇文章 ,它似乎更适合我的目的,因为该曲线通过所有控制点,而不像Bezier曲线。因此,我几乎要开始实施它了,但后来我在该网站上看到,该公式假设控制点均匀分布。而我的问题并非如此。
所以,我的问题是,我应该使用什么方法——Bezier、Catmull-Rom,还是完全不同的方法?如果使用Bezier,则如何解决4-5、8-9等之间的不平滑问题?如果使用Catmull-Rom,则为什么该公式不能用于非均匀间距的控制点,我需要什么替代方法?
编辑:我现在非常确定我想要Catmull-Rom样条,因为它通过每个控制点,这对我的应用程序是一个优势。因此,我想回答的主要问题是,为什么我提供的链接上的公式不能用于非均匀间距的控制点?
谢谢。