|
1 NURBS曲线、曲面造型方法
1.1 NURBS曲线方程 一条p阶NURBS曲线被定义作:  式中:{Pi}——控制点(形成控制多边形); {ωi}——权因子; {Ni,p(u)}——p阶B样条基函数,其节点矢量为: U={a,…,a,up+1,…,um-p-1,b,…,b} 除非另述,一般假定a=0,b=1及对于所有的i都有ωi>0。 令: 则NURBS曲线方程还可写作:  1.2 NURBS曲面方程 u向p阶、v向q 阶的NURBS曲面定义为:  式中:{Pi,j}——构成曲面控制点网; {ωi,j }——权因子; {Ni,p(u)}、{Nj,q(v)}——p阶、q阶B样条基函数,其节点矢量为: U={0,…,0,up+1,…,ur-p-1,1,…,1} V={0,…,0,vq+1,…,vs-q-1,1,…,1} 这里,r=n+p+1,s=m+q+1。 令: NURBS曲面方程还可写作:
2 NURBS曲线、曲面的数据结构
NURBS曲线的属性信息有:次数k,控制点d,权因子w和节点矢量U。NURBS曲面的属性信息有:次数k、l,控制点di,j,权因子wi,j和节点矢量U,V。能否管理好NURBS曲线、曲面,取决于能否对这些属性信息进行有效的组织和管理。而要对曲线、曲面进行方便、有效的管理和计算,良好的数据结构是必不可少的。 NURBS曲线、曲面数据结构图如下:
 Nurbs数据结构图
 Nurbs曲面数据结构图
这种数据结构形式具有如下几个优点: (1)运算灵活,便于修改; (2)易于检索、提高运算速度; (3)结构简单、便于维护。
3 曲线、曲面数据结构的编程实现
不难看出,上述曲线、曲面数据结构均为双链表结构,并且链表内还包括若干个双链表,如控制点链表、节点链表等。传统的用C语言实现的双链表结构突出的缺点是不直观,编程比较复杂。因此本文采用VC++指针类型的集合样板类实现这种双链表结构,使得对链表中节点的插入、删除和修改非常直观。 |