码迷,mamicode.com
首页 > 其他好文 > 详细

B样条曲线曲面

时间:2016-05-02 00:24:59      阅读:433      评论:0      收藏:0      [点我收藏+]

标签:

1 B样条曲线

1.1 B样条曲线方程

B样条方法具有表示与设计自由型曲线曲面的强大功能,是形状数学描述的主流方法之一,另外B样条方法是目前工业产品几何定义国际标准——有理B样条方法 (NURBS)的基础。B样条方法兼备了Bezier方法的一切优点,包括几何不变性,仿射不变性等等,同时克服了Bezier方法中由于整体表示带来不 具有局部性质的缺点(移动一个控制顶点将会影响整个曲线)。B样条曲线方程可表示为

技术分享

其中,di(i=0,1...n)为控制顶点(坐标),Ni,k(i=0,1...n)为k次规范B样条基函数,最高次数是k。基函数是由一个称为节点矢量的非递减参数u的序列Uu0u1≤...≤un+k+1所决定的k次分段多项式。

B样条的基函数通常采用Cox-deBoor递推公式:

技术分享 (2)

式中 i 为节点序号, k 是基函数的次数,共有n+1个控制顶点。注意区分节点和控制顶点,节点是在节点矢量U中取得,控制顶点则是坐标点,决定B样条的控制多边形。Cox-deBoor递推公式是B样条曲线的定义的核心,该公式在程序中的实现可采用递归的方式:

##Cox-deBoor 公式

所给程序可用于计算基函数Ni,k(u)的值,程序中对不同类型的B样条曲线区别在于节点矢量 NodeVector 的取值不同。

1.2 B样条曲线的分类

根据节点矢量中节点的分布情况不同,可以划分4中类型的B样条曲线。不同类型的B样条曲线区别主要在于节点矢量,对于具有n+1个控制顶点

1 B样条曲线

1.1 B样条曲线方程

B样条方法具有表示与设计自由型曲线曲面的强大功能,是形状数学描述的主流方法之一,另外B样条方法是目前工业产品几何定义国际标准——有理B样条方法 (NURBS)的基础。B样条方法兼备了Bezier方法的一切优点,包括几何不变性,仿射不变性等等,同时克服了Bezier方法中由于整体表示带来不 具有局部性质的缺点(移动一个控制顶点将会影响整个曲线)。B样条曲线方程可表示为

技术分享

其中,di(i=0,1...n)为控制顶点(坐标),Ni,k(i=0,1...n)k次规范B样条基函数,最高次数是k。基函数是由一个称为节点矢量的非递减参数u的序列Uu0u1≤...≤un+k+1所决定的k次分段多项式。

B样条的基函数通常采用Cox-deBoor递推公式:

技术分享    (2)

式中 i 为节点序号, k 是基函数的次数,共有n+1个控制顶点。注意区分节点和控制顶点,节点是在节点矢量U中取得,控制顶点则是坐标点,决定B样条的控制多边形Cox-deBoor递推公式是B样条曲线的定义的核心,该公式在程序中的实现可采用递归的方式:

##Cox-deBoor 公式

 

所给程序可用于计算基函数Ni,k(u)的值,程序中对不同类型的B样条曲线区别在于节点矢量 NodeVector 的取值不同。


 

1.2 B样条曲线的分类

根据节点矢量中节点的分布情况不同,可以划分4中类型的B样条曲线。不同类型的B样条曲线区别主要在于节点矢量,对于具有n+1个控制顶点技术分享 k B样条曲线,无论是哪种类型都具有n+k+2个节点技术分享

技术分享

均匀B样条曲线

节点矢量中节点为沿参数轴均匀或等距分布。

对应的节点矢量:技术分享

技术分享

技术分享

准均匀B样条曲线

其节点矢量中两端节点具有重复度k+1,即u0=u1=...=ukun+1=un+2=...=un+k+1,所有的内节点均匀分布,具有重复度1

对应的节点矢量:技术分享

技术分享

技术分享

分段Bezier曲线

其节点矢量中两端节点的重复度与类型2相同,为k+1。不同的是内节点重复度为k。该类型有限制条件,控制顶点数减1必须等于次数的正整数倍,即必须满足 技术分享 正整数。

对应的节点矢量:技术分享

技术分享

技术分享

一般非均匀B样条曲线

对任意分布的节点矢量技术分享,只要在数学上成立都可选取。

 

这里给出准均匀B样条和分段Bezier曲线的生成节点矢量的代码,均匀B样条的很简单就不列出了。假设共n+1个控制顶点,kB样条,输入参数为 n, k ,输出节点矢量到NodeVector中。

!!! 代码

1.3 B样条曲线的计算

根据B样条曲线的定义公式(1),曲线上任一点坐标值是参数变量u的函数,用矩阵形式表示

技术分享     (3)

可以看出只要已知控制顶点坐标技术分享、曲线的次数技术分享 以及基函数技术分享,就完全确定了B样条曲线,其中基函数技术分享Cox-deBoor 公式(2)递推计算。

2 B样条曲面

2.1 B样条曲面方程

确定一张技术分享次张量积B样条曲面需要三个信息:

ü  给定技术分享个控制顶点技术分享构成控制网格

ü  给定参数技术分享技术分享的次数技术分享技术分享

ü  u向和v向的节点矢量技术分享技术分享

技术分享

定义的技术分享次张量积B样条曲面其方程为:

技术分享

技术分享B样条基技术分享技术分享分别由节点矢量技术分享技术分享Cox-deBoor递推公式(2)计算。

B样条曲面按照沿参数方向u, v所取的节点矢量不同,也可以划分成不同的类型:均匀、准均匀、分片Bezier和非均匀B样条曲面。

2.2 B样条曲面的计算

给定曲面的控制顶点并确定次数后,还需要根据不同类型的B样条曲面沿参数方向的节点矢量才能完全定义一张B样条曲面。

要计算B样条曲面上的顶点坐标,首先沿一个参数方向如u向或v向,计算出该方向由控制顶点确定的B样条曲线,如下图中的红色曲线是沿u向生成的二次均匀B样条曲线,一共有四条。

技术分享

之后将沿u向计算得到的B样条曲线上的点作为新的控制顶点,得到张量网格沿v向计算,得到的曲线就是B样条曲面上的,下图中绿色线段组成的就是沿v向的控制的顶点,蓝颜色的曲线是沿v向的二次均匀B样条曲线构成了一张二次均匀B样条曲面。

技术分享技术分享技术分享

 

 

的 k 次B样条曲线,无论是哪种类型都具有n+k+2个节点技术分享

技术分享

均匀B样条曲线

节点矢量中节点为沿参数轴均匀或等距分布。

对应的节点矢量:技术分享

技术分享

技术分享

准均匀B样条曲线

其节点矢量中两端节点具有重复度k+1,即u0=u1=...=uk,un+1=un+2=...=un+k+1,所有的内节点均匀分布,具有重复度1。

对应的节点矢量:技术分享

技术分享

技术分享

分段Bezier曲线

其节点矢量中两端节点的重复度与类型2相同,为k+1。不同的是内节点重复度为k。该类型有限制条件,控制顶点数减1必须等于次数的正整数倍,即必须满足 技术分享 正整数。

对应的节点矢量:技术分享

技术分享

技术分享

一般非均匀B样条曲线

对任意分布的节点矢量技术分享,只要在数学上成立都可选取。

这里给出准均匀B样条和分段Bezier曲线的生成节点矢量的代码,均匀B样条的很简单就不列出了。假设共n+1个控制顶点,k次B样条,输入参数为 n, k ,输出节点矢量到NodeVector中。

!!! 代码

1.3 B样条曲线的计算

根据B样条曲线的定义公式(1),曲线上任一点坐标值是参数变量u的函数,用矩阵形式表示

技术分享 (3)

可以看出只要已知控制顶点坐标技术分享、曲线的次数技术分享 以及基函数技术分享,就完全确定了B样条曲线,其中基函数技术分享由Cox-deBoor 公式(2)递推计算。

2 B样条曲面

2.1 B样条曲面方程

确定一张技术分享次张量积B样条曲面需要三个信息:

ü 给定技术分享个控制顶点技术分享构成控制网格

ü 给定参数技术分享技术分享的次数技术分享技术分享

ü u向和v向的节点矢量技术分享技术分享

技术分享

定义的技术分享次张量积B样条曲面其方程为:

技术分享

技术分享,B样条基技术分享技术分享分别由节点矢量技术分享技术分享按Cox-deBoor递推公式(2)计算。

B样条曲面按照沿参数方向u, v所取的节点矢量不同,也可以划分成不同的类型:均匀、准均匀、分片Bezier和非均匀B样条曲面。

2.2 B样条曲面的计算

给定曲面的控制顶点并确定次数后,还需要根据不同类型的B样条曲面沿参数方向的节点矢量才能完全定义一张B样条曲面。

要计算B样条曲面上的顶点坐标,首先沿一个参数方向如u向或v向,计算出该方向由控制顶点确定的B样条曲线,如下图中的红色曲线是沿u向生成的二次均匀B样条曲线,一共有四条。

技术分享

之后将沿u向计算得到的B样条曲线上的点作为新的控制顶点,得到张量网格沿v向计算,得到的曲线就是B样条曲面上的,下图中绿色线段组成的就是沿v向的控制的顶点,蓝颜色的曲线是沿v向的二次均匀B样条曲线构成了一张二次均匀B样条曲面。

技术分享技术分享技术分享

B样条曲线曲面

标签:

原文地址:http://www.cnblogs.com/nobodyzhou/p/5451528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!