B样条曲线曲面的性质及其生成算法的研究

B样条曲线曲面的性质及其生成算法的研究
B样条曲线曲面的性质及其生成算法的研究

B样条曲线曲面的性质及其生成算法的研究

XXX

(XXX学院数学与信息科学学院05级信本(2)班)

摘要

从B样条曲线曲面的定义入手,阐述了B样条曲线曲面的性质,在生成算法中提出了一个扩展B样条曲线曲面的新方法.扩展B样条曲线曲面的关键是为新增加的点确定节点值.生成算法的基本思想是:首先,B样条曲线和扩展部分在连接点处满足2

GC连续,用能量极小化方法确定扩展部分的曲线形状,通过对曲线重新参数化使两部分曲线满足2

C连续,进而确定新增加点的节点值.文章还讨论了运用该方法进行B样条曲面扩展,且以实例对新方法与其它方法进行了比较.

关键词:B样条曲线; B样条曲面;参数化;曲线扩展

Research On The Nature Of B-spline Curves And Surfaces And

Their Generation Algorithm

Yongning Zhang

College of Mathematics and Information Science , Xianyang Normal University , Information

Class 05(2)

Abstract

First, the definitions of B-spline curves and surfaces are introduced, and then the nature of B-spline curves and surfaces are studied. On the final, a new generation algorithm on expansion of B-spline curves and surfaces is proposed. The key thought of expansion of B-spline curves and surfaces is to determine the value of the new points. The basic idea of generation algorithm is: First of all, B-spline curve and the extension of the connecting points in a row to meet with the energy minimization method to determine the extension of the curve shape of the curve through re-parameterized so that the two parts meet the continuous curve, and then determine the new value of the node points. The article also discussed the use of the method of B-spline surfaces expansion, and compared an example of the new method with other methods.

Keywords: B-spline curve; B-spline surfaces; parameter; curve extension

目录

引言........................................................... - 3 - 1.B样条曲线.................................................. - 3 -

1.1 B样条基函数的定义...................................... - 3 -

1.2 B样条曲线的定义........................................ - 3 -

1.3 B样条曲线的性质....................................... - 4 -

1.3.1 严格的凸包性...................................... - 4 -

1.3.2 分段参数多项式.................................... - 4 -

1.3.3 可微性或连续性.................................... - 4 -

1.3.4 几何不变性........................................ - 4 -

1.3.5 局部可调性........................................ - 4 -

1.3.6近似性............................................ - 5 -

1.3.7变差缩减性........................................ - 5 -

1.4 B样条曲线的分类....................................... - 5 -

1.4.1均匀B样条曲线.................................... - 5 -

1.4.2 非均匀B样条曲线.................................. - 6 -

1.5 B样条曲线的生成算法.................................... - 7 -

1.5.1B样条曲线的扩展................................... - 7 -

1.5.2 2

GC连续条件...................................... - 8 -

1.5.3确定 的值........................................ - 8 -

1.5.4确定节点u的值.................................... - 9 -

1.5.5求控制顶点........................................ - 9 -

2.1 B样条曲面的定义....................................... - 12 -

2.2 B样条曲面的性质...................................... - 12 -

2.3 B样条曲面的分类...................................... - 12 -

2.3.1 均匀B样条曲面................................... - 12 -

2.3.2 非均匀B样条曲面................................. - 13 -

2.4 B样条曲面的生成算法.................................. - 14 -

3.应用........................................................ - 15 - 4结论........................................................ - 16 - 谢辞.......................................................... - 17 - 参考文献...................................................... - 17 -

引言

B 样条曲线曲面以其直观性、连续性、局部可控性、使用方便、灵活等特点,在计算机图形学和CAD 中得到了广泛的应用,成为重要的曲线曲面描述工具. 在曲线曲面的设计中,经常需要对己有的B 样条曲线曲面进行扩展,并且要求扩展的曲线曲面满足一定的几何形状要求或者其它的工程要求.B 样条曲线曲面的扩展是在保持原有形状不变的情况下,使新的曲线曲面通过新给定的点.因此,B 样条曲线扩展问题,实际上是对给定B 样条曲线和扩展点的插值问题.目前曲线曲面插值有多种方法,一般通过反算控制顶点来实现.在一些CAD 系统中,B 样条曲线的扩展是通过增加一段Bezie:曲线,然后将扩展后的整个曲线转换为B 样条形式.

1.B 样条曲线

1.1 B 样条基函数的定义

给定参数u 轴上的一个分割1{}(),(0,1,2,)i i i U u u u i +=≤=…,m ,由下列递推关系定义的,()i p N u 称为U 的p 次(p+1阶)B 样条基函数。

1,01,()0,i i i u u u N u +≤≤?=??

其他 (1-1-1) 1,,11,1111

()()()i p i i p i p i p i i i p i u u u u N u N u N u u u u u ++-++++++--=+-- (1-1-2) 000

=规定 其中,p 表示B 样条的次数(即为p+1阶),i u 为节点,U 为节点矢量。

1.2 B 样条曲线的定义:

设01,,...,n p p p 为给定空间的n+1个控制顶点,01{,,...,}m U u u u =是m+1个节点矢量,称下列参数曲线

,0()()n

i i p i C u p N u ==∑ a u b ≤≤ (1-2-1)

为p 次的B 样条曲线,折线01,,...,n p p p 为B 样条曲线的控制多边形。

其中次数p,控制顶点个数n+1,节点个数m+1具有如下关系:

m=n+p+1

图1 B 样条曲线 1.3 B 样条曲线的性质:

1.3.1 严格的凸包性

曲线严格位于控制多边形的突包内,如果1[,),1,i i u u u p i m p +∈≤<--C(u)位于控制

顶点1,...,i i p p -所建立的凸包内。

图2 B 样条曲线的凸包性:

1.3.2 分段参数多项式

C(u)在每个区间1[,)i i u u u +∈上都是次数不高于p 的多项式。

1.3.3 可微性或连续性

C(u)在每一曲线段内部是无限可微的,在定义域内重复度为k 的节点处,则使p-k 次可微或具有p-k 阶参数连续性。

1.3.4 几何不变性

B 样条曲线的形状和位置与坐标系的选取无关。

1.3.5 局部可调性

因为,()i p N u 只在区间1[,)i i p u u ++中为正,在其他地方均取0值,使得p 次的B 样条曲线在修改时只被相邻的p+1个顶点控制,而与其他顶点无关,当移动其中的一个顶点i p 时,

只影响到定义在区间1[,)i i p u u ++上那部分曲线,并不对整条曲线产生影响。

1.3.6近似性

控制多边形是B 样条曲线的线性近似,若进行节点插入或升阶,会更加近似,次数越低,B 样条曲线越逼近控制顶点。

1.3.7变差缩减性

设为01,,...,n p p p 为B 样条曲线的控制多边形,某平面与B 样条曲线的交点个数不多

于该平面与其控制多边形的交点个数。

图3 B 样条曲线的变差缩减性

1.4 B 样条曲线的分类

1.4.1均匀B 样条曲线

节点矢量中节点为沿参数轴均匀等距分布,所有节点区间长度1i i i u u +?=-为大于0的常数,可将定义在每个节点区间1[,)i i u u +上用整体参数u 表示的B 样条基函数变换成用局部参数[0,1)t ∈表示,只需做如下的参数变换:

1()(1)i i u u t t u tu +==-+ [0,1]t ∈,,1,...,i p p n =+ (1-4-1)

则B 样条曲线可改写为矩阵形式:

,()(())(())i

i i j p j i k C t C u t PN u t =-==

∑,[0,1]t ∈,,1,...,i p p n =+ (1-4-2)

将上式改写为矩阵形式:

12()[1...],i p i p p i p i P P C t t t t M P --+??????=??????

[0,1]t ∈,,1,...,i p p n =+ (1-4-3)

其中1-3次系数矩阵(1,2,3)p M p =分别为:

11011M ??

=??-??

, (1-4-4) 2110220121M ????=-????-??

, (1-4-5)

3141030303630133

1M ????-??=??-??--??

(1-4-6) 则可以很容易地写出三次均匀B 样条曲线的方程: 322

331141030301()[1]363061331i i i i P P C t t t t P P ---????????-????=????-????--????

(1-4-7)

1.4.2 非均匀B 样条曲线:

非均匀B 样条函数的节点参数沿参数轴的分布是不均匀的,因而不同节点矢量形成的B 样条函数个不相同,在CAD/CAM 软件中,对于开曲线,包括首末端点位置连续的闭曲线,都建议两端点取重复度p+1,以使具有同次Bezier 曲线的端点几何性质,便于人们对曲线端点的行为进行控制,且通常将曲线的定义域取成规范参数域,即1[,][0,1]p n u u u +∈=,于是有

011210,0p n n n p u u u u u u ++++======== . (1-4-8)

在这种情况下,设01,,...,,n p p p 为给定空间的n+1个点,则非均匀B 样条曲线可重新描述为 ,0()()n i i p i C u PN u ==∑, a

u b ≤≤ (1-4-9)

基函数定义在非均匀节点矢量:

1111,,,,,,,,p m p p p U a a u u b b +--++????=??????

(1-4-10) 其中a,b 分别是具有p+1重的节点。

1.5 B 样条曲线的生成算法:

1.5.1 B 样条曲线的扩展

B 样条曲线扩展就是在保持原曲线形状不变的情况下,扩展该曲线使其通过给定的数据点.对于给定的一个新的扩展点1+n P ,首先应确定该点的节点值u ,当u 的值确定之后,扩展后的B 样条曲线的形状也就完全确定了.因此,扩展B 样条曲线的关键是选取节点u.确定u 值的方法有很多,文献[5]中采用累加弦长参数化法.本文通过极小化目标函数确定曲线的形状,进而确定u 的值.首先取u 值为2,根据2G

C 连续条件得到扩展后的曲线)(_t P .由于2GC 连续的曲线重新参数化后可成为2C 连续的曲线,所以,根据)(_

t P 在t= 1处满足2C 连续重新确定参数u 的值.

在计算出u 值后,)(_t P 的节点矢量从)(21T T 变为3T

13,,,1,,,,0,,0,0:-i n i i u u t t T (1-5-1) 然后需要求出扩展后的曲线)(_t P 的控制顶点_

,i P i=0,1,2,…,n,n+1.扩展后曲线的控制点的计算在第4节给出,则扩展后的曲线可表示为 ∑+==10

__,_)()(n j i

k i P t B t P , u t ≤≤0 (1-5-2) 其中)(_,t B k i 为定义在节点向量3T 上的基函数.

1.5.2 2GC 连续条件

假定待扩展的目标点为1n P +,此时1n P +对应的参数暂定为u=2.我们用三次参数曲线

()(12)Q t t ≤≤来构造曲线的扩展部分. ()Q t 和B 样条曲线P(t)在n P 处达到2GC 连续的充要条件是存在常数α和β使:

??

???+===)1()1()0()1()0()1()0('"2"''P P Q P Q P Q βαα (1-5-3) 为了使()Q t 经重新参数化后仍为三次曲线,并且和P(t)在拼合处满足2C 连续,取0β=。因此,满足式(1-5-3)定义在[0,1]区间上的三次参数曲线Q(t)可写成如下形式: 13"22'10)()1()()1()()1()()(++++=n P t P t P t P t t Q ?α?α?? (1-5-4)

其中,

,1)(30+-=t t ? ,)(31t t t +-=?

,2/)()(232t t t +-=? 33)(t t =?.

式(1-5-4)中的α是待定参数。

1.5.3确定α的值

在2

GC 连续条件中,还有一个自由度α尚待决定.当u=2时,一种简单的方法是采用α= 1,但这种办法只适用于均匀型值点间隔1i i i l P P -=,1,2,,i n = 的场合,当间隔i l 极不均匀时,扩展曲线上就会出现很不理想的效果,即对应于i l 较大的一段曲线会比较扁平且

靠近弦线,对应于l 较短的一段曲线可能出现两个拐点或奇点.本文采用能量极小化的方法确定的α值.

曲线可用来描述一条粗细均匀的弹性梁的变形,根据光顺准则,变分问题是使得这一弹性梁的应变能量为最小,这可表示为

])()(min['2dt t P t K ? (1-5-5)

其中,()K t 为曲线()P t 的曲率函数.

一阶导数通常用来估计该插值曲线的应变能及光滑性,较小的应变能通常意味着较好

的光滑性.在小挠度的情况下,式(1-5-5)常用下式来近似表示

])(m i n [2

"dt t P ? (1-5-6) 所以式(1-5-4)对应的优化目标函数为 .)(01)(2"dt t Q G ?=α (1-5-7)

即α为下列方程的解 0)(=??α

αG (1-5-8) 1.5.4确定节点u 的值

由式(1-5-8)计算得α的值,节点向量3T 中的u 重新设置为u=1+ a,这样,相应的式(1-5-4)在[0, α]区间上重新定义如下 13"22'10][)1(][)1(][)1(][)(++++=n P t

P t P t P t

t Q α

?αα?αα?α?. (1-5-9) 容易验证()Q t 有如下端点性质:

),

1()0(),1()0(),

1()0(""''P Q P Q P Q === (1-5-10) 即经重新参数化后,()Q t 和原B 样条曲线()P t 在拼合处满足2C 连续.

1.5.5求控制顶点

当扩展一个点时,对于k 阶B 样条曲线的收缩型节点矢量,我们可采用算法1来计算新控制点]

5[1

P . 算法1 (节点打开)

.,,4,3,)1(0n k n k n i P P i i +-+-== (1-5-11)

????

?????--=-=+-=--=-+-+-==+++---i r i i n t i t i t i t i t i t t t t k r n k n i P P P r n k n k n i P P 11111;3,,2,1.,,1,)1(.,,4,3,)2(ααα (1-5-12) ???+-=+-==-n k n i P k n i P P k i

i i ,,3,2,,2,1,0,)3(3 (1-5-13) 另外,我们可以用下面的算法2来求控制点.由于扩展需保持原曲线形状不变,对于k 阶B 样条,可列出k- 2个线性方程的方程组来求解原曲线最后k- 2个变化了的控制点i P , i= n-k+ 3, n- k+4,…,n.

算法2 (解方程组) 设i P 和i t 分别表示扩展后的控制点和节点向量,i P 和i t 分别表示扩展前的控制点和节点

向量.由于扩展后的曲线()P t 和P(t)在t= i t ( i= n- k+ 3, n- k+ 4,…,t)处具有相同

的值,所以得到如下方程组

????

?????+++=+++=+++=+++=++-++-+-++---+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-n n k n k n n k k n k n n k k n n n n k n k n n k k n k n n k k n n k n k n k k n k n k n k k n k n k n k k n k n k n k n k k n k n k n k k n k n k n k k n k n P t B P t B P t B P P t B P t B P t B t P P t B P t B P t B t P P t B P t B P t B t P )()()()()()()()()()()()()()()(1,31,321,21,12,21,134,324,2524,52423,213,1423,43 (1-5-14) 易知11++=n n P P ,并且有

).

()(),

()(),

()(3,23,23,323,323,423,42+-+-+-+-+-+-+-+-+-+-+-+-===k n k k n k n k k n k n k k n k n k k n k n k k n k n k k n t B t B t B t B t B t B

(1-5-15) 所以22n n P P --=.由于式(1-5-14)是一个显式方程,控制顶点i P (i= n-k+ 3, n- k+4,…,n.)

很容易求得.

以4阶为例,最后4个控制顶点为22n n P P --=, 11n n P P ++=, n P 和1n P -满足

214,214,114,12

4,234,314,1)()()()()()()(-+-+-+--------=+--=n n n n n n n n n n n n n n n n n n n n P t B P P t B P t B P t B P t B t P P t B (1-5-16)

对曲线扩展多点问题,我们将对B 样条曲线扩展两点的问题进行讨论,多于两点的情况与此类似.假定待扩展的两点为1n P +和2n P +.对扩展点1n P +,记与式(1-5-4)相应的扩展曲线

为1()n Q t +,用以上方法把原曲线扩展到1n P +,得到与1n P +相应的节点值11n a ++.对扩展点1n P +,记与式(1-5-4)相应的扩展曲线为2()n Q t +,由1()n Q t +和2()n Q t +在拼合处满足2GC 连续,并通过极小化目标函数2()n Q t +的平方的积分确定与2n P +相应的节点值121n n u a a ++=++.则扩展后的曲线()P t 的节点向量为

k n n k k k u u t t t ,,,1,,,,,0,,0,011+++α (1-5-17)

对扩展两点1n P +和2n P +的情况,扩展后曲线新的控制顶点

(3,4,,1)i P i n k n k n =-+-++ 很容易求得.事实上,方程(1-5-14)再增加一个方程就得到了求(3,4,,1)i P i n k n k n =-+-++ 的方程,其求解方程组如下

????

?????+++=+++=+++=+++=++++-++-+-++-+++-++-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-12,142,432,311,31,321,234,324,2524,52423,213,1423,43)()()()()()()()()()()()()()(n n k n k n n k k n k n n k k n n n n k n k n n k k n k n n k k n n k n k n k k n k n k n k k n k n k n k k n k n k n k n k k n k n k n k k n k n k n k k n k n P t B P t B P t B P P t B P t B P t B P P t B P t B P t B t P P t B P t B P t B t P (1-5-18) 同样以4阶为例,所求的3个控制顶点1n P -, n P 和1n P +为下列方程的解 1124,124,12,12

14,214,114,12

4,234,314,1)()()()()()()()()()(+++++-+--+-+-+-------=++-=+--=n n n n n n n n n k n n n n n n n n n n n n n n n n n n n n n P P t B P t B P t B P t B P P t B P t B P t B P t B t P P t B (1-5-19)

对于扩展多点来说,用算法1求解控制顶点时,存在重复计算问题.因为每扩展一点,需将原曲线节点矢量打开,计算最后k- 2个控制点,对扩展后的曲线再进行扩展时,则将有k- 3个控制点需要重新计算.若要对k 阶B 样条曲线扩展m 个点,则有(k 一3) x ( m-

1)个控制点需要重复计算.相比算法1而言,算法2直观且容易理解,不存在重复计算问题,计算一次就可将扩展后所有的控制点算出.

2.B 样条曲面

2.1 B 样条曲面的定义:

给定(1)(1)n m +?+控制顶点,P (0,1,;0,1,,)i j i n j m == 的阵列,构成一张控制网格,分别给定参数u,v 的次数p,q,两个节点矢量

011011[,,,],[,,,]n p n p U u u u V v v v ++++== ,就可以定义一张p q ?次张量积B 样条曲面,其方程为

,,,00

(,)()()n m

i p j q i j i j S u v N u N v P ===∑∑

(2-1-1)

图4 B 样条曲面

2.2 B 样条曲面的性质:

除变差递减性质外,B 样条曲线的其他性质都可以推广到B 样条曲面。

2.3 B 样条曲面的分类:

2.3.1 均匀B 样条曲面

Eg: 均匀双三次B 样条曲面如下:

(,)T T

B B P u v UM PM V = (2-3-1) 133136301303061410B M -??

??

-??=??-????

(2-3-2)

0,00,10,20,31,01,11,21,32,02,12,22,33,0

3,13,23,3p p p p p p p p P p p p p p p p p ??????=?????? (2-3-3) 其中, 23[1]U u u u =, 23[1]V v v v =

2.3.2 非均匀B 样条曲面

??

????????=+--++ 11111,,1,,,,,00,U p p r p p u u , (2-3-4) 11110,,0,,,,1,,1q s q q q V v u +--++????=??????

, (2-3-5)

其中U 有r+1个节点,V 有s+1个节点,并且具有如下的关系式:

1r n p =++; 1s m q =++ (2-3-6)

非均匀B 样条曲面具有如下性质:

2.3.2.1非负性

0(v)N (u)N q j,p i,≥ (2-3-7)

2.3.2.2规范性

∑∑===n 0i m 0j q j,p i,1(v)N (u)N

, ]1,0[,∈v u (2-3-8)

2.3.2.3一般性

若n=p,m=q,U={0,…0,1,…1}, V={0,…0,1,…1},

(v)B (u)B (v)N (u)N m j,n i,q j,p i,=, B 样条函数的张量积即为Bernstein 多项式的张量积,B 样条曲线退化为Bezier 曲面。

2.3.2.4 局部性

若]v ,[v ]u ,[u v)(u,1q j j 1p i i ++++?∈ ,(v)N (u)N q j,p i,=0,j i,P 移动仅仅影响矩阵区域

]v ,[v ]u ,[u 1q j j 1p i i ++++?的形状。

2.3.2.5 端点性质

曲面插值于控制顶点的4个角点:

m n,n,0m 0,0,0P )1,1(,P )0,1(,P )1,0(,P S (0,0)====S S S (2-3-9)

2.3.2.6 (仿射)几何不变性

曲面的形状仅与控制顶点的位置有关,与坐标系的选取无关;

2.3.2.7 凸包性

曲面一定位于控制顶点所构造的凸包性

2.3.2.8 逼近性

若将控制顶点三角化,则所构成的网络是去面片的分段平面近似。

2.3.2.9 连续和可微性

S (u,v )在u(或v)方向上具有p-k(或q-k)次微分(可导),其中k 是节点重复

度。

2.4 B 样条曲面的生成算法:

k l ?阶B 样条曲面P(t,s)定义为

1

11100,)

()(),(+-+-==≤≤≤≤=∑∑t t n k n i m j jt ik ij s s s t t t s N t N P s t P (2-4-1)

其中(0,0)ij P i n j m ≤≤≤≤为控制顶点,,()i k B t 和,()j t B s 分别为k 阶和l 阶B 样条基函数。节点向量为14T T 和。

t t sm st T 1,,1,,,,0,,0,0:4 (2-4-2)

设在t 方向上扩展曲面P(t,s)到m+1目标点1,n j P +,j=0,1,…,m. 设P(t,s)中沿t 方向的m+1

条B 样条曲线为

∑===n i ik ij

j m j t N P t P 0.,,1,0),()( (2-4-3)

可通过以下两种方法计算u 的值.第1种方法:设与()j P t 相应的第j 条扩展曲线为()j Q t ,与()j Q t 相应的a 为j a , j a 由式(8)确定,则与目标点1,n j P +( j=0,1,…,m)相应的节

点值为所有α( j=0,1,…,m) 的加权平均,即

∑=++=m

j j m u 0111α (2-4-4)

第2种方法:假定m+ 1条扩展曲线()j Q t ( j=0,1,…,m)对应相同的α,则α的值可通过极小化下面的目标函数式得到.

∑?==m j j dt t Q G 02

"

.)(01)(α (2-4-5)

3.应用

本节我们以4阶B 样条为例,用4组数据对累加弦长参数化法及本文方法产生的新扩展曲线段进行了比较. 图5是对B 样条曲线扩展一个点,图6是扩展两个点.实验中我们比较了两种方法所得曲线的能量和绝对旋转指标.旋转数是微分几何中讨论曲线整体形状性质的一个工具,它刻画了曲线的切矢或法矢沿曲线运动时的旋转情况

.

(a )第1组数据扩展前曲线 (b)累加弦长参数化法扩展 (c)本文方法扩展

图5扩展一个点

(a)第2组数据扩展前曲线 (b)累加弦长参数化法扩展

(c)本文方法扩展

图6扩展两个点

定义1.对一条平面曲线P(t),,10≤≤t 记K(t)为其曲率,则其绝对旋转指标A Rot 为

dt t P t K ARot )()(0

121'?=π (3-1-1) 对于累加弦长参数化法,其u 值由下式计算得出

∑+-=-++--+=1

01)

()(1k n t t k t k n t P t P R P u (3-1-2) 表1计算结果比较

从计算结果(见表1)知,采用本文方法所得B 样条曲线与累加弦长参数化法相比,曲线的能量大大降低了,并具有较小的旋转数指标.从图5和图6可看出2GC 连续曲线的光顺性得到了明显改善,曲率变化更平坦,几何形状更自然. 图7为采用本文两种方法对4x4阶B 样条曲面进行扩展,图中最下方两条曲线为待扩展的目标曲线.

a)本文第1种方法曲面扩展 (b)本文第2种方法曲面扩展

图7本文的两种扩展方法

4结论

本文全面系统地介绍了B 样条曲线曲面的定义、性质,重点介绍了保持2C 连续条件下的扩展问题.扩展B 样条曲线的关键是选取节点值.本文通过能量极小化使B 样条曲线和

扩展曲线在连接处满足2

GC,从而使曲线的扩展部分具有较好的形状.通过重新设置节点向量使曲线达到2

C连续.新B样条曲线的控制点可通过一个显式递推公式计算.实例计算表明,新方法所确定的节点值可得到能量低和自然形状好的扩展曲线.

谢辞

首先要特别感谢我的指导老师——杨雪梅教授,在她的帮助下我完成了这篇论文,是她告诉我如何快捷地收集相关论文资料并运用它,本论文的完成离不开她的细心指导和孜孜不倦的教诲,特别是她的工作热忱与责任心使我受益终生.其次要感谢那些与我朝夕相处的同学,在这些日子里,他们和我一块奋斗,相互鼓励,相互帮助,为我的论文的胜利完成起到了很大的推动作用.

参考文献

[1] 潘云鹤董金祥陈德人,计算机图形学——原理、方法及应用[M],第2版,北京:

高等教育出版社,2003,201—211.

[2] 张彩明, 计算机图形学简明教程[M],北京:高等教育出版社,2006,89-96

[3] 倪明田, 吴良芝, 计算机图形学, 北京:北京大学出版社 2002,153-172

[4] 朱心雄, 自由曲线曲面造型技术[M],北京:科学出版社 2000,117-125

[5] 徐萃薇, 计算方法引论[M] ,北京:高等教育出版社,2003,55-63.

[6]Hu Shi-Min, Tai Chiew-Lan, Zhang Song-Hai. An extension algorithm for B-splines bycurve

unclamping[J]. Computer Aided Design, 2002,34(5): 415-419

[7] Zhang C., Cheng F., Miura K.T.. A method for determining knots in parametric curve

interpolation[J]. Computer Aided Geo-metric Design, 1998, 15(4): 399-417

[8] Juhász I., Hoffmann M.. The effect of knot modifications on the shape of B-spline urves[J].

Journal for Geometry and Graph-ics, 2001, 5(2): 111-119

第七章 曲线与曲面积分导学答案12-16(第一、二类曲面积分)

第七章 曲线与曲面积分 7.2.5第一类曲面积分 7.2.6 第二类曲面积分(导学解答) 一、相关知识 1.物质曲面的质量问题? 答:设∑为面密度非均匀的物质曲面, 其面密度为ρ(x , y , z ), 求其质量,把曲面分成n 个小块: ?S 1, ?S 2 , ? ? ?, ?S n (?S i 也代表曲面的面积);求质量的近似值: i i i i n i S ?=∑),,(1 ζηξρ((ξi , ηi , ζi ) 是?S i 上任意一点); 取极限求精确值: i i i i n i S M ?==→∑),,(lim 1 0ζηξρλ(λ为各小块曲面直径的最 大值). 2.空间曲面在坐标面上的有向投影? 答:空间面积为S ?的有向平面在坐标面上的投影 将有向平面S ?投影到xoy 坐标面,所得投影记为xy S )(?,投影区域的面积记为()xy σ?;设平面S ?的法向量n 与z 轴正向的夹角为γ,则 ()xy S ?()c o s 0 0c o s 0 () c o s 0 xy xy σγγσγ??>? =≡? ?-?γ(上侧), 则xy xy S )()(σ?=?;如果 πγπ ≤<2 ,0cos <γ(下侧),则xy xy S )()(σ?-=?;如果 2 π γ= ,0cos =γ,则0cos )(=?=?S S xy γ。 同理可以定义S ?在yoz 、zox 坐标面上的投影为()yz S ?及()zx S ?为: ()cos 0()0 cos 0() cos 0yz yz yz S σαασα??>? ?=≡??-??? ?=≡? ?-?

B样条和贝塞尔曲线曲面的拼接

实验二曲线曲面的拼接贝塞尔曲线的拼接 P=[-1 2 3.5 4 4.5 6 7;7 5 6 6.5 7 3 9;2 6 4 4.5 5 11 9]; plot3(P(1,1:4),P(2,1:4),P(3,1:4),'o') hold on plot3(P(1,4:7),P(2,4:7),P(3,4:7),'+'); hold on B=[-1 3 -3 1;3 -6 3 0;-3 3 0 0;1 0 0 0]; for t=0:0.05:1 T=[t^3 t^2 t 1]; P1=T*B*P(1,1:4)'; P2=T*B*P(2,1:4)'; P3=T*B*P(3,1:4)'; plot3(P1,P2,P3,'r.') hold on Q1=T*B*P(1,4:7)'; Q2=T*B*P(2,4:7)'; Q3=T*B*P(3,4:7)'; plot3(Q1,Q2,Q3,'b*') end title('贝塞尔曲线的拼接'); xlabel('x');ylabel('y');zlabel('z');

B样条曲线的拼接 P=[1 2 3 4 5;1.5 7 6 6.5 7;3 1.5 3.5 5.5 4.5]; plot3(P(1,1:4),P(2,1:4),P(3,1:4),'o') hold on plot3(P(1,2:5),P(2,2:5),P(3,2:5),'+') hold on B=[-1 3 -3 1;3 -6 3 0;-3 0 3 0;1 4 1 0]; for t=0:0.05:1 T=[t^3 t^2 t 1]; P1=1/6*T*B*P(1,1:4)'; P2=1/6*T*B*P(2,1:4)'; P3=1/6*T*B*P(3,1:4)'; plot3(P1,P2,P3,'r.') hold on Q1=1/6*T*B*P(1,2:5)'; Q2=1/6*T*B*P(2,2:5)'; Q3=1/6*T*B*P(3,2:5)'; plot3(Q1,Q2,Q3,'b*'); end title('B样条曲线的拼接'); xlabel('x');ylabel('y');zlabel('z');

B样条曲线曲面和NURBS曲线曲面C语言算法源程序

学习小结:前面学习了Bezier 曲线,B 样条基函数和B 样条曲线的一些基础知识。掌握关键问题是一条B 样条曲线间的多段曲线的光滑连接。因为现在是用多段Bezier 曲线来描绘一条B 样条曲线,所以问题变为两段Bezier 曲线间光滑连接。两段Bezier 曲线段(3次)B1和B2光滑连接的条件: (1).要求B1和B2有共同的连接点,即G 0 连续。 (2).要求B1和B2在连接点处有成比例的一阶导数,即G 1 连续。由端点处的一阶导数 )(3)0(2),(3)1(10123Q Q B P P B -='-=',为实现G 1连续,则有: )1(1)0(2B B '=' 即:2301P P Q Q -=- 这也表明,1032),(,Q Q P P 三点共线。如下图表示了一条3次B 样条曲线的所有控制多边形: 1 ) P 2 P 3 P 4 (P 11 12 ) P 5 P 10 0 P 6 P 9 7 P 8 图5.3次B 样条曲线和所有控制多边形 图5中,P0至P6为原始3次B 样条曲线控制多边形顶点,P 0至P 12 是计算后最终形成B 样条曲线控制多边形顶点。 图6.双二次(2x2)B 样条曲面 6.B 样条曲线曲面和NURBS 曲线曲面的C 语言实现算法源程序 #ifndef _mynurbs_h #ifndef _MYNURBS_H

#include "gl\gl.h" #include "math.h" //*-*-*-*-*-*-*-*-*-*-*-*-*-*-* B样条基函数计算部分 *-*-*-*-*-*-*-*-*-*-*-*-*-* //确定参数u所在的节点区间下标 //n=m-p-1 //m为节点矢量U[]的最大下标 //p为B样条函数次数 int FindSource(int n,int p,float u,float U[]) { int low,high,mid; if(u==U[n+1])//特殊情况 return n; //进行二分搜索 low=p; high=n+1; mid=(int)(low+high)/2; while(uU[mid]) { if(u=U[mid]&&u=i-k;di--) { if(u>=U[di]&&u

贝塞尔曲线和B样条曲线(优质参考)

§4.3 贝塞尔曲线和B 样条曲线 在前面讨论的抛物样条和三次参数样条曲线,他们的共同特点是:生成的曲线通过所有给定的型值点。我们称之为“点点通过”。但在实际工作中,往往给出的型值点并不是十分精确,有的点仅仅是出于外观上的考虑。在这样的前提下,用精确的插值方法去一点点地插值运算就很不合算;另外,局部修改某些型值点,希望涉及到曲线的范围越小越好,这也是评价一种拟合方法好坏的指标之一。 针对以上要求,法国人Bezier 提出了一种参数曲线表示方法,称之为贝塞尔曲线。后来又经Gorgon, Riesenfeld 和Forrest 等人加以发展成为B 样条曲线。 一、 贝塞尔曲线 贝塞尔曲线是通过一组多边折线的各顶点来定义。在各顶点中,曲线经过第一点和最后一点,其余各点则定义曲线的导数、阶次和形状。第一条和最后一条则表示曲线起点和终点的切线方向。 1.数学表达式 n+1个顶点定义一个n 次贝塞尔曲线,其表达式为: )()(0,t B p t p n i n i i ∑== 10≤≤t ),...,2,1,0(n i p i =为各顶点的位置向量,)(,t B n i 为伯恩斯坦基函数 i n i n i t t n i n t B ---= )1()! 1(!! )(, 2.二次贝塞尔曲线 需要3个顶点,即210,,p p p ,将其代入曲线表达式: 2,222,112,00)(B p B p B p t p ++=

220202,021)1() 1()! 02(!0! 2t t t t t B +-=-=--= - 21212,122)1(2)1()! 12(!1! 2t t t t t t B -=-=--= - 22222,2)1()! 22(!2! 2t t t B =--= - 221202)22()21()(p t p t t p t t t p +-++-= [ ] ?? ?? ? ???????????????--=2102 0010221211p p p t t 10≤≤t 2102)21(2)1(2)(tp p t p t t p +-+-=' )(222)0(0110p p p p p -=+-=' 0)0(p p = )(222)1(1221p p p p p -=+-=' 2)1(p p = 当2 1 = t 时: 21021041214141)412212()412121(21p p p p p p p ++=+?-?++?-=?? ? ?? )](2 1 [21201p p p ++= 02210212)2121(2)121(221p p p p p p -=?+?-+-=?? ? ??'

B样条曲线与曲面

四、B 样条曲线与曲面 Bezier 曲线具有很多优越性,但有二点不足: 1)特征多边形顶点数决定了它的阶次数,当n 较大时,不仅计算量增大,稳定性降低,且控制顶点对曲线的形状控制减弱; 2)不具有局部性,即修改一控制点对曲线产生全局性影响。 1972年Gordon 等用B 样条基代替Bernstein 基函数,从而改进上述缺点。 B样条曲线的数学表达式为: ∑=+?= n k n k k i n i u N P u P 0 ,,) ()( 在上式中,0 ≤ u ≤ 1; i= 0, 1, 2, …, m 所以可以看出:B样条曲线是分段定义的。如果给定 m+n+1 个顶点 Pi ( i=0, 1, 2,…, m+n),则可定义 m+1 段 n 次的参数曲线。 在以上表达式中: N k,n (u) 为 n 次B 样条基函数,也称B样条分段混合函数。其表达式为: ∑ -=+--+??-=k n j n j n j n k j k n u C n u N 0 1,)()1(!1)( 式中:0 ≤ u ≤1 k = 0, 1, 2, …, n 1.均匀B 样条曲线 1 一次均匀B 样条曲线的矩阵表示 空间n+1个顶点 i P (i = 0,1,…,n )定义n 段一次(k =0,1,n=1)均匀B 样条曲线,即每 相邻两个点可构造一曲线段P i (u ),其定义表达为: []10 ;,...,1 0111 1)(1≤≤=??? ?????????-=-u n i u u P i i i P P =(1-u )P i -1 + u P i = N 0,1(u )P i -1 + N 1,1(u )P i 第i 段曲线端点位置矢量:i i i i P P P P ==-)1(,)0(1,且一次均匀B 样条曲线就是控制多边 形。

B样条曲线曲面的性质及其生成算法的研究

B样条曲线曲面的性质及其生成算法的研究 XXX (XXX学院数学与信息科学学院05级信本(2)班) 摘要 从B样条曲线曲面的定义入手,阐述了B样条曲线曲面的性质,在生成算法中提出了一个扩展B样条曲线曲面的新方法.扩展B样条曲线曲面的关键是为新增加的点确定节点值.生成算法的基本思想是:首先,B样条曲线和扩展部分在连接点处满足2 GC连续,用能量极小化方法确定扩展部分的曲线形状,通过对曲线重新参数化使两部分曲线满足2 C连续,进而确定新增加点的节点值.文章还讨论了运用该方法进行B样条曲面扩展,且以实例对新方法与其它方法进行了比较. 关键词:B样条曲线; B样条曲面;参数化;曲线扩展 Research On The Nature Of B-spline Curves And Surfaces And Their Generation Algorithm Yongning Zhang College of Mathematics and Information Science , Xianyang Normal University , Information Class 05(2) Abstract First, the definitions of B-spline curves and surfaces are introduced, and then the nature of B-spline curves and surfaces are studied. On the final, a new generation algorithm on expansion of B-spline curves and surfaces is proposed. The key thought of expansion of B-spline curves and surfaces is to determine the value of the new points. The basic idea of generation algorithm is: First of all, B-spline curve and the extension of the connecting points in a row to meet with the energy minimization method to determine the extension of the curve shape of the curve through re-parameterized so that the two parts meet the continuous curve, and then determine the new value of the node points. The article also discussed the use of the method of B-spline surfaces expansion, and compared an example of the new method with other methods. Keywords: B-spline curve; B-spline surfaces; parameter; curve extension

b样条曲面

B样条曲面的算法生成及研究 本文由天空乐园大学生旅游网整理分享 摘要 本文主要介绍B样条曲面的性质、算法、以及应用,让我们对B样条曲面有一个全面的了解。B样条曲面不仅在保留了Bézier曲面的优点的同时克服了由于整体表示带来的不具有局部性质的特点,而且成功地解决了样条函数的局部控制问题,轻而易举地在参数连续性上解决了贝奇尔方法的连接问题,是最广泛流行的形状数学描述的主流方法之一。B样条曲面中均匀双三次B样条曲面又是各种B 样条曲面中应用最多的一种之一,它避免了B 样条递推定义的繁琐算法,只要给出的空间型值点大致均匀,即可生成空间任何形状的曲面。而非均匀有理B样条曲面( NU RBS ) 是曲面构造的常用工具, 是目前工业界曲面曲线表示的数学标准。B-样条曲面是一种特殊NU RBS , 在实际应用中是首选形式。在本文中我们主要介绍了均匀双三次B样条曲面。 关键词:B样条曲面非均匀B样条曲面双三次均匀B样条曲面 B样条基函数 1 引言 计算机运用技术的不断发展使得CAD/CAM技术日益提高和完善,为实现工业生产过程自动化展示了光明的前景。目前,利用程序系统对某一产品实现机辅设计和数控加工的自动化过程已经开始。然而在实际生产中,数控机床的使用还很不普遍,大部分数控机床仍靠手工编程来实现单一加工。这除了数控设备价格昂贵之外,控制程序系统的设计难度较大也是重要原因之一。譬如,对数控铣削加工控制程序系统的设计,尤其是在数控铣床上加工任意形状曲面的程序系统设计, 目前还处于探讨摸索之中。随着汽车、船舶、航空工业的发展,对于工业产品的形状描述也就提出了越来越高的要求。工业产品的形状大致可以分为两类:一类是仅有初等解析曲面,例如平面、圆柱面、圆锥面、球面以及它们组合而成的规则曲面;另一类是不能由任何解析表达的自由型曲面。汽车、船舶、飞机的外部零件基本上都是自由曲面。而自由曲面不能由画法几何与机械制图表达清楚,成为摆在工程师面前首要解决的问题。De Boor(德布尔)与1971年给出了关于B 样条的一套标准算法。美国通用公司的戈登和里森费尔德于1974年将B样条理论应用于形状描述,提出了B样条曲线曲面。它将成功地解决了样条函数的局部控制问题,又轻而易举地在参数连续性上解决了贝奇尔方法的连接问题,是最广泛流行的形状数学描述的主流方法之一。该算法能显著提高效率。现在提出了B 样条曲面等测投影的建立方法,讨论用高性能的动态数组和Excel 软件存储任意数量控制点的实现方法等关键技术。采用Visual C++6.0 为编程工具开发软件系统,实现了任意数量控制点的双三次B 样条曲面生成。B 样条曲面在保留了Bezier 曲面的优点的同时,又克服了由于整体表示带来的不具有局部性质的特点,是目前工程中应用最多的一种曲面,有人甚至称之为“统一当代的B 样条曲面”。而均匀双三次B 样条曲面又是各种B 样条曲面中应用最多的一种之一,它避免了B 样条递推定义的繁琐算法,只要给出的空间型值点大致均匀,即可生成空间任何形状的曲面。随着B 样条方法,NURBS,的产生和发展,曲面的样条表示形式逐渐被引入到曲面设计中,较早的有Bloor 等使用B 样条作为双调和方程的解. 后来, Terzopoulos 等[提出了一种动态NURBS方法,其用一个二阶微分方 程来决定DNURBS 的演化,但该方程不是几何内蕴的,且无法获得NURBS片的 G1光滑拼接.最近,徐国良[12 ] 提出一种新的方法,通过整合B样条曲面和一般形

CATIAV5-6R2013中文版曲面设计教程第七章曲线曲面分析

第7章 曲线曲面分析 本章导读: 完成曲面模型之后,进行曲线曲面的分析,便于查找设计中的矛盾和不符合要求的地方。曲线曲面分析包括曲线连续性和曲率分析、距离、截面曲率、反射、曲率、拐点曲线、高亮、环境和斑马线分析这些命令,本章主要对这些内容进行介绍。

196 7.1 曲线分析 曲线分析包括曲线连续性分析和曲线曲率梳分析,在曲线分析当中要经常用到这两种方法。 7.1.1 曲线连续性分析 单击【形状分析】工具栏上的【连接检查器分析】按钮,系统弹出如图7-1所示的【连接检查器】对话框。单击【元素】选项组中的【源】和【目标】文本框,从绘图区中选择分析元素。从【类型】选项组中选择分析类型,分别是【曲线-曲线连接】、【曲面-曲面连接】、【曲面-曲线连接】、【边界】、【投影】。在【快速】选项卡中设置简单分析条件,分别是G0、G1、G2、G3、【交叠缺陷】,在其后的微调框中输入分析的最小数值。 图7-1 【连接检查器】对话框 单击【显示】选项组中的【有限色标】按钮,系统弹出如图7-2所示的【连接检查器分析】对话框。单击【完整色标】按钮,系统弹出如图7-3所示的【连接检查器分析】对话框。 按下【梳】 开关按钮,图形中显示分析结果,如图7-4所示。按下【包络】 开关按钮,图形中显示分析结果,如图7-5所示。在【连接】选项组中【最小间隔】和【最大间隔】微调框中输入分析的范围。在【信息】选项组中设置显示内容,分别是【最大值】、【最小值】、【G1模式下的相切】、【G2模式下的凹面】。在【离散化】选项组中设置显示离散程度,分别是【轻度离散化】、【粗糙离散化】、【中度离散化】、【精细离散化】。在【最大偏差】选项组中显示G0、G1、G2、G3模式下的最大偏差值。

B样条曲线矩阵

五、B样条曲线的矩阵表示 1)二阶B样条曲线 设空间P0 P1, …., P n为n+1个控制点,节点矢量为其中每相邻两个控制点之间可以构造出一段二阶B样条曲线。其中的第j=i-1段二阶B样条曲线P j(t)的矩阵表示为: ; 其中,。 对于二阶均匀B样条曲线,其矩阵表示与非均匀B样条曲线的相同: 。 2)三阶B样条曲线 给定节点矢量为,n+1个控制点为P0,P1, …., P n。其中每相邻三个点可构造出一段二次的B样条曲线。其中的第j(=i-2)段三阶B样条曲线P j(u)的矩阵表示为: ; 其中, 。 对于三阶均匀B样条曲线,其矩阵表示为 。 三阶均匀B样条曲线的端点位置、一阶导数和二阶导数矢量分别为: P i,3(0)=(P i+P i+1)/2,

P i,3(1)=(P i+1+P i+2)/2; P'i,3(0)= P i+1-P i, P'i,3(1)=P i+2-P i+1, P'i,3(1)=P'i+1,3(0); P''i,3(t)=P i-2P i+1+P i+2 , 三阶均匀B样条曲线的首末点通过相应边的中点;首末点的切矢方向与相应边重合;二阶导数矢量等于该曲线的两条边矢量P i+1-P i和P i+2-P i+1所构成的对角线矢量。 三阶均匀B样条曲线段为抛物线,两相邻曲线段之间为一阶连续。 3)四阶B样条曲线 设节点矢量为,控制点为P0P1, …., P n,其中每相邻四个点可构造出一段三次的B样条曲线。其中的第j(=i-3)段三次B样条曲线P i(u)的矩阵表示为: ;。 其中, , m =-m2,2/3- m3,3-(t i+1-t i)2/[(t i+2-t i)(t i+2-t i-1)],m r,j是第r行第j列的元素。 3,2 第j(=i-3)段三次均匀B样条曲线P j(t)的矩阵表示: 。 三次均匀B样条曲线的端点位置、一阶导数和二阶导矢量分别为: P (0)=(P i+4P i+1+P i+2)/6, i,4 P (1)=(P i+1+4P i+2+P i+3)/6; i,4 P' (0)=(P i+2-P i)/2, i,4 P' (1)= (P i+3-P i+1)/2, i,4 P' (1)= P'i+1,3(0); i,3

b样条曲面

实验四:B 样条曲面 一.实验目的 用多个B 样条曲线画出一个曲面,并能实现鼠标球滚动。 二.算法思想 B 样条曲面是B 样条曲线的拓广。一块m ?n 次B 样条曲面片的数学表示式:)()(),(,,00 w F u F P w u P n j m i m i n j ij ∑∑=== w u , ∈[0,1] 式中,ij P (i =0,1,2,…..,m; j =0,1,2,…..n )是定义此曲面片的顶点位置向量矩阵,共计(m+1) (n+1)个顶点。)()(,,w F u F n j m i 为B 样条基底函数,w u ,为参数。显然,m 与n 不一定相等,如m=n=3,则由4?4个顶点构成特征多面体,其相应的B 样条曲面片称为双三次 B 样条曲面片。其中: m i m i m k k m i k i m u c m u F )()1(!1 )(10 ,--+-= +-=∑ )! 1(!)!1(1i m i m C i m -++= +其中: 展开三次B 样条曲面数学表达式并写成矩阵 ()()( ) () T T s T s W M w w w w F w F w F w F UM u u u u F u F u F u F w F w F w F w F p p p p p p p p p p p p p p p p u F u F u F u F w u Q =?????? ? ??????????????----= =????? ???????----=????????????????????? ???=100 1 13334063133161)() ()() (01 4 1 03030 3631331611 )() ()() ()()()()()() ()() (),(2343212 3 432143213332 31 30 2322212013121110 030201004321其中: 三.程序主要代码 #include #include #include "ggltools.h" #include "gmatrix3d.h" #include "gvector3d.h" GMatrix3d gRotMatrix ; bool gIsLBtnDown =false ; int gMouseX =0; int gMouseY =0; //控制点网络 GPoint3d **gCtrlGrid =NULL ; //

B样条曲线曲面和NURBS曲线曲面C语言算法源程序

图6.双二次(2x2)B 样条曲面 6.B 样条曲线曲面和 NURBS 曲线曲面的C 语言实现算法源程序 #ifndef _mynu rbs_h #ifndef MYNURBS H 学习小结:前面学习了 Bezier 曲线,B 样条基函数和 B 样条曲线的一些基础知识。掌握关 键问题是一条B 样条曲线间的多段曲线的光滑连接。因为现在是用多段 Bezier 曲线来描绘 一条B 样条曲线,所以问题变为两段 Bezier 曲线间光滑连接。两段 Bezier 曲线段(3次) B1和B2光滑连接的条件: (1) .要求B1和B2有共同的连接点,即 &连续。 (2) .要求B1和B2在连接点处有成比例的一阶导数,即 G 连续。由端点处的一阶导数 1 B1(1) 3(F 3 P 2), B 2(0) 3(Q i Q 。) ,为实现 G 连续,则有: B 2(0) B1(1) 即: Q 1 Q o R P 2 这也表明,P 2, B (Q o ),Q 三点共线。如下图表示了一条 3次B 样条曲线的所有控制多边形: E(P 1) P2 (P / P 用P 0 10 P4 图5.3次B 样条曲线和所有控制多边形 图5中,P0至P6为原始3次B 样条曲线控制多边形顶点, P 0至P 12是计算后最终形成 样条曲线控制多边形顶 点。

#include "gl\gl.h" #include "math.h" //* ************* B样条基函数计算部分************** // 确定参数u 所在的节点区间下标 //n=m-p-1 //m 为节点矢量U[] 的最大下标 //p 为B 样条函数次数 int FindSource(int n,int p,float u,float U[]) { int low,high,mid; if(u==U[n+1])// 特殊情况return n; // 进行二分搜索 low=p; high=n+1; mid=(int)(low+high)/2; while(uU[mid]) { if(u=U[mid]&&u=i-k;di--) { if(u>=U[di]&&u

第八章 B样条曲线曲面(Ⅱ)

第八章 B样条曲线曲面 (Ⅱ)

第一节 反算B样条插值曲线 的控制顶点 2

3 问题: 设计一条 设计一条k k 次 次B B 样条曲线,插值给定的数据点, 如何确定 如何确定节点矢量、控制顶点的个数和位置 节点矢量、控制顶点的个数和位置? 解决方案: 一般地,将曲线的首末端点分别与首末数据点对 应起来,为实现这一目的,需要将首末节点都取作 应起来,为实现这一目的,需要将首末节点都取作k + +1 1重。另外,将曲线的分段连接点和内数据点(除 首末数据点以外的数据点依次对应,根据上一章节点 矢量的确定方法,曲线分段连接点和定义域内的内部 节点也一一对应起来,所以: 节点也一一对应起来,所以:

分 分 段 段 连 连接 接 点 定 定 义 义 域 域 内 内 节 节 点 内数据点 建立了这种对应关系后,曲线的 段数以及节点矢量的大小就可以 确定了。 确定了。 n,0,1,, i p i n = r L 设有个待插值的数据点 k1 首节点为 +重,即: 01 k u u u === L p r 它们与第一个待插值点 对应。 4

5 内部数据点与定义域内的节点一一对应,所以: ,0,1, i k i p u i n + = r L 与节点值 一一对应。 [ ] , k n k u u + 这样,插值曲线的定义域就是 [ ] 1 m 1k B , k m u u + 因为,一般情况下,对于 +个控制顶点的 次 样条曲线,它的定义域为: 所以,插值曲线应有n+k个控制顶点,记作: 011 ,, n k d d d +- r r r L

B样条曲线曲面和NURBS曲线曲面C语言算法源程序(优选.)

最新文件---------------- 仅供参考--------------------已改成-----------word 文本 --------------------- 方便更改 学习小结:前面学习了Bezier 曲线,B 样条基函数和B 样条曲线的一些基础知识。掌握关键问题是一条B 样条曲线间的多段曲线的光滑连接。因为现在是用多段Bezier 曲线来描绘一条B 样条曲线,所以问题变为两段Bezier 曲线间光滑连接。两段Bezier 曲线段(3次)B1和B2光滑连接的条件: (1).要求B1和B2有共同的连接点,即G 0 连续。 (2).要求B1和B2在连接点处有成比例的一阶导数,即G 1 连续。由端点处的一阶导数)(3)0(2),(3)1(10123Q Q B P P B -='-=',为实现G 1 连续,则有: )1(1)0(2B B '=' 即:2301P P Q Q -=- 这也表明,1032),(,Q Q P P 三点共线。如下图表示了一条3次B 样条曲线的所有控制多边形: 1) P 2 P 3 P 4 (P 1112) P 5 P 10 0 P 6 P 9 7 P 8 图5.3次B 样条曲线和所有控制多边形 图5中,P0至P6为原始3次B 样条曲线控制多边形顶点,P 0至P 12 是计算后最终形成B 样条曲线控制多边形顶点。

图6.双二次(2x2)B样条曲面 6.B样条曲线曲面和NURBS曲线曲面的C语言实现算法源程序 #ifndef _mynurbs_h #ifndef _MYNURBS_H #include "gl\gl.h" #include "math.h" //*-*-*-*-*-*-*-*-*-*-*-*-*-*-* B样条基函数计算部分 *-*-*-*-*-*-*-*-*-*-*-*-*-* //确定参数u所在的节点区间下标 //n=m-p-1 //m为节点矢量U[]的最大下标

最新B样条曲线与曲面汇总

B样条曲线与曲面

四、B样条曲线与曲面 Bezier曲线具有很多优越性,但有二点不足: 1)特征多边形顶点数决定了它的阶次数,当n较大时,不仅计算量增大,稳定性降低,且控制顶点对曲线的形状控制减弱; 2)不具有局部性,即修改一控制点对曲线产生全局性影响。 1972年Gordon等用B样条基代替Bernstein基函数,从而改进上述缺点。 B样条曲线的数学表达式为: ?Skip Record If...? 在上式中,0 ≤ u ≤ 1; i= 0, 1, 2, …, m所以可以看出:B样条曲线是分段定义的。如果给定 m+n+1 个顶点 Pi ( i=0, 1, 2,…, m+n),则可定义 m+1 段n 次的参数曲线。 在以上表达式中: (u) 为 n 次B样条基函数,也称B样条分段混合函数。其表达式为:N k,n ?Skip Record If...? 式中:0 ≤ u ≤1 k = 0, 1, 2, …, n 1.均匀B样条曲线 1一次均匀B样条曲线的矩阵表示 空间n+1个顶点?Skip Record If...?(i = 0,1,…,n)定义n段一次(k=0,1,n=1)均匀B样条曲线,即每相邻两个点可构造一曲线段P i(u),其定义表达为:?Skip Record If...? =(1-u)P i-1+ u P i = N0,1(u)P i-1+ N1,1(u)P i 第i段曲线端点位置矢量:?Skip Record If...?,且一次均匀B样条曲线就是控制多边形。

2二次均匀B样条曲线的 空间n+1个顶点的位置矢量?Skip Record If...?(i=0,1,…,n)定义n-1段二次(k=0,1,2, n=2)均匀B样条曲线,每相邻三个点可构造一曲线段P i(u) (i=1,…,n-1),其定义表达为: ?Skip Record If...? =?Skip Record If...?(1 - 2 u + u 2)P i-1+?Skip Record If...?(1 + 2 u - 2u2)P i+?Skip Record If...?u 2P i+1 = N0,2(u)P i-1+ N1,2(u)P i+ N2,2(u)P i+1 端点位置矢量:?Skip Record If...?,?Skip Record If...?,即曲线的起点和终点分别位于控制多边形P i-1P i和P i P i+1的中点。若?Skip Record If...?、?Skip Record If...?、?Skip Record If...?三个顶点位于同一条直线上,?Skip Record If...?蜕化成?Skip Record If...??Skip Record If...??Skip Record If...?直线边上的一段直线。 端点一阶导数矢量:?Skip Record If...?,?Skip Record If...?,?Skip Record If...?,?Skip Record If...?,即曲线的起点切矢和终点切矢分别和二边重合,且相邻两曲线段在节点处具有一阶导数连续。 二阶导数矢量:?Skip Record If...?,即曲线段内任何点处二阶导数相等,且相邻两曲线段在节点处二阶导数不连续。

B-spline Curves(B样条曲线)

Motivation Consider designing the profile of a vase. The left figure below is a Bézier curve of degree 11; but, it is difficult to bend the "neck" toward the line segment P4P5. Of course, we can add more control points near this segment to increase the weight to that region. However, this will increase the degree of the curve. In many cases, it is not worth to use such a high degree polynomial. As discussed in a previous page about the derivatives of a Bézier curve, we can join two Bézier curves together. As long as the last leg of the first curve and the first leg of the second have the same direction, we can at least achieve G1 continuity because the tangent vectors have the same direction but may have different length (i.e., if the lengths are the same, it becomes C1 continuous). The middle figure above uses this idea. It has three Bézier curve segments of degree 3 with joining points marked with yellow rectangles. This shows that with multiple low degree Bézier curve segments satisfying the G1 continuous condition, we still can design complex shapes. But, maintaining this G1continuous condition may be tedious and undesirable. Is it possible that we still can use lower degree curve segments without worrying about the G1 continuous condition? B-spline curves are generalizations of Bézier curves and are developed to answer this question. The right figure above is a B-spline curve of degree 3 defined by 8 control points. In fact, there are five Bézier curve segments of degree 3 joining together to form the B-spline curve defined by the control points. In the above, those little dots subdivide the B-spline curve into Bézier curve segments. One can move control points for modifying the shape of the curve

相关文档
最新文档