如何均匀分割由非等距控制点生成的插值样条曲线

来源:百度知道 编辑:UC知道 时间:2024/06/30 14:44:04
我用参数形式的Catmull-Rom spline(插值样条的一种)生成了关于34个控制点(控制点之间不是等距的)的光滑闭合曲线。现在怎么能将它按照曲线长度均匀分割为n段曲线。
我考虑过使用曲线积分算出曲线的长度,但是效率太低,因为插值曲线只能控制点之间形成的一个区间一个区间的进行单独计算再求和。
或者有相关研究的人给我推荐些相关数学研究的论文也行,要原文。
或MSN讨论: zhaokaiyu#hotmail.com(把#换成@)

PS:如果都是恶意乱回答的答案,我宁愿被罚分也不会给分的。
谢谢了
关于autoCAD和Matlab的使用,我也看过一些资料,确实是可以进行等分的。我的问题是想找到一个简便的数学算法去编程,因此使用其他软件在这里是行不通的。
曲线积分有一个效率问题,一共34段曲线。34个不同的表达式,实际确定等分点坐标时很困难,而且效率极低。

zlt_204 你的想法不错,但是用拟合做的话,曲线是不经过控制点的。而控制点的位置在我的研究中是很重要的信息。由此产生的误差可能会难以接受。

我已经解决,希望给以后可能会用到这个的人一点帮助。
我采用了java3d中的生成动画的类CBKeyFrame 它可以生成样条曲线且通过控制点的。根据一个参数u[0,1]生成两个控制点的曲线并且可以计算出u到其中一个控制点的曲线长度。
我的曲线长度得出以后 除以34得到一个单位长度x。计算每一个n*x(x,2x,3x,...)所属于的区间序号,然后可以知道该点在该曲线上的位置(1.先得到与其控制点的形成的长度 L,2用二分法逼近其对应u值,3再根据u得出等分点坐标)

分就不给了。前面我也说过了,谢谢各位了

我喜欢更偷懒一点的方法:

在样条曲线上再取它100000个点,对这100034个点做多项式拟合,这样得到在整个区间上的函数表达式,剩下的就是对这个函数做线积分了。

好在有matlab,这些计算工作都交给它吧~~~

除了用曲线积分,ms没别的什么方法了啊。你嫌麻烦完全可以用matlab数值计算的啊。自己写个程序,把你那些点放到里面去就行了。

如果你用AutoCAD画样条曲线,然后用DIV命令可以把样条曲线定数等分成等长的好几段

这个问题很深奥的,建议你去当地的图书馆查查看看,现在中国人最差的就是数学了,而且学数学的人比较古板,是不会到百度知道这里来回答问题的,所以你自己多多去查下资料吧,祝你学业有成