您好,欢迎来到六九路网。
搜索
您的当前位置:首页Bezier曲线与曲面

Bezier曲线与曲面

来源:六九路网


《自由曲线曲面》课程论文

Bezier曲线与曲面

姓名:轩小静 学号:201011301010

1、Bezier曲线的背景

给定n+1个数据点,p0(x0,y0),…pn(xn,yn),生成一条曲线,使得该曲线与这些点所描述的形状相符。如果要求曲线通过所有的数据点,则属于插值问题;如果只要求曲线逼近这些数据点,则属于逼近问题。逼近在计算机图形学中主要用来设计美观的或符合某些美学标准的曲线。为了解决这个问题,有必要找到一种用小的部分即曲线段构建曲线的方法,来满足设计标准。

当用曲线段拟合曲线f(x)时,可以把曲线表示为许多小线段φi(x)之和,其中

φi(x)称为基(混合)函数。

f(x)aii(x)

i0n这些基(混合)函数是要用于计算和显示的。因此,经常选择多项式作为基(混合)函数。

(x)anxnan1xn1...a1xa0

几何造型有两个分支:一个是曲线曲面造型(surface modeling),一个是实体造型(solid modeling);后来随着技术的进步,两个分支逐渐融合在一起。曲线曲面的造型的算法和概念是几何造型的公共基础,bezier曲线曲面在几何造型中扮演着一个非常重要的角色。

由于几何外形设计的要求越来越高,传统的曲线曲面表示方法, 已不能满足用户的需求。

1962年,法国雷诺汽车公司的贝塞尔(P.E.Bezier)构造了一种以逼近为基础的参数曲线和曲面的设计方法,并用这种方法完成了一种称为UNISURF 的曲线和曲面设计系统,1972年,该系统被投入了应用。

想法基点是在进行汽车外形设计时,先用折线段勾画出汽车的外形大致轮廓,然后用光滑的参数曲线去逼近这个折线多边形。这个折线多边形被称为特征多边形。逼近该特征多边形的曲线被称为Bezier曲线。

Bezier方法将函数逼近同几何表示结合起来,使得设计师在计算机上就象使用作图工具一样得心应手。原来参数曲线曲面的概念,实际上在数学里用处不大,主要是和实际用处结合不紧密。但Bezier方法一出来,就被广泛接受,大受欢迎。

最初,贝塞尔把参数n次曲线表示为:

p(t)aifi,n(t) 0t1

i0n其中系数矢量ai(i=0,1,…,n)顺序首尾相接。从a0的末端到an的末端所形成的折线称为控制多边形或贝塞尔多边形。

1,i0,fi,n(t)(t)idi1(1t)n11称为贝塞尔基函数。

(i1)!dti1t一个连续函数y=f(x),任给一个ξ>0,总能找到一个多项式和这个函数足够逼近。伯恩斯坦有一套逼近的理论,逼近的形式是:

iiBi,n(t)Cnt(1t)nin!ti(1t)ni (i0,1,....n)

i!(ni)!Bezier曲线曲面实际上是一个多项式曲线曲面,假设现在空间上有100个点要插值它,求一条插值多项式:y(t)a99t99a98t98...a1ta0

对高次多项式的系数很难把握,因此通常不希望用高次曲线,而用低次曲线。这样就带来一个问题,当设计一个复杂的曲线曲面时,希望用多张曲面或多条曲线拼接而成,那么在相接的地方要求光滑,这时就要用到几何连续性的概念。

2、Bezier曲线的定义

针对Bezier曲线,给定空间n+1个点的位置矢量Pi(i=0,1,2,…,n),则Bezier曲线段的参数方程表示如下:

p(t)PiBi,n(t) t[0,1]

i0n这是一个n次多项式,具有n+1项。其中pi(xi,yi,zi),i=0,1,2….n是控制多边形的n+1个顶点,即构成该曲线的特征多边形;Bi,n(t)是Bernstein基函数,有如下形式:

Bi,n(t)nn!iti(1t)niCnti(1t)ni (i0,1,....n)

i!(ni)!Bi0i,n(t) 恰好是二项式[t(1t)]n的展开式!

Pi是空间的很多点(向量,有x、y、z三个分量),t在0到1之间,把t=0代进去可以算出一个数(x、y、z三个值,因为p是向量,有三个分量)--即空间一个点,随着t值的变化,点也在变化。当t从0变到1时,就得到空间的一个图形,这个图形就是bezier曲线。Bernstein基函数是一个多项式,基函数的性质决定了曲线的性质。

3、Bezier曲线基函数的性质

3.1、正性(非负性)

0t0,1Bi,n(t)0 t(0,1),i1,2,,n1;

3.2、权性

基函数有n+1项,n+1个基函数的和加起来正好等于1。

Bi0ni,n(t)1t(0,1)

由二项式定理可知:

Bi0ni,nii(t)Cnt(1t)ni[(1t)t]n1i0n

3.3、端点性质

3.4、对称性

可以证明,假如保持n次Bezier曲线控制多边形的顶点位置不变,而把次序颠倒过来,即下标为i的控制点pi改为下标为n-i的控制点pn-i,则此时曲线仍不变,只不过曲线的走向相反而已。

Bi,n(t)Bni,n(1t)

niBni,n(1t)Cn[1(1t)]n(ni)(1t)niii Cnt(1t)niBi,n(t)

3.5、递推性

Bi,n(t)(1t)Bi,n1(t)tBi1,n1(t) (i0,1,n)

即n次的Bernstein基函数可由两个n-1次的Bernstein基函数线性组合而成。因为:

iii1Cn(Cn1Cn1) (组合里面的公式)

iiii1iniBi,n(t)Cnt(1t)ni(Cn1Cn1)t(1t)ii(n1)ii1i1(1t)CntCn(1t)(n1)(i1)1t(1t)1t(1t)Bi,n1(t)tBi1,n1(t)

4、Bezier曲线的性质

4.1、端点性质

顶点p0和pn分别位于实际曲线段的起点和终点上。 Bezier曲线段的参数方程表示如下:

p(t)PkBk,n(t)P0B0,n(t)P1B1,n(t)PnBn,n(t)k0n

p(0)PkBk,n(0)P0B0,n(0)P1B1,n(0)PnBn,n(0)P0k0nn

p(1)PkBk,n(1)P0B0,n(1)P1B1,n(1)PnBn,n(1)P1k0

从上图中可以看出:在控制多边形的各顶点中,只有第一个和最后一个顶点在曲线上,其它的顶点则用以定义曲线的导数、阶次和形状。由于曲线的形状趋向于控制多边形的形状,所以改变多边形的顶点就会改变曲线的形状,这就使观察者对输入、输出关系有直观的感觉。

Bezier曲线的数学基础是能在第一个和最后一个顶点之间进行插值的一个多项式混合函数。 4.2、一阶导数

Bernstein基函数的一阶导数为:

Bi,n(t)n[Bi1,n1(t)Bi,n1(t)] i0,1,,n;

p(t)n(pipi1)Bi1,n1(t)'i1n

在起始点,t=0,B0,n-1(0)=1,其它Bernstein基为0,于是有:

p'(0)n(p1p0)

在终止点,t=1,Bn-1,n-1(1)=1,其它Bernstein基为0,于是有:

p'(1)n(pnpn1)

这说明Bezier曲线的起点和终点处的切线方向和特征多边形的第一条边及最后一条边的走向一致。 4.3、凸包性

n由于Bi,n(t)1i0且0Bi,n(t)1(0t1,i0,1,,n)

这一结果说明当t在[0,1]区间变化时,对某一个t值,P(t)是特征多边形各顶点的加权平均,权因子依次是Bi,n(t)。在几何图形上,意味着Bezier曲线P(t)在t∈[0,1]中各点是控制点Pi的凸线性组合,即曲线落在Pi构成的凸包之中,如下图:

凸包就是包含右边这6个顶点的最小凸多边形。凸多边形是把多边形的每条边延长,其它边都在它的同一侧。 4.4、几何不变性

指某些几何特性不随坐标变换而变化的特性。Bezier曲线的形状仅与控制多边形各顶点的相对位置有关,而与坐标系的的选择无关。

4.5、变差缩减性

若Bezier曲线的特征多边形 p0p1p2…pn是一个平面图形,则平面内任意直线与p(t)的交点个数不多于该直线与其特征多边形的交点个数,这一性质叫变差缩减性质。

此性质反映了Bezier曲线比其特征多边形的波动还小,也就是说Bezier曲线比特征多边形的折线更光顺。

5、Bezier曲线的生成

生成一条Bezier曲线实际上就是要求出曲线上的点。下面介绍两种曲线生成的方法:

5.1、根据定义直接生成Bezier曲线

绘制Bezier曲线主要有以下步骤:

k①首先给出Cn的递归计算式:

kCnn!nk1k1Cn nk

k!nk !kn② 将p(t)PkBk,n(t)表示成分量坐标形式:

k0x(t)xkBk,n(t)

k0nny(t)ykBk,n(t) t[0,1]

k0nz(t)zkBk,n(t)

k0根据以上的公式可以直接写出绘制Bezier曲线的程序。 5.2、Bezier曲线的递推(de Casteljau)算法

根据Bezier曲线的定义确定的参数方程绘制Bezier曲线,因其计算量过大,不

太适合在工程上使用。但使用德卡斯特里奥(de Casteljau)提出的递推算法则要简单得多。

设P0、P02、P2是一条抛物线上顺序三个不同的点。过P0和P2点的两切线交于P1点,在P02点的切线交P0P1和P2P1于P01和P11,则如下比例成立:

1P0P01PP01P021P1121P01PPP0P11P21

这是所谓抛物线的三切线定理。

当P0,P2固定,引入参数t,令上述比值为t:(1-t),即有:

P01(1t)P0tP11P1(1t)P1tP21P02(1t)P01tP1

t从0变到1,第一、二式就分别表示控制二边形的第一、二条边,它们是两条一次Bezier曲线。将一、二式代入第三式得:

2P02(1t)2P02t(1t)P1tP2

当t从0变到1时,它表示了由三顶点P0、P1、P2三点定义的一条二次Bezier曲线。并且表明:这二次Bezier曲线P02可以定义为分别由前两个顶点(P0, P1)和后两个顶点(P1, P2)决定的一次Bezier曲线的线性组合。

依次类推,由四个控制点定义的三次Bezier曲线P03可被定义为分别由(P0,P1,P2)和(P1,P2,P3)确定的二条二次Bezier曲线的线性组合。

由(n+1)个控制点Pi(i=0,1,...,n)定义的n次Bezier曲线P0n可被定义为分别由前、后n个控制点定义的两条(n-1)次Bezier曲线P0n-1与P1n-1的线性组合:

n1P0n(1t)P0n1tP1t[0,1]

由此得到Bezier曲线的递推计算公式:

Pik0Pikk1k1(1t)PitPi1k1,2,...,n,i0,1,...,nk

这便是著名的de Casteljau算法。用这一递推公式,在给定参数下,求Bezier曲线上一点P(t)非常有效。上式中:Pi0=Pi是定义Bezier曲线的控制点,P0n即为曲线P(t)上具有参数t的点。

de Casteljau算法稳定可靠,直观简便,可以编出十分简捷的程序,是计算Bezier曲线的基本算法和标准算法。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务