Nurbs曲线详解

Nurbs曲线详解

摘自:http://www.win-cnc.com/htmlmodel/jswzxx/243580.html

NURBS(Non Uniform Rational B-spline)曲线通常称为非均匀有理B样条曲线,其数学定义如下:
Nurbs曲线详解_第1张图片

基函数由递推公式定义:
Nurbs曲线详解_第2张图片

非均匀:指节点向量的值与间距可以为任意值。这样我们可以在不同区间上得到不同的混合函数形状,为自由控制曲线形状提供了更大自由。均匀与非均匀的主要区别在于节点向量的值。如果适当设定节点向量,可以生成一种开放均匀样条,它是均匀与非均匀的交叉部分。开放样条在两端的节点值会重复d次,其节点间距是均匀的。例如:
{0,0,1,2,3,3},(d=2,n=3)
{0,0,0,1,2,2,2},(d=4,n=4)
开放均匀B样条与贝泽尔样条性质非常类似,如果d=n+1(即多项式次数为n),那么开放B样条就变成了贝泽尔样条,所有节点值为0或1。如四个控制点的三次开放B样条,节点向量为:{0,0,0,0,1,1,1}。
 有理B样条:有理函数是两个多项式之比,有理样条(rationalspline)是两个样条函数之比,有理B样条用向量描述。
URBS曲线由以下三个参数定义:
(1) 控制点 :确定曲线的位置,通常不在曲线上,形成控制多边形。(见图1,图中

Nurbs曲线详解_第3张图片       
图1  控制点移动对曲线的影响

(2) 权因子:确定控制点的权值,它相当于控制点的“引力”,其值越大曲线就越接近控制点(见图2,Bi为控制点)。
Nurbs曲线详解_第4张图片
               
       图2 曲线随权因子变化

(3) 节点矢量K:NURBS曲线随着参数K的变化而变化,与控制顶点相对应的参数化点K称为节点,节点的集合Ki:[K0,K1…,Kn…,Kn+m+1]称为节点矢量。
节点:在曲线上任意一点有多于一个控制点产生影响(除了bezier的端点),节点就象一种边界,在这个边界上一个控制点失去影响作用,另一个控制点取得影响。

2、NURBS曲线怎样通过首末节点
多重节点序列使得样条曲线更靠近于重复节点位置。如果末端节点重复d+1次,则d阶B-样条必须插值最后一个控制点。因此,解决样条曲线不能横跨整个控制顶点序列的一个方法是,重复首尾两个节点,这样得到的样条曲线将插值首尾两个控制点。

对于非周期的样条,节点矢量为

 
即节点矢量两端各有m+1个相同的节点,以便曲线通过控制多边形首、末端点,并与首、末两边相切。

(参考系统编程篇§2.7程序示例)

3、NURBS曲线轨迹的矩阵计算法及矩阵表示
  因NURBS样条函数的节点参数沿参数轴的分布是不等距的,不同节点矢量形成的B样条基函数各不相同,需要单独计算,且算法中又增加了权因子,所以曲线轨迹点的计算较为复杂、费时,为了提高NURBS曲线插补的实时性,在实时插补前需进行必要的预处理,其主要任务是确定NURBS曲线轨迹计算公式的有关系数,以简化实时插补的计算量。
  若曲线采用三次NURBS形式表示(三次与K次计算方法相同,表达式不同),即K=3, ,则第i段曲线可以写成下列矩阵形式:
Nurbs曲线详解_第5张图片   

整理可得:
   

   由于控制点di及权因子Wi 均已知,而Mi仅与节点向量有关,也是确定的,Ci与Mi、Wi、di有关,即也是确定的,故式中各项系数均已知,且与插补点的参数无关,可在插补前一次性求出,因式中i的取值为3到n,所以对整条NURBS曲线,可计算出的系数共有n-2组,在插补中根据插补点所在的位置动态选用相应的系数。


   对于曲线上坐标X、Y、Z分别有:
Nurbs曲线详解_第6张图片
http://www.win-cnc.com/htmlmodel/jswzxx/243580.html

你可能感兴趣的:(数据处理算法)