曲线曲面 从卫星的轨道、导弹的弹道,到汽车和飞机等的外形,直至日常生活中的图案和花样设计,都离不了对曲线的描述和绘制。可以说,几乎没有一张设计图纸上是没有曲线的。 在我们遇到的各种各样的曲线中,归纳起来,大概不外乎两类: 一类是曲线可以用一个标准的解析式来表示,称为曲线的方程。 第二类曲线的特点是,不能确切给出描述整个曲线的方程,它们往往是由一些从实际测量得到的一系列离散数据点来确定。这些数据点也称为型值点。
一、绘制曲线的基本方法 在平面直角坐标系内,如果一条曲线上的点都能符合某种条件,而满足该条件的点又均位于这条曲线上,那么可以把这种对应关系写成一个确定的函数式: 这个函数式就称为曲线的方程;同样,该曲线即为这个方程的曲线。如圆、椭圆、双曲线等的方程。 在绘制这些曲线的时候,可以借助于各种标准工具。如画圆可以用圆规等。但对于非圆曲线,绘制时的更一般方法是借助于曲线板。
先确定一些满足条件的、位于曲线上的坐标点,然后借用曲线板把这些点分段光滑地连接成曲线。绘出的曲线的精确程度,则取决于所选择的数据点的精度和数量,坐标点的精度高,点的数量取得多,则连成的曲线愈接近于理想曲线。 其实,上面所说的方法也就是用计算机来绘制各类曲线的基本原理。 由于图形输出设备的基本动作是显示像素点或者是画以步长为单位的直线段,所以,一般除了水平线和垂直线以外,其它的各种线条,包括直线和曲线,都是有很多的短直线段构成的锯齿形线条组成的。从理论上讲,绝对光滑的理想曲线是绘不出来的。
这就告诉了我们一个绘制任何曲线的基本原理,就是要把曲线离散化---把它们分割成很多短直线段,用这些短直线段组成的折线来逼近曲线。至于这些短直线段取多长,则取决于图形输出设备的精度。 在实际工程中经常会遇到这样的问题:由离散点来近似地决定曲线和曲面。如通过测量或实验得到一系列有序点列,根据这些点列需构造出一条光滑曲线,以直观地反映出实验特性、变化规律和趋势等。 通常,几何产品的几何形状大致可分为两类或由这两类组成:
一类由初等解析曲面,如平面、圆柱面、圆锥面、球面等组成,它们可以用画法几何与机械制图完全清楚地表达和传递所包含的全部形状信息。 另一类由以复杂方式自由变化的曲线曲面,即所谓的自由曲线曲面组成。如飞机、汽车、船舶的外形零件等。显然,这一类形状单纯用画法几何与机械制图是不能表达清楚的。 随着计算机的普及和应用,人们发现可以用数学方法惟一地定义自由曲线曲面的形状,由此导致了一门学科的诞生:计算机辅助几何设计CAGD(Computer Aided Geometric Design)
CAGD是综合了微分几何、代数几何、数值计算、逼近论、拓扑学以及数控技术等的一门边缘性学科。依据定义形状的几何信息可建立相应的曲线曲面方程,即数学模型。并在计算机上通过计算和处理程序,计算出曲线曲面上大量的点及其它信息。 实际上,在形状信息的计算机表示、分析与综合中,核心的问题是计算机表示,即需建立既适合于计算机处理,又有效地满足形状表示与几何设计要求,同时还便于进行形状信息传递和产品数据交换的形状描述的数学方法。计算机处理曲线曲面的内容是很丰富的,本章只讨论其中曲线曲面的表示与设计的基本方法。
二、曲线曲面基础 1、曲线曲面数学描述的发展 弗格森双三次曲面片 孔斯双三次曲面片 样条方法 Bezier方法 B样条方法 有理Bezier
2、曲线曲面的表示要求 唯一性 几何不变性 易于定界 统一性 易于实现光滑连接 几何直观
3、曲线曲面的表示 在解析几何中,空间曲线上一点p的每个坐标被表示为某个参数t的函数: 把三个方程合在一起,三个坐标分量就组成曲线上该点的位置矢量,曲线被表示为参数t的矢量函数: 它等价于笛卡儿分量表示: 这样,给定一个t值,就得到曲线上一点的坐标。
假设曲线段对应的参数区间为[a,b],即a≤t≤b。为方便起见,可以将区间[a,b]规范化成[0,1],所需的参数变换为: 该形式把曲线上表示一个点的位置矢量的各个分量合写在一起当成一个整体,考虑的是曲线上点之间的相对位置关系而不是它们与所取坐标系之间的相对位置关系。
4、插值和逼近样条 在绘图术语中,采用模线样板法表示和传递自由曲线曲面的形状称为样条。 样条曲线是指由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续条件。 样条曲面则可以用两组正交样条曲线来描述。
曲线曲面的拟合:当用一组型值点来指定曲线曲面的形状时,形状完全通过给定的型值点列。 曲线的拟合 曲线的逼近 曲线曲面的逼近:当用一组控制点来指定曲线曲面的形状时,求出的形状不必通过控制点列。
求给定型值点之间曲线上的点称为曲线的插值。 对于逼近样条,连接控制点序列的折线通常被显示出来,以提醒设计者控制点的次序。一般将连接有一定次序控制点的直线序列称为控制多边形或特征多边形。 5、连续性条件 当许多参数曲线段首尾相连构成一条曲线时,如何保证各曲线段在连接处具有合乎要求的连续性是一个重要问题。假定参数曲线段pi以参数形式进行描述: 这里讨论参数曲线两种意义上的连续性:参数连续性和几何连续性。
记作C0连续性,是指曲线的几何位置连接,即第一个曲线段在ti1处的x,y,z值与第二个曲线段在t(i+1)0处的x,y,z值相等: (1)参数连续性 0阶参数连续性: 记作C0连续性,是指曲线的几何位置连接,即第一个曲线段在ti1处的x,y,z值与第二个曲线段在t(i+1)0处的x,y,z值相等: i i+1
记作C1连续性,指代表两个相邻曲线段的方程在相交点处有相同的一阶导数(切线): 1阶参数连续性: 记作C1连续性,指代表两个相邻曲线段的方程在相交点处有相同的一阶导数(切线): i i+1
记作C2连续性,指两个相邻曲线段的方程在相交点处具有相同的一阶和二阶导数。类似地,还可定义高阶参数连续性。 2阶参数连续性: 记作C2连续性,指两个相邻曲线段的方程在相交点处具有相同的一阶和二阶导数。类似地,还可定义高阶参数连续性。 (a)0阶连续性 (b)1阶连续性 (c)2阶连续性 对于C2连续性,交点处的切向量变化率相等,即切线从一个曲线段平滑地变化到另一个曲线段。
(2)几何连续性 曲线段相连的另一个连续性条件是值几何连续性。与参数连续性不同的是,它只需曲线段在相交处的参数导数成比例即可。 0阶几何连续性,记作G0连续性,与0阶参数连续性的定义相同,满足: 1阶几何连续性,记作G1连续性,指一阶导数在相邻段的交点处成比例。 2阶几何连续性,记作G2连续性,指相邻曲线段在交点处其一阶和二阶导数均成比例。
6、样条描述 计算机图形学中研究最多的是样条参数多项式曲线,它是最简单、也是理论和应用最成熟的样条参数曲线。通常用下面的方程来描述n次参数多项式曲线: 将上面方程改写为矩阵形式:
三、三次样条 三次多项式方程是能表示曲线段的端点通过特定点且在连接处保持位置和斜率的连续性的最低阶次的方程。与更高次的多项式方程相比,三次样条只需要较少的计算和存储且较稳定。与低次多项式相比,三次样条在模拟任意曲线形状时更灵活。 给定n+1个点,可得到通过每个点的分段三次多项式曲线:
四、抛物样条曲线 1、抛物样条描述的由来 假设有一系列离散的型值点。现在要求用一条光滑的曲线把这些点连接起来,绘成曲线图形。 显然,由于这些型值点是经过实际的测量得到的,因此带有某些随机性,不可能用现有的任何一种曲线方程来描述这些由测量点所决定的曲线图形,所以寻找另外一种生成这样曲线的方法。 在拟合生成曲线的众多方法中,一般总要选择一种简单一些的曲线作为拟合生成其它曲线的基本曲线,然后对这种基本曲线作一些适当的数学处理,来生成完整的拟合曲线。
抛物样条曲线,顾名思义,就是选择抛物线这样一种较为简单的二次曲线作为基本曲线,来拟合给定离散型值点生成的曲线。 2、过三点定义一段抛物线 由于离散点的要求,首先要解决由给定点定义抛物线问题。 P1 P2 P3 设有不在同一直线上的三点:P1,P2,P3 ,现在要求通过该给定的三点定义一条抛物线。
假设采用矢量表达式来表示参数化的二次曲线,那么可以把抛物线的表达式写成如下的一般形式: (0 ≤t ≤1) 抛物线是一条二次曲线,所以参数t的最高次数为2。 只要确定了上式中的三个系数A1,A2和A3,那么就确定了抛物线的表达式,随之抛物线的曲线图形也就可以确定。 下面的工作是要通过设定一些已知条件来求出这三个系数。
要确定这三个系数,必须要有三个独立的条件。可以给定这三个独立条件为: 该抛物线过P1,P2和P3三个点,并且: (1)抛物线以P1点为始点。即当参变量t=0时,曲线 过P1点。 (2)抛物线以P3点为终点。即当参变量t=1时,曲线 过P3点。 (3)当参变量t=0.5时,曲线过P2点,且切矢量等于 P3-P1
在这三个设定的条件下,构造的抛物线如下图所示: P1 P2 P3 A Q t=0 t=1 t=0.5 P’2 A 点为P1P3的中点,抛物线在P1点处与P1Q相切,在P3点处与QP3相切,曲线在P2点处的切矢P’2与P1P3平行。 There is no backup here. Come on with other pictures.
根据以上设定的条件,可以列出三个方程: 解以上三个联立方程:
等式两边同乘4: 把上式回代到 得: 所以,通过解方程,得到三个系数A1,A2,A3分别为:
把求出的该三个系数的值,代入到抛物线表达式中,可得: 改写成矩阵形式为:
因为P(t)是一个点向量,在二维平面上它包含了两个坐标值[x(t) y(t)],故可写成如下形式:
五、Bezier曲线 1、Bezier 曲线的定义 Bezier曲线也是参数多项式曲线,它由一组控制多边形折线(控制多边形)顶点惟一地定义。
从上图中可以看出:在控制多边形的各顶点中,只有第一个和最后一个顶点在曲线上,其它的顶点则用以定义曲线的导数、阶次和形状。由于曲线的形状趋向于控制多边形的形状,所以改变多边形的顶点就会改变曲线的形状,这就使观察者对输入、输出关系有直观的感觉。 Bezier曲线的数学基础是能在第一个和最后一个顶点之间进行插值的一个多项式混合函数。 Bezier曲线段的参数方程表示如下:
这是一个n次多项式,具有n+1项。其中pk(xk,yk,zk),k=0,1,2… 这是一个n次多项式,具有n+1项。其中pk(xk,yk,zk),k=0,1,2….n是控制多边形的n+1个顶点;BENk,n(t)是Bernstein基函数,具有如下形式: 如果规定:00和0!均为1,那么当t=0时:
t=1 时: 从以上结果可以得出一个结论:曲线通过多边形折线的起点和终点!
2、一次Bezier曲线 n=1时,有两个控制点p0和p1,Bezier多项式是一次多项式: 于是,一次Bezier曲线是连接起点p0和终点p1的直线段。
3、二次Bezier曲线 n=2时,有3个控制点p0、p1和p2,Bezier多项式是二次多项式:
4、三次Bezier曲线(n=3) 三次Bezier曲线由4个控制点构成,这时n=3,有4个控制点P0、P1、P2和P3, Bezier多项式是三次多项式: 其中: 为三次Bezier曲线的基函数。
这四条曲线均是三次曲线,任何三次Bezier曲线都是这四条曲线的线形组合。 三次Bezier曲线四个Bezier基函数 t B3,3(t) B0,3(t) B2,3(t) B1,3(t) 这四条曲线均是三次曲线,任何三次Bezier曲线都是这四条曲线的线形组合。
把Bezier三次曲线多项式写成矩阵形式: 其中,Mbe是三次Bezier曲线系数矩阵,为常数;Gbe是4个控制点位置矢量。
5、绘制一段Bezier曲线 绘制Bezier曲线主要有以下步骤: ① 首先给出 的递归计算式: ② 将 表示成分量坐标形式:
6、Bezier曲线的拼接 可以用任意数目的控制点逼近出一条Bezier 曲线,但是高次Bezier曲线计算比较复杂,而且还有许多问题有待于理论上解决,所以一般不采用上述算法。 实际上,为构造复杂曲线,工程上往往使用分段三次Bezier样条曲线来描述,即将一段段的三次Bezier曲线首尾相连拼接起来。由于Bezier曲线通过端点,较容易获得0阶连续性,因此关键问题是如何保证连接处具有C1和C2连续性。
设有两Bezier曲线段P1(t)和P2(t),其控制多边形顶点分别为P0,P1,P2,P3和Q0,Q1,Q2,Q3,且P3=Q0。 为实现C1连续,则有:
四、实验曲线的绘制方法 1、最小二乘法 在科学研究中,通过实验或测量,可以获得大量的实验数据。一般在获得数据之后,对这些数据进行某种处理,然后绘成图形。 但由于实验本身会受到各种具体因素的影响,使得通过实验测得的数据或多或少地带有误差。也就是说,这些实验数据本身并不准确。因此如果仅仅是简单地将这些数据点连成曲线,那么这种看起来似乎很精确的方法恰恰是不符合实际情况的,也是不可取的。 正确的方法应该是用一条平滑的曲线以适当的方式来尽可能地靠近这些数据点,以弥补由于误差造成的数据点的跳动。
那么对于一系列的数据点(xi,yi)(i=1,2…n),所要绘制的曲线y=f(x),用什么样的标准来评价这条曲线是否处于较为合理的状态呢? 通常把数据点的坐标值与曲线上对应的坐标值之差ε作为评判的标准: εi:称为残差 f(xi):为理论值 yi:为相应的实测值 常用的评判方法是:使残差的平方和即 达到最小。这也就是所谓的最小二乘法。
用最小二乘法来绘制实验曲线,其实质也就是要找出一个经验方程y=f(x)用来描述这些点。所以,工作的第一步首先要根据已知数据点的分布情况进行一下预测,经验方程可能属于什么类型,比如说是线形函数,还是其它阶次的多项式函数。 2、用最小二乘法拟合直线 设有测得的一组数据点(xi,yi)(i=1,2…n)。根据这些数据点的分布情况,预测到它们之间呈线形关系: 那末,可按最小二乘法的原理建立起下面的式子:
(xi,yi)为测得的已知数据点的值,故这个方程是关于a1和a2的函数,即: 当a1和a2为何值时,该函数f(a1,a2)能取得极小值。这是一个二元函数的求极值问题,其条件为:
展开整理后得: 写成矩阵形式为: 求解该方程组可解出未知数a1和a2的值,从而使线形函数表达式: 成为已知,并可根据该表达式绘出图形。