摘 要: 提出了均匀三次B-spline曲线反算的快速算法。在Matlab中编程实现,大大降低了程序的复杂性,提高了运算效率,并使重构所得曲线的两个端点处曲率不为零,满足了一阶连续,并给出了应用实例。
关键词: 逆向工程;B-spline;反算算法;Matlab
在计算机辅助几何设计(CAGD)实践中,常遇到设计者事先并不知道控制多边形顶点的位置,而只知道曲线上的某些型值点的情况。从设计角度上来说,通常考虑的是曲线的大致形状,而非控制多边形的大致形状。为了构造B-spline曲线,就需要由已知的型值点反算出控制多边形的顶点。在实际工程应用中,B-spline 曲线的反算过程所涉及到的计算量很大,因此讨论B-spline 曲线的快速反算算法有着很重要的意义[1]。
对于三次均匀B-spline曲线的反算,朱心雄[2]给出了一种计算速度快且易于编程的反算控制顶点的迭代方法,可以得到在允许误差范围内的C2连续曲线。而参考文献[3]通过A-1的研究对三对角矩阵提出了一种优于追赶法和LU分解法的求解方法。但是它们都是以两端曲率为零作为边界条件,可能出现人们所不希望看到的曲线在端点处不连续的现象。针对B-spline 曲线的反算过程计算量大,重构曲线端点处曲率不连续的问题,本文提出了一个有效的解决办法,并在Matlab[4]中予以编程实现,大大降低了程序的复杂性,提高了运算效率,并使重构所得曲线的两个端点处曲率不为零,至少满足了一阶连续。
式中总共有m+1个线性方程组,但有n+1个控制顶点未知量。因此,要想得到唯一解,需要另外补充两个方程,这两个方程一般由边界条件给定。边界的补充条件有多种形式,如给定两端点的切向量、自由端点条件、虚节点条件和抛物线条件等,实际应用中根据具体情况选取适合的边界补充条件。有了补充方程,即可用迭代法或追赶法等求解所建立的线性方程组。
2 快速反算算法
将定义在每一个节点区间上用整体参数u表示的B-spline基变换成用局部参数t∈[0,1]表示,则三次均匀B-spline曲线段的矩阵表示为:
参考文献
[1] 刘德平.逆向工程关键技术及其应用研究[D].西安:西安电子科技大学,2008.
[2] 朱心雄.自由曲线曲面造型技术[M].北京:科学出版社,1999.
[3] 吴光亚,王小华.反求三次B样条曲线控制顶点的一种快速算法[J].杭州电子科技大学学报,2005,25(3):64-66.
[4] 王学辉,张明辉.Matlab 6.1最新应用详解[M].北京:中国水利水电出版社,2002.