计算机图形学10-曲线曲面参数表示的基础知识课件_第1页
计算机图形学10-曲线曲面参数表示的基础知识课件_第2页
计算机图形学10-曲线曲面参数表示的基础知识课件_第3页
计算机图形学10-曲线曲面参数表示的基础知识课件_第4页
计算机图形学10-曲线曲面参数表示的基础知识课件_第5页
已阅读5页,还剩124页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

曲线和曲面1可编辑课件目录曲线曲面概述曲线、曲面参数表示的基础知识曲线构造方法三次样条参数曲线Beizer曲线B样条曲线2可编辑课件曲线曲面概述图形学中一个很复杂的又非常重要的研究领域。曲线曲面才是造型的真正统治者,它占据了我们生活和幻想中的造型的绝大部分。但曲线曲面又是如此地难以理解,让人们在一段很长很长的时间内无法征服它。3可编辑课件4可编辑课件曲线曲面概述自由曲线和曲面发展过程自由曲线曲面的最早是出现在工作车间,为了获得特殊的曲线,人们用一根富有弹性的细木条或塑料条(叫做样条),用压铁在几个特殊的点(控制点)压住样条,样条通过这几个点并且承受压力后就变形为一条曲线。人们调整不断调整控制点,使样条达到符合设计要求的形状,则沿样条绘制曲线。1963年,美国波音,弗格森提出使用参数三次方程来构造曲面1964-1967年,美国MIT,孔斯用封闭曲线的四条边界来定义曲面1971年,法国雷诺汽车,Bezier提出用控制多边形来定义曲线和曲面1974年,美国通用汽车,戈登和里森菲尔德,B样条理论用于形状描述1975年,美国锡拉丘兹大学,佛斯普里尔提出有理B样条80年代,皮格尔和蒂勒,将有理B样条发展成非均匀有理B样条,NURBS方法5可编辑课件目录曲线曲面概述曲线、曲面参数表示的基础知识曲线构造方法三次参数曲线Beizer曲线B样条曲线6可编辑课件显式、隐式和参数表示曲线和曲面都有非参数表示和参数表示之分在非参数中又分为显式和隐式表示(1)显式一般形式:y=f(x)注:x与y一一对应,显示方程不能表示封闭和多值曲线。(2)隐式一般形式:f(x,y)

=

0注:易判断某给定点是在曲线上还是曲线某一侧。7可编辑课件非参数表示形式(显示和隐式)存在如下问题:与坐标有关出现斜率为无穷大的特殊情形对于非平面曲线,曲面,难于用常系数的非参数化函数表示不便于计算机处理8可编辑课件参数表示形式优点:满足几何不变性要求更多自由度参数控制曲线与曲面形状例:二维三次曲线显示表示:二维三次曲线参数表示:(3)参数一般形式:P(t)=[x(t),y(t)]注:曲线上任意一点都可表示为给定参数t的函数。9可编辑课件

最简单的参数曲线是直线段,端点为P1、P2的直线段参数方程可表示为:P(t)=P1+(P2-P1)tt∈[0,1];

圆在计算机图形学中应用十分广泛,其在第一象限内的单位圆弧的非参数显式表示为:其参数形式可表示为:10可编辑课件(4)便于处理斜率为无限大的问题,不会因此而中断计算。

(6)规格化的参数变量t∈[0,1],使其相应的几何分量是有界的,而不必用另外的参数去定义其边界。

(5)参数方程中,代数、几何相关和无关的变量是完全分离的,而且对变量个数不限,从而便于用户把低维空间中的曲线扩展到高维空间去。(7)易于用矢量和矩阵表示几何分量,简化了计算。基于这些优点,我们在以后将用参数表达式来讨论曲线问题。(3)对非参数表示的曲线和曲面进行变化时,必须对所有点进行变化;对参数表示的曲线和曲面则可直接对参数方程变化。11可编辑课件5.1.2参数样条曲线和曲面的常用术语

在工程设计中,一般多采用低次的参数样条曲线。这是因为高次参数样条曲线计算费时,其数学模型难于建立且性能不稳定,即任何一点的几何信息的变化都有可能引起曲线形状复杂的变化。

因此,实际工作中常采用二次或三次参数样条曲线,如:二次参数样条曲线:P(t)=A0

+A1t+A2t2三次参数样条曲线:

P(t)=A0

+A1t+A2t2

+A3t3

12可编辑课件参数曲线相关术语用参数表示的3维曲线是一个有界的点集,可以写成一个带参数的、连续的、单值的数学函数,形式为:x=x(t),y=y(t),z=z(t)t[0,1]位置矢量:曲线上任意一点的位置矢量(即坐标),可以用矢量p(t)表示,p(t)=[x(t),y(t),z(t)]为什么选参数t呢,物理上可以把3维空间的曲线理解为一个动点的轨迹,表示位置矢量p随时间变化那么,它的一阶,二阶,K阶(如果存在)导数分别为13可编辑课件参数曲线相关术语切矢量曲线上R,Q两点参数分别是t和t+△t.当Q趋向R,也就是△t→0导数的方向P’(t)就代表了R点的切线方向导数的大小就可以近似表示△P的长度也可以近似表示这一段弧长△S14可编辑课件切矢量如果选择弧长S作为参数,则是单位矢量15可编辑课件参数曲线相关术语弧长当n→∞,可以把弧长表示为无数段p0p1,p1p2….的长度组成而当p0与p1的△t→0时,p0p1可以近似的表示为于是从0到t的弧长可以表示为:16可编辑课件参数曲线基础参数曲线相关术语法矢量对于空间参数曲线上的任意一点,所有垂直切矢量T的矢量有一束,且位于同一平面上,该平面称为法平面。17可编辑课件T(切矢)、N(主法矢)和B(副法矢)矢量积是第三个单位矢量,它垂直于单位矢量和单位矢量。经该点与矢量平等的法矢量称为曲线在该点的副法矢量,矢量称为单位副法矢量。(从切面)18可编辑课件5.1参数曲线基础参数曲线相关术语 曲率和曲率半径:曲率几何意义是曲线的单位切矢对弧长的转动率,即P(s)到P(s+ds)这段弧的弯曲程度。19可编辑课件参数曲线基础参数曲线相关术语挠率:等于副法线方向(或密切平面)对于弧长的转动率,反应了曲线的扭绕特性。平面曲线中密切平面是曲线所在平面,所以副法矢固定不变,所以绕率总是=0,非平面曲线副法矢变化了,会对曲线产生扭动的效果。T(切矢)、N(主法矢)和B(副法矢)20可编辑课件曲线构造方法插值法给定一组有序的数据点Pi,i=0,1,…,n,构造一条曲线顺序通过这些数据点,称为对这些数据点进行插值,所构造的曲线称为插值曲线。逼近法构造一条曲线使之在某种意义下最接近给定的数据点(但未必通过这些点),称为对这些数据点进行逼近,所构造的曲线称为逼近曲线。插值和逼近统称为拟合。21可编辑课件曲线构造方法在前面的插值法中,如果给定的点(型值点)太多,很难构造插值函数,因此可适当放弃一些型值点。型值点:是用于确定曲线和曲面的位置与形状,且相应曲线或曲面一定经过的点。控制点:是用于确定曲线和曲面的位置与形状,但相应曲线或曲面不一定经过。插值点:是在型值点或控制点值之间插入的一系列点。22可编辑课件曲线构造方法插值法线性插值:假设给定函数f(x)在两个不同点x1和x2的值,用线形函数y=ax+b,近似代替f(x),称为的线性插值函数。23可编辑课件插值法抛物线插值(二次插值):已知在三个互异点x1,x2,x3的函数值为y1,y2,y3,要求构造函数¢

(x)=ax2+bx+c,使得¢(x)在xi处与f(x)在xi处的值相等。24可编辑课件曲线构造方法光顺:曲线拐点不能太多。对平面曲线来讲,相对光顺的条件是:具有二阶几何连续性不存在多余的拐点和奇异点曲率变化较小25可编辑课件参数连续性零阶参数连续性,记作C0,指相邻两个曲线段在交点处具有相同的坐标。如图所示。26可编辑课件一阶参数连续性,记作C1,指相邻两个曲线段在交点处具有相同的一阶导数。如图所示。27可编辑课件二阶参数连续性,记作C2,指相邻两个曲线段在交点处具有相同的一阶和二阶导数。如图所示。28可编辑课件目录曲线曲面概述参数曲线基础曲线构造方法二次插值样条曲线三次样条参数曲线(Hermite,Cardinal样条曲线)Beizer曲线B样条曲线29可编辑课件二次插值样条曲线

二次插值样条曲线的数学表达式在拟合生成样条曲线的众多方法中,我们首先选择较为简单的二次样条曲线即抛物样条曲线的生成方法作为基本方法,来讨论如何用插值方法生成通过给定离散型值点的样条曲线。

由于离散点的要求,我们首先要解决由给定点定义抛物线问题。设有不在同一直线上的三点:P1,P2,P3,现在要求通过该给定的三点定义一条抛物线。如图所示。30可编辑课件P1P2P3图过三点的二次曲线

假如我们采用矢量表达式来表示参数化的二次曲线,那么可以把抛物线的表达式写成如下的一般形式为:

P(t)=A1

+A2t+A3t2

(0

≤t≤1)

(6-1)抛物线是一条二次曲线,所以表达式中参数t的最高次数为2,同时让参数t在0—l之间取值。

这就是说,只要确定了式(6–1)中的三个系数:A1,A2和A3,那么就确定了抛物线的表达式,随之抛物线的曲线图形也就可以确定。所以,我们的工作是要通过设定一些已知条件来求出这三个系数。

31可编辑课件要确定这三个系数(目前尚为未知数),必须要有三个独立的条件。我们可以给定这三个独立条件为:

该抛物线过P1,P2,P3三个点,并且:①抛物线段以P1点为始点。即当参变量t=0时,曲线过P1点;②抛物线段以P3点为终点。即当参变量t=1时,曲线过P3点;③当参变量t=0.5时,曲线过P2点。在这三个设定的条件下,构造的抛物线段如图6.3所示。

P1P2P3QAP2’t=0t=0.5t=1图6.3过3点定义的二次曲线32可编辑课件图中的数据是这样的:A点为P1P3的中点,AP2=P2Q,抛物线在P1点处与P1Q相切,在P3点处与QP3相切,曲线在P2点处的切矢P'2与P1P3平行。

根据以上设定的条件,可以列出三个方程:

t=

0:P(0)=A1

=P1t=

1:P(1)=A1+A2十A3

=P3(6-2)

t=

0.5;P(0.5)=A1+0.5A2+0.25A3

=P2解以上三个联立方程:

A1

=P1P3

=A1

+A2

+A3

=P1+A2

+A3

∴A2

=P3–P1–A3P2

=A1

+

0.5A2

+

0.25A3

33可编辑课件亦即:4P2

=

4A1

+

2A2

+A3

=

4P1

+

2(P3–P1–A3)

+A3

=

2P1

+

2P3

–A3∴A3

=

2P1

+

2P3–4P2以上式回代到A2

=P3–P1–A3中,得:

A2

=

4P2–P3–3P1

所以,通过解联立方程,得到的三个系数A1,A2,A3分别为:

A1

=P1A2

=

4P2–P3–3P1(6-3)A3

=

2P1+2P3–4P2把求出的该三个系数的值,代入到抛物线的表达式(6-1)中,可得:

34可编辑课件P(t)=A1

+A2t+A3t2

=P1

+(4P2–P3–3P1)t+

(2P1+2P3–4P2)t2

=

(2t2–3t+

1)P1

+(4t–4t2)P2

+

(2t2–t)P3(6-4)

(0≤t≤1)

可把式(6-4)改写成矩阵形式为:P(t)=[t2

t1](6-5)以上推导求出的算式,即为我们所要求的过不在一直线上的三点:P1(x1,y1),P2(x2,y2)和P3(x3,y3)的抛物线方程。这时根据参变量t的取值,我们就可以一一计算出位于曲线上的数据点,然后顺次连线绘出图形。

35可编辑课件二次插值样条曲线的加权合成

设有一离散型值点列Pi(i=1,2,…,n),我们可以按式(6-5)每经过相邻三点作一段抛物线,由于有n个型值点,所以像这样的抛物线段一共可以作出n–2条。如图6.4所示。

P1P2P3P4P5Pn-2Pn-1Pn图6.4产生n–2段抛物线36可编辑课件在这n–2条抛物线段中,第i条抛物线段为经过Pi,Pi+1,Pi+2三点,所以它的表达式应为:

Si(ti)=(2ti2–3ti+1)Pi+(4ti–4ti2)Pi+1+(2ti2–ti)Pi+2

(0≤ti≤1)

(6-7)同理,第i+1条抛物线段为经Pi+1,Pi+2和Pi+3三点,所以它的表达式为:Si+1(ti+1)=(2ti+12–3ti+1+1)Pi+1+(4ti+1–4ti+12)Pi+2+(2ti+12–ti+1)Pi+3

(0≤ti+1≤1)(6-8)

经过四点所画出的两条抛物线段Si(ti)和Si+1(ti+1)的图形如图6.5所示:

PiPi+1Pi+2Pi+3SiSi+1图6.5Si和Si+1

37可编辑课件一般说来,每两段曲线之间的搭接区间,两条抛物线是不可能重合的。例如图6.5中,

Si和Si+1两条抛物线,它们在Pi+1和Pi+2两点之间为搭接区间,在这区间内,Si和si+1不太有可能会自然地重合成一条曲线。

显然,对于拟合曲线来说,整个型值点列必须只能用一条光滑的曲线连接起来。为了做到这一点,在Si和si+1这样两条曲线的共同区间内,必须有一个办法让它们按照一个一定的法则结合成一条曲线,这结合的办法就是加权合成。

在加权合成的过程中,我们首先要选择两个合适的权函数。如果我们在这里选择的两个权函数分别为f(T)和g(T),加权合成后的曲线为Pi+1(t),则:

Pi+1(t)

=f(T)·Si(ti)+g(T)·Si+1(ti+1)38可编辑课件在抛物样条曲线中,我们选择的权函数f(T)和g(T)是简单的一次函数,且它们之间存在有互补性。它们分别为:

f(T)=l–T

g(T)=T(O≤T≤1)这样,式:

Pi+1(t)=f(T)·Si(ti)+g(T)·Si+1(ti+1)即可改写为:

Pi+1(t)=(1–T)·Si(ti)+

T·Si+1(ti+1)(6-9)在表达式(6-9)中,包含了三个参变量,即:T、ti和ti+1。假如这三个参变量不加以统一,则接下去的工作是无法进行的,所以我们首先要统一式中的参变量。

39可编辑课件对于曲线段Si(ti),参变量ti的取值范围为:0≤ti≤1,但曲线段Si(ti)与曲线段Si+1(ti+1)搭接的部分是原曲线段的后半截,即是从点Pi+1到Pi+2之间的区间,在这个区间内,参变量的取值范围应为:0.5≤ti≤1。

同理,对于曲线段Si+1(ti+1),在点Pi+1到Pi+2之间的区间内,其参变量ti+1的取值范围应为:0≤ti+1≤0.5。在权函数f(T)和g(T)中,变量T的取值范围定为:0≤T≤1。

为了统一式(6-9)中的三个参变量:T、ti和ti+1,我们选择t作为统一后的参变量,把原有的三个参变量T、ti和ti+1均化成唯一含有t的形式,并要给t规定一个合适的取值范围。假如我们使t的取值范围为:0≤t≤0.5,则上面的三个参变量可统一形式为:

PiPi+1Pi+2Pi+3SiSi+140可编辑课件

T=2t

ti=0.5+t0≤t≤0.5

ti+1=t于是,原式(6-9)可根据新的参变量t改写成如下这样的形式:

Pi+1(t)=(1–2t)·Si(t+0.5)+2t·Si+1(t)(6-10)其中:1–2t=f(T)2t=g(T)

Si(t+0.5)=(2t2–t)Pi+(1–4t2)Pi+1+(2t2+t)Pi+2

Si+1(t)=(2t2–3t+1)Pi+1+(4t–4t2)Pi+2+(2t2–t)Pi+3

41可编辑课件把以上四式代入式(6-10),展开、整理后可得:

Pi+1(t)=(–4t3+4t2–t)Pi+(13t3–10t2+1)Pi+1

+(–12t3+8t2+t)Pi+2+(4t3–2t2)Pi+3(i=1,2,…,

n–3)(0≤t≤0.5)

(6-11)

式(6-11)的实质是:表达了每相邻的四个点可以决定中间的一段抛物样条曲线。见图6.6所示。

PiPi+1Pi+2Pi+3Pi+1(t)图6.64个点决定中间的一段样条曲线

假如一个离散点列Pi具有n个型值点,即i=1,2,…,n。那么根据式(6-11),可以加权合成后生成n–3段抛物样条曲线。即式(6-11)中的i的取值范围为:i=1~n–3。

42可编辑课件目录曲线曲面概述参数曲线基础曲线构造方法二次插值样条曲线三次样条参数曲线(Hermite样条曲线)Beizer曲线B样条曲线43可编辑课件三次参数样条曲线三次参数曲线的代数和几何形式(294)代数形式我们以最常见的三次参数曲线为例,讨论参数曲线的代数和几何形式。下面为一般的三次参数曲线的代数形式:从a3x到a0x有12个系数为代数系数,它们确定了这条参数曲线的形状和位置。系数不同则曲线不同。把它改写为矢量表达:44可编辑课件三次参数样条曲线三次参数曲线的代数和几何形式代数形式把前面的代数方程改写为矢量形式P(t)表示曲线上任一点的位置矢量;系数a0表示(a0x,a0y,a0z)我们尝试用已知条件来求解这些系数。可供选择的已知条件有:端点坐标、端点坐标的切矢量、法矢量、曲率、挠率等等。对于上面的三次参数曲线,我们使用4个已知条件即可:P(0),P(1),P’(0),P’(1)45可编辑课件三次参数样条曲线三次参数样条Hermite曲线的代数和几何形式几何形式对三次参数样条曲线,若用其端点位矢P(0)、P(1)和切矢P¢(0)、P¢(1)描述。将P(0)、P(1)、P¢(0)和P¢(1)简记为P0、P1、P¢0和P¢1,代入46可编辑课件三次参数样条曲线47可编辑课件三次参数样条曲线令称为Hermite矩阵,插值样条参数方程可以写成:48可编辑课件三次参数样条曲线上式展开其中,上式称为Hermite样条调和函数,因为它们调和了边界约束值,使在整个参数范围内产生曲线的坐标值。调和函数仅与参数t有关,而与初始条件无关。49可编辑课件三次参数样条曲线

50可编辑课件三次参数样条曲线例:给定9个型值点,其中起始点和终止点是同一个点,从而其特征多边形是一个首尾相接的封闭多边形,具体坐标位置如下:(100,300),(120,200),(220,200),(270,100),(370,100),(420,200),(420,300),(220,280),(100,300)假定各点处的一阶导数数值如下:(70,-70),(70,-70),(70,-70),(70,-70),(70,70),(70,70),(-70,70),(-70,70),(70,-70)用Hermite插值方法绘制曲线。解:p0=(100,300)p1=(120,200)p0’=(70,-70)p1’=(70,-70)For(t=0;t<=1;t=t+0.1)或For(t=0;t<=1;t=t+0.01)或51可编辑课件Hermite样条曲线比较简单,易于理解,但要求确定每个型值点处的一阶导数作为初始条件,这是很不方便的,有时甚至是难于实现的。三次参数样条曲线52可编辑课件习题6.1参照Hermite三次曲线的几何形式,试用B[P0P1P’0P’1P’’0P’’1]T,推导相应五次曲线的调和函数和系数矩阵M

53可编辑课件习题讲解解:设Hermite五次曲线的几何形式为:P(t)=a5t5+a4t4+a3t3+a2t2+a1t+a0其中t∈[0,1]

按题意,已知曲线两端点的坐标值P0P1

曲线两端点的一阶导数值P’0P’1曲线两端点的二阶导数值P’’0P’’1则求出系数a5,a4,a3,a2,a1,a0则P(t)就可确定;由于P(t)=a5t5+a4t4+a3t3+a2t2+a1t+a0,其中t∈[0,1]

54可编辑课件

P’(t)=5a5t4+4a4t3+3a3t2+2a2t+a1P”(t)=20a5t3+12a4t2+6a3t+2a2

P0=P(0)=a0

P1=P(1)=a5+a4+a3+a2+a1+a0P0’=P’(0)=a1P1’=P’(1)=5a5+4a4+3a3+2a2+a1P0”=P”(0)=2a2P1”=P”(1)=20a5+12a4+6a3+2a2

55可编辑课件所以a0=P(0)a1=P’(0)a2=P”(0)/2a3=10P(1)-10P(0)-4P’(1)-6P’(0)+P”(1)/2-3P”(0)/2a4=-15P(1)+15P(0)+7P’(1)+8P’(0)-P”(1)-3P”(0)/2a5=6P(1)-6P(0)-3P’(1)-3P’(0)-P”(0)/2+P”(1)/2

=>P(t)=[-6P(0)+6P(1)-3P’(0)-3P’(1)-P”(0)/2+P”(1)/2]t5+[+15P(0)-15P(1)+8P’(0)+7P’(1)+3P”(0)/2]t4+[-10P(0)+10P(1)-6P’(0)-4P’(1)-3P”(0)/2+P”(1)/2]t3+[P”(0)/2]t2+[P’(0)]t+P(0)

56可编辑课件整理得:

P(t)=(-6t5+15t4-10t3+1)P(0)+(6t5-15t4+10t3)P(1)+(-3t5+8t4-6t3+t)P’(0)+(-3t5+7t4-4t3)P’(1)+(-t5/2+3t4/2-3t3/2+t2/2)P”(0)+(t5/2-t4+t3/2)P”(1)

故调和函数为:

F(0)=-6t5+15t4-10t3+1F(1)=6t5-15t4+10t3

F(2)=-3t5+8t4-6t3+tF(3)=-3t5+7t4-4t3F(4)=-t5/2+3t4/2-3t3/2+t2/2F(5)=t5/2-t4+t3/257可编辑课件系数矩阵为:-6 6 -3 -3 -1/2 1/215 -15 8 7 3/2 -1-10 10 -6 -4 -3/2 1/20 0 0 0 1/2 000 10 0 01 0 0 0 0 0 58可编辑课件习题2试求两段三次Hermite曲线达C1连续的条件解:两段三次Hermite曲线分别为:Q1(t1)=a3t13+a2t12+a1t1+a0t1∈[01]Q2(t2)=b3t23+b2t22+b1t2+b0t2∈[01]依据C1连续充要条件为:Q1(1)和Q2(0)在P点处重合,且其在P点处的切矢量方向相同,大小相等

59可编辑课件即Q1(1)=Q2(0),Q1’(1)=Q2’(0),Q1”(1)=Q2”(0)而Q1(1)=a3+a2+a1+a0

Q2(0)=b0Q1’(t1)=3a3t12+2a2t1+a1Q2’(t2)=3b3t22+2b2t2+b1

则:Q1’(1)=3a3+2a2+a1Q2’(0)=b1Q1”(t1)=6a3t1+2a2

Q2”(t2)=6b3t2+2b2Q1”(1)=6a3+2a2

Q2”(0)=2b2

60可编辑课件=>两段三次Hermite曲线:Q1(t1)=a3t13+a2t12+a1t1+a0t1∈[01]Q2(t2)=b3t23+b2t22+b1t2+b0t2∈[01]要达到C1连续,其系数必须满足下列关系式:a3+a2+a1+a0=b03a3+2a2+a1=b16a3+2a2=2b261可编辑课件6.2Bezier

曲线

前面讨论过的三次参数样条曲线通过给定的型值点,属于样条插值曲线,适合于已知曲线上的某些点而生成曲线的情形。但在外形设计时,初时给出的型值点有时并不精确,由给定的型值点生成的样条曲线并不能满足性能或美观的要求,需要加以修改。但多数插值样条曲线作为外形设计工具不能直观地表示出应该如何控制和修改曲线的形状,缺少灵活性和直观性。法国雷诺汽车公司工程师P.E.Bezier在1962年提出了一种新的参数曲线表示方法,称为Bezier曲线。这种方法的特点是所输入型值点与生成曲线之间的关系明确,能比较方便地通过修改输入参数来改变曲线的形状和阶次。62可编辑课件63可编辑课件在该多边折线的各顶点中,只有第一点和最后一点是在曲线上的,其余的顶点则用来定义曲线的导数、阶次和形状。第一条边和最后一条边则表示出了曲线在起点处和终点处的切线方向,即第一条边和最后一条边分别和曲线在起点和终点处相切。曲线的形状趋向于多边折线的形状。改变多边折线的顶点位置和曲线形状的变化有着直观的联系。下图列举了一些Bezier多边折线和相应的Bezier曲线的形状关系。

P0P1P2P3P0P1P2P3P0P1P2P3图Bezier曲线

Bezier曲线是由一组多边折线定义的,在多边折线的各顶点中,只有第一点和最后一点在曲线上,第一条和最后一条折线分别表示出曲线在起点和终点处切线方向。曲线的形状趋向于多边折线的形状,因此,多边折线又称为特征多边形,其顶点称为控制点。64可编辑课件6.2.1Bezier曲线的数学表达式

1.数学表达式Bezier曲线次数严格依赖于确定该段曲线的控制点个数,通常由(n﹢1)个顶点定义一个n次多项式,曲线上各点参数方程式为:在式(6-21)中,Pi为各顶点的位置向量,Bi,n(t)为伯恩斯坦(Bernstein)基函数,该函数的表达式为:n次多项式曲线P(t)称为n次Bezier曲线65可编辑课件Bezier曲线及其特征多边形图例:66可编辑课件一次Bezier曲线(n=1)二次Bezier曲线(n=2)三次Bezier曲线(n=3)67可编辑课件2.Bezier曲线的性质(1)曲线的起点和终点同特征多边形的起点和终点重合对Bernstein多项式有:当t﹦0时,只有i﹦0的项不为0,其它项都为ti﹦0i﹦0,因此其中规定:0!=1,00=1。当t﹦1时,只有i﹦n

的项不为0,其它项为(1-t)n-i﹦0n-i﹦0,因此P(1)=P0B0,n(1)+P1B1,n(1)+P2B2,n(1)+…+PnBn,n(1)从以上结果可以得出,曲线通过多边折线的起点和终点。68可编辑课件(2)一阶导数对参数t求导得:于是得:(6-23)在起始点t﹦0,B0,n-1(0)﹦1,其余项均为0,故有:P’(0)﹦n(P1﹣P0)在终止点t﹦1,Bn-1,n-1(1)﹦1,其余项均为0,故有:P’(1)=n(Pn﹣Pn-1)即Bezier曲线在端点处的一阶导数只同相近的两个控制点有关,其方向相同于两点的连线方向。69可编辑课件(3)二阶导数对参数t求二阶导数可得:

在起始点t﹦0处的二阶导数为:P”(0)﹦n(n﹣1)(P2﹣2P1﹢P0)=n(n-1)((P2﹣P1)-(P1-P0))在终止点t﹦1处的二阶导数为:P”(1)﹦n(n﹣1)(Pn﹣2Pn-1﹢Pn-2)=n(n-1)((Pn-2﹣Pn-1)-(Pn-1﹣Pn))结论:Bezier曲线在端点处的二阶导数只同相近的三个控制点有关。那么,Bezier曲线在端点处的r阶导数是由端点和它们r个邻近的控制多边形顶点来决定。70可编辑课件(4)凸包性Bezier曲线的另一个重要性质是它落在特征多边形顶点所形成的凸包内。即在几何图形上,当特征多边形为凸时,Bezier曲线也是凸的;当特征多边形有凹有凸时,其曲线的凸凹形状与之对应。Bezier曲线的凸包性质保证了多项式曲线随控制点平稳前进而不会振荡。(5)几何不变性由Bezier曲线的数学定义式知,曲线的形状由特征多边形的顶点Pi(i﹦0,1,...,n)唯一确定,与坐标系的选取无关,这就是几何不变性。(6)对称性

假设保持n次控制多边形的顶点位置不变,而把次序颠倒过来,即下标为i的控制点Pi改为下标为n-i的控制点Pn-i,则此时曲线仍不变,只不过曲线的走向相反而已。71可编辑课件6.2.2二次Bezier曲线

顶点P0,P1,P2可定义一条二次(n=2)Bezier曲线。此时式(6-21)可以改写成:

P(t)=(1–t)2P0+2t(1–t)P1+t2P2

(0≤t≤1)(6-24)写成矩阵形式为:

P(t)=[t2t1]在式(6-24)中,相对应于式(6-21)中的调和函数Bi,n(t)分别为:

B0,2(t)=1-2t+t2

B1,2(t)=2t-t2

B2,2(t)=t2

72可编辑课件根据式(6-24),当n=2时,二次Bezier曲线在起点P0处有切向量P'0=P'(t=0)=2(P1–P0);在终点P2处有切向量P'2=P'(t=1)=2(P2–P1)。同时,当t=1/2时:该式说明,二次Bezier曲线经过△P0P1P2中的一条中线P1Pm的中点P。综上所述,我们可以看出:二次Bezier曲线是一条抛物线。见下图所示。

P1P0P2PmP二次Bezier曲线73可编辑课件746.2.3三次Bezier曲线一般地说,可以用任何数目的控制点拟合出一条Bezier曲线,但这需要计算更高次的多项式。复杂曲线可以由一些较低次数的Bezier曲线段连接而成,较小的曲线段连接也便于更好地控制小区域内的曲线形状,最常使用的是三次Bezier曲线。三次Bezier曲线由四个控制点P0、P1、P2、P3定义:74可编辑课件75展开后的表达式为:P(t)=(-t3﹢3t2﹣3t﹢1)P0+(3t3﹣6t2﹢3t)P1

+(-3t3﹢3t2)P2﹢t3P3

=B0,3(t)P0+B1,3(t)P1+B2,3(t)P2﹢B3,3(t)P3其中B0,3(t)﹦-t3﹢3t2﹣3t﹢1

B1,3(t)﹦3t3﹣6t2﹢3tB2,3(t)﹦-3t3﹢3t2B3,3(t)﹦t3称为三次Bezier曲线的调和函数,下图表示出调和函数的四条曲线。这四条曲线形成了三次Bezier曲线的一组基,任何三次Bezier曲线都是这四条曲线的线性组合。75可编辑课件76三次Bezier曲线的调和函数:76可编辑课件77三次Bezier曲线函数式用矩阵形式表示为:是三次Bezier系数矩阵。77可编辑课件78三次Bezier曲线的在端点处的一阶导数为:P’(0)﹦3(P1﹣P0)P’(1)=3(P3﹣P2)二阶导数为:P”(0)﹦6(P2﹣2P1﹢P0)P”(1)﹦6(P3﹣2P2﹢P1)三次Bezier曲线函数式分别写成坐标分量的形式如下:x(t)﹦(-t3﹢3t2﹣3t﹢1)x0﹢(3t3﹣6t2﹢3t)x1

﹢(-3t3﹢3t2)x2﹢t3x3y(t)﹦(-t3﹢3t2﹣3t﹢1)y0﹢(3t3﹣6t2﹢3t)y1

﹢(-3t3﹢3t2)y2﹢t3y3z(t)﹦(-t3﹢3t2﹣3t﹢1)z0﹢(3t3﹣6t2﹢3t)z1

﹢(-3t3﹢3t2)z2﹢t3z3

78可编辑课件79实际生成曲线时,按问题的要求取一合适的步长,控制u从0到1变化,求出一系列(x,y)坐标点,将其用小线段顺序连接起来,就可以得到一条Bezier曲线。对于二维平面的情况,只有x,y坐标分量,可以给出四点三次Bezier曲线如下的算法描述:beginx=x0y=y0moveto(x,y)fort﹦0to1steptx﹦B0,3(t)x0﹢B1,3(t)x1﹢B2,3(t)x2﹢B3,3(t)x3y﹦B0,3(t)y0﹢B1,3(t)y1﹢B2,3(t)y2﹢B3,3(t)y3lineto(x,y)endforend79可编辑课件80三次Bezier曲线例子:设在平面上给定的7个控制点坐标分别为:(100,300),(120,200),(220,200),(270,100),(370,100),(420,200),(420,300)。画出其曲线。80可编辑课件816.2.4Bezier曲线的光滑连接复杂曲线可以由一些较低次数的Bezier曲线段连接而成,工程上通常使用分段三次Bezier曲线来描述。将分段的三次Bezier曲线连接起来构成三次Bezier曲线,其关键问题是如何保证连接处具有连续性。设有两段三次Bezier曲线,其中一段曲线由控制点P0、P1、P2、P3生成,另一条曲线由控制点Q0、Q1、Q2、Q3生成,P3(Q0)是两段曲线的公共控制点,如下图所示。如果两段曲线要达到光滑连接,需要一阶导数连续,甚至二阶导数连续。对于一阶导数连续,由前面所推出的公式,第一段曲线终点处的导数为:P’(1)﹦3(P3﹣P2)第二段曲线起点处的导数为:Q’(0)﹦3(Q0﹣Q1)81可编辑课件82两段Bezier曲线光滑连接的条件示意图一阶导数要连续,则应有P’(1)﹦Q’(0),即:P3﹣P2﹦Q1﹣Q0

也即要求P2P3(Q0)Q1三点共线,而且P3(Q0)为中点,是它们的公切线。82可编辑课件83第一段曲线终点处的二阶导数为:P”(1)﹦6(P3﹣2P2﹢P1)第二段曲线起点处的二阶导数为:Q”(0)﹦6(Q2﹣2Q1﹢Q0)要达到二阶导数连续,则应有P”(1)﹦Q”(0),即:P3﹣2P2﹢P1﹦Q2﹣2Q1﹢Q0Bezier样条曲线为外形设计提供了灵活直观的方法,但对(n+1)个控制点,需要n阶Bernstein多项式,当n较大时,特征多边形对曲线控制减弱,曲线修改和使用都不便。如果使用低次多项式分段实现,光滑连接所需要的条件要求比较高。另外,如果改变任一个控制点位置,整个曲线都受到影响,缺乏对曲线形状进行局部修改的灵活性。83可编辑课件6.2.5Bezier曲线生成算法

根据式(6-21),可以编写出绘制任意阶次的Bezier曲线的绘图程序。doublepowi(doublev,intk)//计算vk{doubletemp=1.0;if(k==0&&v==0)return1;//00=1else{ for(inti=1;i<=k;i++)temp=temp*v;}returntemp;}84可编辑课件longfac(intm)//计算m!{inti;longtemp=1;if(m==0)return1;//0!=1else{for(i=2;i<=m;i++) temp=temp*i;}returntemp;}85可编辑课件voidbezier(intpx[],intpy[],intn){intx,y,i,j,k=100;doublet,t1,u,v;doubletemp,temp1,temp2,bi;t=1.0/k;moveto(px[0],py[0]);//移动到起始顶点for(j=1;j<k;j++){t1=j*t;u=t1;v=1–u; x=0;y=0;86可编辑课件for(i=0;i<=n;i++){temp=double(fac(n)/fac(i)/fac(n–i));//n!/(i!*(n-i)!)temp1=powi(u,i);//uitemp2=powi(v,n–i);//v(n-i)bi=temp*temp1*temp2;x=x+bi*px[i];y=y+bi*py[i];}LineTo(x,y);}lineto(px[n],py[n]);}87可编辑课件习题3给定四点P1(0,0,0),P2(1,1,1),P3(2,-1,-1),P4(3,0,0),用其作为特征多边形来构造一条三次Bezier曲线,并计算参数为0,1/3,2/3,1的值。解:三次Bezier曲线的一般式为:P(t)=(1-t)3P1+3t(1-t)2P2+3t2(1-t)P3+t3P4 t∈[01]其矩阵表达式为

88可编辑课件89可编辑课件然后分别令t=0,1/3,2/3,1计算上述式子即可 当t=0时当t=1/3时,

90可编辑课件当t=2/3时当t=1时

91可编辑课件6.3B样条曲线上面所介绍的Bezier曲线,在外形设计的应用中,存在有一些具体的不足之处:①确定了多边形的顶点数(m个),也就决定了所定义的Bezier曲线的阶次(m–1次),这样很不灵活。②当顶点数(m)较大时,曲线的阶次将比较高。此时,多边形对曲线形状的控制将明显减弱。③从式(6–21)可以看出,调和函数的值在开区间(0,1)内均不为零。因此,所定义的曲线在(0<t<1)的区间内的任何一点均要受到全部顶点的影响。即改变其中任一个顶点的位置,将会对整条曲线产生影响,因而对曲线进行局部修改将成为不可能。92可编辑课件B样条曲线示例二次B样条曲线示例93可编辑课件B样条曲线示例二次B样条曲线示例94可编辑课件B样条曲线示例三次B样条曲线示例95可编辑课件B样条曲线示例三次B样条曲线示例96可编辑课件B样条曲线示例四次B样条曲线示例97可编辑课件B样条曲线示例五次B样条曲线示例98可编辑课件为了克服以上提到的在Bezier曲线中存在的一些问题,Gordon,Riesenfeld和Forrest等人拓展了Bezier曲线,用n次B样条基函数替换了伯恩斯坦基函数,构造了B样条曲线。B样条曲线除了保持了原Bezier曲线所具有的优点外,还增加了可以对曲线进行局部修改这一突出的优点。除此之外,它还具有对特征多边形更逼近,多项式阶次较低等优点。因此,B样条曲线在外形设计中得到了广泛的重视和应用。99可编辑课件式中:Pk,n(t)为第k段n次B样条曲线段(k=0,1,…,n),Fi,n(t)为n次B样条基函数,也称为B样条分段混合函数。其形式为:(6-27)连接全部曲线段所组成的整条曲线称为n次B样条曲线。依次用线段连接Pi+k(k=0,1,…,n)所组成的多边折线称为B样条曲线在第i段的B特征多边形。

n次B样条曲线可达到n–1阶连续。

B样条曲线定义形式2:100可编辑课件

连接全部曲线段所组成的整条曲线称为n次B样条曲线。依次用线段连接点Pi+k(k=0,1,…,n)所组成的多边折线称为B样条曲线在第i段的B特征多边形。

101可编辑课件由式(6–26)可以看出,B样条曲线是分段组成的。所以特征多边形的顶点对曲线的控制灵活直观。由于整条B样条曲线能达到n–1阶的连续,而在工程实际应用中,二阶连续的曲线已能使工程问题的解决相当满意,所以在实际应用中,三次B样条曲线和二次B样条曲线应用得较为广泛。高于三次的B样条曲线,由于计算过于复杂,且也不一定适合于一般的工程应用,所以用得很少。

6.3.2二次B样条曲线

对于二次B样条曲线,n=2,i=0,l,2。所以式(6-27)可以写成如下形式:102可编辑课件103可编辑课件因此,二次B样条曲线的分段表达式可以写成如下的形式:

Pi(t)=F0,2(t)Pi+F1,2(t)Pi+1十F2,2(t)Pi+2

(i=0,1,2,….m)(6-28)综合起来,二次B样条曲线还可以写成更一般化的形式:104可编辑课件(6-29)对P(t)求导.可得:(6-30)105可编辑课件从式(6–28),我们可以总结出二次B样条曲线在端点处的性质;∵∴

106可编辑课件三个顶点P0P1P2确定一段二次B样条曲线段,该段曲线是一段抛物线。一般情况下,B样条曲线不经过控制点,曲线起点只与前二个控制点有关,终点只与后二个控制点有关。

107可编辑课件以上的三对式子说明:二次B样条曲线段的起点P(0)在B特征多边形第一条边的中点处,且其切向量B1–B0即为第一条边的走向;终点P(1)在B持征多边形线第二条边的中点处,且其切向量B2–B1即为第二条边的走向。而且,P()正是△P(0)B1P(1)的中线B1M的中点,且在P()处的切线平行于。因此,分段二次B样条曲线是一条抛物线。见图6.17所示。

B0B1B2P(0)P(1)P’(1/2)P(1/2)M图6.17二次B样条曲线

108可编辑课件可见,由n个顶点定义的二次B样条曲线,实质上是n–2段抛物线(相邻三点定义)的连接,并在连接处达到一阶连续。

6.3.3三次B样条曲线

对于三次B样条曲线,n=3,k=0,1,2,3。所以式(6-27)可以分别写成如下形式:109可编辑课件=(–t3+3t2–3t+1)=(3t3–6t2+4)110可编辑课件=(–3t3+3t2+3t+1)=t3

111可编辑课件所以,三次B样条曲线的表达式可以写成:(6-31)下面,我们来讨论一下三次B样条曲线的端点性质。由式(6-31)可以进一步推导得:112可编辑课件P(t)=[(1–t)3

P0+(3t3–6t2+4)P1+(-3t3+3t2+3t+1)P2+t3P3]P’(t)=[-3(1–t)2

P0+(9t2–12t

)P1+(-9t2+6t+3)P2+3t2P3]P”(t)=[6(1–t)P0+(18t–12

)P1+(-18t+6)P2+6tP3]∵∴以t的端点值代入,得:113可编辑课件从以上列出的端点结果我们可以看到,曲线段的起点P(0)位于△P0P1P2底边P0P2的中线P1Pm上,且距P1点的三分之一处。该点处的切矢P‘(0)平行于△P0P1P2的底边P0P2,且长度为其二分之一。该点的二阶导数P’’0)等于中线矢量P1Pm的二倍,见下图。

P0P1P2P3P4P’(0)P(0)P”(0)P”(1)P(1)P’(1)Pm图6.3.16三次B样条曲线段

114可编辑课件同理,对于终点P(1)处的情形与此相应。如果在B特征多边形上增加了一个顶点P4,那么P1P2P3P4又可定义一段新的三次B样条曲线。因为新曲线段起点的有关数据和上一段曲线的终点的有关数据都只和P1、P2、P3三点有关,所以该二段曲线在连接处的位置矢量,一阶切矢和二阶切矢都应相等,即:

P'1(1)=P'2(0)

P''1(1)=P''2(0)这就证明了,三次B样条曲线可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论