1、第三章 离散点绘制平面曲线,1 概述 2 贝塞尔(Bezier)曲线 3 B样条曲线 4 抛物线调配曲线 5 三次参数样条曲线本章小结,一、规则曲线与不规则曲线,平面曲线一般分规则和不规则曲线两类。规则曲线是指可以用一个方程,描述的曲线,即曲线的方程已知。这类曲线的绘制方法:以足够小的步长取曲线上足够多的点,然后利用曲线方程求出这些点的坐标,最后用直线连接相邻的点即可绘出曲线。曲线的绘制精度取决于曲线上取点的密度,密度越大,精度就越高,曲线就越光滑。,1 概述,不规则曲线(拟合曲线):指已知平面一些离散点的坐标,但曲线方程未知,需要人为设计曲线方程对这些点进行拟合形成的曲线。,对于这类曲线的绘
2、制,首先要找出一种合理的拟合方法来设计曲线方程。拟合方法包括:贝塞尔曲线法、B样条曲线法、抛物线调配曲线法、三次参数样条曲线法,最小二乘法等。拟合方法不同 曲线拟合方程不同 绘制的曲线形状也不同。但是,一旦拟合方法确定并得到相应的曲线拟合方程,不规则曲线也就变成了规则曲线。本章的内容就是介绍:如何根据离散点的坐标,利用拟合方法建立曲线拟合方程,绘制不规则曲线。,1 概述,在用拟合方法建立曲线拟合方程时,通常把不规则曲线分为两类:1. “点点通过”式,当已知离散点的位置较精确时,拟合的曲线通过所有的已知点。,曲线方程确定后 规则曲线 以足够小的步长获取相邻离散点之间若干个数据点(插值点)的坐标,
3、并用直线连接它们。当步长极小时,所绘出的直线连线在视觉上便是一条光滑的曲线。求相邻离散点之间若干数据点的问题称为插值问题。,二、不规则曲线(拟合曲线)的分类,1 概述,2. “平均通过”式当已知数据点有一定误差时,所拟合的曲线不通过所有已知点,曲线代表的是这些数据点的变化趋势。,要求:设计的曲线方程与所有已知点的“距离”总和最小。即:曲线方程是对所有已知点的“逼近”。典型例子:地层孔隙度深度变化曲线。“点点通过”式也称为插值曲线,“平均通过”式也称为逼近曲线。,1 概述,一般可分为直角坐标方程和参数方程两类。 例如:对于圆心坐标为(x0 , y0),半径为 r 的圆,其直角坐标方程为:(x -
4、 x0)2 + (y - y0)2 = r2参数方程为:在计算机绘图时,使用参数方程要比直角坐标方程方便。 参数方程还有另外一种形式。,三、曲线的方程分类,1 概述,例如:对于二次抛物线曲线,其参数方程可表示为设上述参数方程可写为:方程称为曲线的参数矢量方程。在构建曲线方程时,通常采用方程的矢量形式;在绘制曲线时,通常采用方程的分量形式。,1 概述,当平面上已知数据点较多时,针对所有点拟合曲线方程有时非常困难,或者得到的曲线方程非常复杂、不实用。可分别针对部分点进行分段拟合,分段拟合得到的曲线段会涉及到曲线段的连接问题。例如:若已知3个平面离散点,用1条抛物线段对其拟合;若有5个点,可用2条抛
5、物线段进行分段拟合。,两条曲线段在连接点P3处,并非光滑,需对该点进行光滑处理。在光滑处理时,达到什么标准为“光滑”呢?给出2个一般标准:,四、曲线段的光滑连接,1 概述,1. C 1连续在连接点 pj 处,若两曲线段的切线斜率相等(相同的切线),或者说一阶导数连续,即,称两曲线段在连接点 pj 处的光滑连接达到C 1连续。2. C 2连续在连接点 pj 处,不仅两曲线段的切线斜率相同,而且切线斜率的变化率也相同,即称两曲线段在连接点 pj 处的光滑连接达到C 2连续。显然C 2连续比C 1连续要求更高,曲线的连接更光滑。另外还有更高的连续标准,但对一般绘图,曲线段的连接满足C 1或C 2连续
6、,其光滑已足够。,。,及,可以设计一个光滑的曲线段去逼近这个特征多边形。贝塞尔曲线就属于这类曲线。该曲线由法国汽车工程师Bezier首先提出,最初用于汽车零件外形的设计。目前广泛应用于与计算机绘图相关的各个领域。,2 贝塞尔曲线,一、Bezier 曲线1. 特征多边形特征多边形是用直线段依次连接平面上离散点所形成的折线多边形。它反映了所要设计曲线的大致轮廓。,2. Bezier 曲线的参数方程已知三个平面离散点P0、P1、P2,那么由这三点可以定义二次抛物线段,其参数矢量方程可表示为:,其中,2 贝塞尔曲线,经过推导(详见教材P58),可求出A0、A1、A2:, t = 0时,抛物线经过P0,
7、并与P0 P1相切。 t = 1时,抛物线经过P2,并与P1 P2相切。,设上述抛物曲线满足下列条件:,2 贝塞尔曲线,因此,该抛物线段的参数矢量方程为:,或用矩阵形式表示:,该方程描述的曲线称为二次贝塞尔曲线。其分量形式为:,2 贝塞尔曲线,绘制方法:将参数 t 的区间0 , 1划分为 n 等份,依次取t = 1/n , 2/n , 3/n , ,利用曲线参数方程计算对应的各点坐标,并用直线段依次连接各点。在已知三个平面离散点时,可绘制二次Bezier曲线;若有n+1个平面离散点时,则可绘制n次Bezier曲线。,其中,2 贝塞尔曲线,n次Bezier曲线参数矢量方程的一般形式:,其中:Pi
8、(i=0 ,1 , , n)为n+1个平面离散点, ;,,,其分量形式为:,2 贝塞尔曲线,实际应用中,对多个离散点(如:7个离散点)绘制Bezier 曲线时:可以用高次Bezier 曲线进行绘制(如:7个离散点使用六次Bezier 曲线);可以用低次Bezier 曲线进行分段拟合(常使用二次和三次Bezier 曲线);需要对连接点进行光滑处理(C 1连续、 C 2连续),已有CG方面的论文研究了此问题。 地质绘图中常采用低次Bezier 曲线的分段拟合。,2 贝塞尔曲线,二、二次Bezier 曲线的程序设计思路已知:平面上 3 个离散点P0、P1、P2的坐标( x0 , y0 )、( x1
9、, y1 )、( x2 , y2)。二次Bezier 曲线参数方程的分量形式:,其中,编程思路:将参数 t 的区间0 , 1划分为 n 等份,依次取t = 1/n , 2/n , 3/n , ,利用方程计算对应各点的坐标,并用直线段依次连接各点。,2 贝塞尔曲线,曲线通过始点和终点,并与特征多边形首末两边相 切于始点和终点,中间点将曲线拉向自己。,平面离散点控制曲线的形状,改变一个离散点的坐标,曲线的形状将随之改变(点对曲线具有整体控制性)。,曲线落在特征多边形的凸包之内,它比特征多边形更趋于光滑。,三、Bezier 曲线的特点,贝塞尔曲线属于“平均通过”式曲线。,2 贝塞尔曲线,3 B样条曲
10、线,B样条曲线是在Bezier 曲线基础上发展起来的一类曲线,它克服了Bezier 曲线整体控制性所带来的不便,最常用的是二次和三次B样条曲线。,一、二次B样条曲线1. 参数方程已知三个平面离散点P0、P1、P2,由这三点可以定义二次抛物线段,其参数矢量方程形式为:二次B样条曲线参数方程的矩阵形式为:,二次B样条曲线参数方程的矩阵形式:,二次Bezier曲线参数方程的矩阵形式:,二次B样条曲线参数方程的分量形式:,3 B样条曲线,分量形式为:,其中,2. 二次B 样条曲线的特点起点为P0、P1点的中点,并与线段P0P1相切;,3 B样条曲线,终点为P1、P2点的中点,并与线段P1P2相切;除起
11、点、终点外,中间点将曲线拉向自己。二次B 样条曲线为“平均通过式”曲线3. 多点时二次B 样条曲线的应用二次B 样条曲线是针对3个离散点设计的,如果多于3个离散点,则采用二次B 样条曲线进行分段拟合。假设有n+1个离散点,记为Pi(i = 0 , 1 , , n),采用二次B样条曲线进行分段拟合的过程是:以P0、P1、P2 为控制点绘制第1条二次B样条曲线;以P1、P2、P3 2 ; ; 以Pn-2、Pn-1、Pn n-1 ;,3 B样条曲线,6个离散点绘制二次B 样条曲线的情况如下图:,问题:如何使曲线始于P0而止于P5?,由于二次B 样条曲线在连接点处具有相同的切线,故多点的二次B 样条曲
12、线具有C 1级连续。,4. 二次B 样条曲线的边界处理(边界问题)思路:增加两点Ps、Pe;第1条曲线用Ps代替P0,最后一条曲线时用Pe代替最后一个点。,3 B样条曲线,按照上述方法处理后,可绘制始于起点而止于终点的二次B 样条曲线。,5.多点二次B样条曲线程序设计设计思想:,3 B样条曲线,参数存放点坐标的数组;点的个数;0,1区间等分数。,边界处理,计算方程系数,绘制B样条曲线,3 B样条曲线,二次贝塞尔曲线由3个平面离散点确定曲线特点多点时可进行分段拟合,连接点一般不光滑 二次B样条曲线由3个平面离散点确定曲线特点 多点时可进行分段拟合,连接点为C1级光滑边界问题,二、三次B样条曲线,
13、三个平面离散点确定一条二次B样条曲线,四个平面离散点则确定一条三次B样条曲线。,1.三次B样条曲线的参数表达式,矩阵形式:,分量形式:,3 B样条曲线,上式中,2.三次B样条曲线的特点,3 B样条曲线,设中点为:,曲线起点S位于 的中线 上,距 点 处;曲线终点E位于 的中线 上 , 距 点 处;,曲线起点切线平行于 , 终点切线平行于 ;,设四个离散点为P0、P1、P2、P3;,3 B样条曲线,为“平均通过式” 曲线。,3.多点三次B样条曲线的分段拟合,设已知n个平面离散点,记为Pi(i=1 , 2 , , n)。以P1、P2、P3、P4绘制第1条三次B样条曲线;以P2、P3、P4、P5绘制
14、第2条三次B样条曲线; 以Pn-3、Pn-2、Pn-1、Pn绘制第n-3条三次B样条曲线。用上述方法绘出的各段曲线自然衔接,具C 2级连续。,3 B样条曲线,4. 三次B样条曲线的边界处理 要使曲线起于始点,止于终点,必须对进行边界处理。思路:与二次B样条曲线类似,在两端各增加一个点;以新的点序列Ps、P0、P1、P2 、P3、Pe为控制点分别绘制三次B样条曲线。,5. 多点三次B样条曲线程序设计自学。,3 B样条曲线,4 抛物线调配曲线,前面介绍的Bezier 曲线和B样条曲线并不通过平面上所有已知的离散点,也就是说,它们是一种“平均通过”式曲线。如果要求曲线通过所有的已知点,上述两种方法就
15、不能使用,为此再介绍抛物线调配曲线,它是一条“点点通过”式曲线。 一、抛物线调配曲线的绘图原理设已知n个平面离散点Pi(i = 1 , 2 , , n),利用二次抛物线进行分段拟合:以P1、P2、P3为控制点绘制第一条过三点的抛物线段;,以P2、P3、P4为控制点绘制第二条过三点的抛物线段; 最后,以Pn-2、Pn-1、Pn为控制点绘制第n-2条过三点的抛物线段。每相邻两条抛物线段的相交部分会出现2条曲线段。,调配:对相交部分的2条曲线段进行合并(调配)处理。,4 抛物线调配曲线,抛物线调配曲线需要解决的问题:过三点的二次抛物线参数方程;相邻抛物线相交部分2条曲线段的调配(合并)方法;合并后连
16、接点的光滑问题。,4 抛物线调配曲线,二、过三点的抛物线参数方程已知三个平面离散点P0、P1、P2,那么由这三点定义的二次抛物线参数矢量方程为:条件为: t = 0时,抛物线经过P0点; t = 时,抛物线经过P1点,且切线矢量=P2-P0; t = 1时,抛物线经过P2点。二次抛物线参数方程的矩阵形式:,4 抛物线调配曲线,展开: 三、调配曲线的计算公式设已知n个平面离散点Pi(i = 1 , 2 , , n),依次取P1、P2、P3、 、Pn-2作为起点绘制过三点的抛物线,共绘出n-2条抛物线段。,4 抛物线调配曲线,第j 条抛物线参数方程为:,第j +1条抛物线的参数方程为:,4 抛物线
17、调配曲线,合并(调配)曲线取为第j条曲线与第j+1条曲线的加权平均。设权函数为:则调配(合并)曲线(起点为Pj+1、终点为Pj+2)的方程为:方程右边三个参数:T、t j、t j+1的取值范围为:,4 抛物线调配曲线,4 抛物线调配曲线,三个参数T、t j、t j+1的取值范围: T的范围:0T1 t j的范围:调配曲线合并的是第j条曲线的后半段,故0.5t j1 t j+1的范围:调配曲线合并的是第j+1条曲线的前半段,故0t j+10.5设参数 t 的范围为0t0.5,有:,调配曲线方程变为:再将前面S j和S j+1的方程代入,整理后得到:,上式称为抛物线调配曲线的参数方程。,4 抛物线
18、调配曲线,当j =1时,调配曲线位于P2、P3之间;当j =2时,调配曲线位于P3、P4之间;当j =n-3时,调配曲线位于Pn-2、Pn-1之间。因此,n个点可得到n-3条调配曲线,首尾两条没有调配。,4 抛物线调配曲线,如何利用调配方程对首尾两条进行调配?分别在首尾补上两点P0、Pn+1。依据补点后新的点序列P0、P1、Pn、Pn+1,可绘制n-1调配曲线。,4 抛物线调配曲线,如何确定P0、Pn+1的坐标?,对于P0点,满足:,对于Pn+1点,满足:,常设:,因此:P0=P2,Pn+1=Pn-1,同时,绘出的n-1条调配曲线在连接点处具有C 1级连续(证明略)。,4 抛物线调配曲线,来源
19、于早期的手工绘图:绘图员把一根富有弹性的细木条放在数据点的位置上,并施以力量,从而使木条弯曲通过每一个数据点,木条变形后的形态就是三次参数样条曲线。,5 三次参数样条曲线,由弹性力学理论可以证明:曲线近似为分段三次多项式,且在连接点处具有C 2连续。,绘制三次参数样条曲线的基本思路:首先,构建2点间曲线的三次多项式参数方程;然后,进行分段拟合,依次绘制相邻两点间的曲线段;最后,对各曲线段进行光滑连接处理(C 2连续)。主要问题: 构建曲线的三次多项式参数方程。,5 三次参数样条曲线,一、过两点的三次多项式参数方程设已知两点P1、P2,则过两点的曲线三次参数矢量方程为:,5 三次参数样条曲线,条
20、件为: t =0时通过P1点,且曲线段在该点的切矢量为P1; t =t1时通过P2点,且曲线段在该点的切矢量为P2。,5 三次参数样条曲线,条件为: t =0时通过P1点,且曲线段在该点的切矢量为P1; t =t1时通过P2点,且曲线段在该点的切矢量为P2。当 t =0 时,有 当 t =t1 时,有,5 三次参数样条曲线,解出B0、B1、B2、B3:将系数代入方程中整理,可得到:,5 三次参数样条曲线,上式即为过两点的三次多项式参数方程的矢量形式。 其分量形式为:,5 三次参数样条曲线,若有n个平面离散点Pi(i =1 , 2 , , n),进行分段拟合,每相邻两点之间使用一个三次多项式参数
21、方程进行曲线绘制,共有n-1个曲线段。一般情况下,对于其中由Pi、Pi+1两点构成的第 i 条曲线段的三次多项式参数方程可表示为:在这n-1个曲线方程中,涉及到P1、P2、 、Pn共n个切矢量。,5 三次参数样条曲线,二、n个切矢量的求解求解思路:利用相邻两条曲线段之间的连接具有C 2级光滑。设第i-1条曲线与第 i 条曲线相连:两条曲线在连接点 Pi 具有C 2级连续,即将两条曲线的参数方程代入,整理后可得到关系式:,5 三次参数样条曲线,设第i-1条曲线与第 i 条曲线相连,可得到关系式:n个点有n-1条曲线,每两条曲线可以得到一个关系方程,共有n-2个方程。需要对P1、P2、 、Pn共n
22、个切矢量求解,尚缺少两个方程。补充首尾两点P1、Pn的边界条件。,5 三次参数样条曲线,补充首尾两点P1、Pn的边界条件有三种方法: 固定端边界条件直接给定两端的切矢量P1、Pn。 抛物端边界条件两个端点的三阶导数为零,即 自由端边界条件两个端点的二阶导数为零,即由上页的n-2个方程和2个边界条件构成一个方程组,称之为切矢量方程组,对其求解可得到n个切矢量P1、P2、 、Pn的值。,5 三次参数样条曲线,切矢量方程组的求解可采用一般线性方程组的求解方法。教材采用追赶法,抛物线边界条件,详细求解过程略。最后可得到一个递推公式:,初始条件:,,,5 三次参数样条曲线,由Pi、Pi+1两点构成的三次
23、多项式参数方程:,绘制思路:将参数 t 的区间0 , ti 划分为 k 等分,每一等分 dt = ti / k,依次取t = dt , 2dt , 3dt , j*dt,利用方程计算对应各点的坐标,并用直线段依次连接各点。,对于n个点Pi(i =1 , 2 , , n),进行分段拟合,每相邻两点之间使用一个参数方程进行绘制。,5 三次参数样条曲线,5 三次参数样条曲线,三、三次参数样条曲线子程序设计,四、三次参数样条曲线绘图实例,在区间0, 2 上采集余弦曲线 y=cos(x)的9个坐标点:,5 三次参数样条曲线,本章小结, 贝塞尔曲线 B样条曲线 抛物线调配曲线 三次参数样条曲线,贝塞尔曲线
24、,二次贝塞尔曲线由3个平面离散点确定曲线特点多点时可进行分段拟合,连接点一般不光滑,B样条曲线,二次B样条曲线 由3个平面离散点确定 曲线特点 多点时可进行分段拟合,连接点为C1级光滑边界问题 三次B样条曲线 由4个平面离散点确定 曲线特点 多点时可进行分段拟合,连接点为C2级光滑边界问题,抛物线调配曲线,“调配”即“合并”由3个点所确定的二次抛物线对相邻抛物线相交部分的2条曲线进行加权平均多点时可进行分段拟合,相邻调配曲线的连接点具有C1级光滑首尾两条曲线的调配问题,三次参数样条曲线,由2点所确定的三次多项式曲线曲线特点多点时可进行分段拟合n个切矢量的求解(边界条件)连接点为C2级光滑,结 束,