版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实体表示与曲面造型第一页,共一百零六页,编辑于2023年,星期二第4章实体造型与曲线曲面三维实体表示基础三维实体表示方法三次参数曲线双三次参数曲面第二页,共一百零六页,编辑于2023年,星期二实体造型与曲面造型按照生成方法的不同,造型模型可以分为两类,一类为实体造型,是根据物体的几何结构和拓扑关系等信息定义而成的模型,另一类为自由曲线曲面造型,它是由模拟物体或现象形状的数学模型插值生成的模型。实体造型方法生成的零件汽车外壳为曲面造型第三页,共一百零六页,编辑于2023年,星期二4.1三维实体表示基础大多数复杂的图形需要采用一组由简单几何元素构成的集合来表示。4.1.1基本几何元素点是最基本的零维几何元素。二维空间中的点用二维坐标(x,y)来定义,主要表现为孤立点、线段的端点、线段的交点和多边形的顶点;三维空间中的点用三维坐标(x,y,z)来表示,主要表现为孤立点、线段的端点、多面体或三维空间多边形的顶点。第四页,共一百零六页,编辑于2023年,星期二4.1三维实体表示基础(续)4.1.1基本几何元素(续)边是是一维几何元素。一条边由其两个端点来确定。二维空间中的边表现为直线段和多边形的边。三维空间中的边主要表现为三维空间线段、三维形体的棱边或空间多边形的边界。折线及自由曲线都是由直线段拼接而成的,但一般不直接用边来表示,而是用顶点序列来表示。第五页,共一百零六页,编辑于2023年,星期二4.1三维实体表示基础(续)4.1.1基本几何元素(续)面是二维几何元素,包括多边形和带孔的区域。其中后者可以用外环加内环来组合表示,也可以用简单多边形拼接而成。在二维空间中,非自相交的多边形可以用其顶点序列来表示。在三维空间中,一般要将除三角形外的复杂多边形用三角形面片来拼接,以保证一个小面片内的各顶点能处在同一平面内。对于二次曲面和三次曲面,先要按照采样间隔将曲面离散化为相互拼接的简单平面片,再进行绘制。三维空间中的面片可以计算法矢量,可用于消隐和生成光照。第六页,共一百零六页,编辑于2023年,星期二4.1三维实体表示基础(续)4.1.1基本几何元素(续)
环是由有向边顺序组成的面的边界。环的边界不能自相交。环又分为内环和外环,内环用来表示多边形中的孔,外环表示多边形的外部边界。不包含内环的外环即可以表示普通多边形。一般规定,内环的边为顺时针排列,外环的边为逆时针排列,因此,无论内环或外环,环边的左侧总是面向环的内部。外环内环第七页,共一百零六页,编辑于2023年,星期二4.1三维实体表示基础(续)4.1.1基本几何元素(续)体是三维几何元素,是由封闭的表面围成的空间。体可以是简单体元,也可以是复杂形体,前者如四面体、三棱柱、圆柱、圆锥、长方体等。第八页,共一百零六页,编辑于2023年,星期二4.1三维实体表示基础(续)4.1.2几何信息与拓扑信息几何信息,用来描述物体的位置和大小。拓扑信息,用来描述点、棱边及面片之间的邻接关系,具体表现为棱边及面片的数据结构指向顶点的指针。对于用空间平面片表示其外部边界的三维物体(以下简称平面物体)而言,其点、边、面片之间的相互邻接关系有9种,即点→点、点→边、点→面、边→点、边→边、边→面、面→点、面→边、面→面。至少需要以上这9种关系中的2种的组合才能完整地构建一个平面物体,因此共有表示方法(或数据结构)。若存储的拓扑关系少时,需要存储空间少,但查找时间长;当存储的拓扑关系多时,占用存储空间大,但查找速度快。第九页,共一百零六页,编辑于2023年,星期二4.1三维实体表示基础(续)4.1.3实体定义要在计算机中构造一个物体,就要使这个物体不具有任何二义性。因此,首先要对实体的有效性做一个明确的定义,据此来判断所构造的物体是否为有效的实体。在70年代及以前更早的一段时期,没有关于三维物体表示和构造的严密理论,只能依靠人工来检查物体模型的有效性。当模型的复杂程序提高或实体模型经过了其它运算和处理后,人工检查模型的有效性就变得很困难了。第十页,共一百零六页,编辑于2023年,星期二4.1三维实体表示基础(续)4.1.3实体定义在70年代及以前更早的一段时期,没有关于三维物体表示和构造的严密理论,只能依靠人工来检查物体模型的有效性。当模型的复杂程序提高或实体模型经过了其它运算和处理后,人工检查模型的有效性就变得很困难了。要在计算机中构造一个物体,就要使这个物体不具有任何二义性。因此,首先要对实体的有效性做一个明确的定义,据此来判断所构造的物体是否为有效的实体。第十一页,共一百零六页,编辑于2023年,星期二4.1三维实体表示基础(续)4.1.3实体定义一个有效的实体应具有的性质如下:(1)刚性。一个实体必须有不变的形状。(2)具有封闭的边界,根据其边界可将空间分为内部和外部两部分。(3)内部连通。(4)占据有限的空间。(5)经过集合运算后,仍然是有效的实体。实体模型是最完善的模型定义,它能够表达全部的形状信息,如物体位置、面积、长度、体积、拓扑关联等,同时也定义了物体的并、交、差集合运算和欧拉运算等。第十二页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法4.2.1多边形表示边界表示是通过描述实体的边界来表示实体的方法,它是描述实体的最常用的方法。平面多面体是应用最广泛的实体表示法(也可以用曲面表示物体的边界),其边界为平面多边形。平面多面体也可以用来近似平滑曲面。第十三页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法4.2.1多边形表示平面多面体主要用顶点的坐标来表示几何信息,用点、边、多边形之间的索引关系来表示拓扑信息,便于图形中信息的查找。可以用点、边、面片三者之间共9种索引关系来表示平面多面体的拓扑关系。第十四页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法4.2.2多边形表示实体的边界能够唯一定义一个实体,即一个实体是否合法只要对其边界的拓扑关系进行判断就可以了。实体的边界需要满足以下条件:
(1)每条邻边必须要有两个已知坐标的端点;
(2)每条边只能被两个面共享;
(3)每个顶点至少被三个面或三个边所共享;
第十五页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法4.2.2多边形表示
边界表示的优点在于能够显式地表示形体边界,绘制时能快速计算法向和光照效果,算法简单;在不改变拓扑关系的前提下便于局部几何变换;便于多个形体做并、交、差等集合运算;可用欧拉公式来判断实体的有效正则性。第十六页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法4.2.2多边形表示1.欧拉公式简单多面体是指那些经过连续的几何形变可以变换为一个球的多面体,即这种多面体不存在贯穿多面体的孔。设简单多面体的顶点数、边数和面数分别用V、E、F表示,则存在如下关系:该公式说明了简单多面体中顶点数、边数及面数的关系。它是检查实体有效性的一个必要条件,而不是充分条件。第十七页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.2多边形表示(续)
某些图形可能满足欧拉公式,但并不符合实体的定义。V=10,E=15,F=7,显然满足欧拉公式。第十八页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.2多边形表示(续)
对于非简单多面体,以上欧拉公式不再成立,为此引入另外三个参数:形体表面上的孔数(H)、穿透多面体的洞数(G)、独立不相连接的多面体数©,则非简单多面体能满足下面的关系:这是扩展以后的欧拉公式,它反映了点、边、面、孔、洞、体数目之间的关系。需要注意的是,扩展后的欧拉公式也只能作为检查实体有效性的必要条件,不是充分条件。第十九页,共一百零六页,编辑于2023年,星期二V=8,E=12,F=6V=5,E=8,F=5V=6,E=12,F=8V=24,E=36,F=15,C=1,G=1,H=3V=16,E=24,F=11,C=1,G=0,H=1第二十页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.2多边形表示2.边界表示的常用数据结构下面给出一个表示三维物体的定义的数据结构实例,该实例中用到了边对点、边对面、面对边、面对点四种邻接关系。#include<vector>usingnamespacestd;classPoint{intid;//顶点编号,有时可以不要该成员
intx;//横坐标
inty;//纵坐标}vector<Point>Points;//存放Point对象的动态数组第二十一页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.2多边形表示classEdge{intedge_id;//边的编号,有时可以不要该成员
intBeginPoint;//为指向Points数组中对应边的起点的元素的索引
intEndPoint;//为指向Points数组中对应边的终点的元素的索引
intLeftFacet;//为指向Facets数组中对应此边左侧邻面的元素索引
intRightFacet;//为指向Facets数组中对应此边右侧邻面的元素索引}vector<Edge>Edges;//存放Edge对象的动态数组第二十二页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.2多边形表示classFacet{vector<int>vertices;//该面片边界顶点序列数组,其元素值为指向Points数组的指针
//该面片各边的数组,其元素值为指向Edges数组的指针
vector<int>edges;}vector<Facet>Facets;//存放Facet对象的动态数组第二十三页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.2多边形表示(1)翼边数据结构(WingedEdgesStructure)
翼边数据结构最早由美国Stanford大学的B.G.Baumgart等人提出来的。这种数据结构以边为核心,每条边的记录中设置指向其两顶点、左右两个邻面、上下左右四条邻边的指针(如图4-3)。而每个顶点的记录都设置指向以它作为端点的某一条边。每一个面的记录设置指向其一条边的指针。翼边数据结构便于快速而又简便地查找图形中各元素之间的拓扑关系,但它的存储信息量大,存储内容重复。第二十四页,共一百零六页,编辑于2023年,星期二棱边终点左上边起点左下边右下边右上边左侧多边形右侧多边形翼边数据结构第二十五页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.2多边形表示(2)对称数据结构(SymmetricalStructure)
对称数据结构中,显示地存放了面→边、边→面、边→点、点→边的4种拓扑关系,每个面记录中设置了指向它所有边的指针,同样,每条边记录中也设置了指向它两个邻面的指针和两个顶点的指针,每个点设置以它为端点的所有边的指针。这种数据结构的空间复杂度为6E,E为实体中的边数。第二十六页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.2多边形表示(续)(3)半边数据结构(HalfEdgeStructure)是20世纪80年代提出的一种多面体表示方法。该结构也是以边为核心,只是每一条边被表示成拓扑意义下的方向相反的两条“半边”。半边数据结构在拓扑上是由体-面-环-半边-顶点5个层次构成的层次结构,即实体由多边形(面)的组合来表示,而多边形由外环及内环组合而成,环又是半边构成的序列,每条半边又由两个顶点构成。可以规定,所有的外环均为逆时针顺序,内环均为顺时针顺序。“半边”的使用显著增强了图形的拓扑属性和层次感,使图形表示和图元查找十分方便。第二十七页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.2扫描表示扫描表示法是一种应用很广泛的三维物体表示方法,其基本原理是将空间中的一个点、一条边或一个面沿某一路径扫描,用得到的扫描轨迹来表示三维物体。扫描表示法需要定义扫描的物体及扫描运动的轨迹。扫描方法主要有三种:平移扫描、旋转扫描和广义扫描。平移扫描指物体沿某一直线方向平移一定距离旋转扫描指物体围绕某一轴线旋转一定角度广义扫描指物体沿某一空间曲线扫描一定距离第二十八页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.3构造实体几何表示构造实体几何法(ConstructedSolidGeometry,简称CSG法)是一种十分常用的实体构造方法。基本思想是将简单实体(又称体素)通过集合运算组合成所需要的物体。常用的体素可以通过边界表示法和扫描表示法生成,如长方体、正四面体、圆柱体、圆锥体、圆台体、八面体、轮胎体、球体等。体素还可以由多个半空间的集合运算来表示,半空间指一个无限大的平面将三维空间分成两个无限的区域。由多个基本体素集合运算得到的实体也可以作为构造更复杂形体的体素。第二十九页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.3构造实体几何表示
CSG法中集合运算的实现过程可以用一棵二叉树(称CSG树)来描述(如图4-5),二叉树的叶子结点表示体素或者几何变换的参数,非终端结点表示施加于其子结点上的实体集合运算或几何变换。二叉树的根结点表示的就是集合运算的最终结果。并平移距离平移差并第三十页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)
CSG法的优点:①覆盖域广泛;②输入方便,可直观地构造复杂形体;③数据结构简单,数据量小,用一棵二叉树即可表示;④形体的有效性可由实体集合运算得以自动保证。
CSG法也有其缺点:CSG法中的体素有很多是由参数和表面方程表示的。用表面方程及参数表示易于求交点,方便了集合运算,但运算后的中间结果就很难用方程及参数表示了,即增加了进一步参与集合运算的难度。不过,可以将集合运算的中间结果转化为边界表示,再进行集合运算和显示输出。CSG法中集合运算会破坏原有的点、边、面的显式拓扑关系。CSG法的体素只是有限的几种形状,对体素不能做局部变形操作,使CSG的表示能力受到限制。第三十一页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)4.2.4空间细分表示空间细分表示法包括体素表示法、八叉树表示法等。在体素表示法中,实体所占有的空间被划分为均匀的小立方体,即小立方体构成三维矩阵。小立方体也可以称作体素(voxel),这里的体素类似于图像中的像素(pixel)。如果事先给定体素的大小,则可以把体素抽象化为它的中心点。用体素表示的空间也被称作三维位图。体素表示法常用于物体的CT或MRI图像的三维重建。第三十二页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)下面是基于体素表示的三维重建图像(来源于VTK软件)。第三十三页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)八叉树表示法是一种层次结构的占有空间计数法,由二维图像压缩编码的四叉树法扩展而来,它是对体素表示法的一种压缩编码。可以将物体所在空间用一个立方体来表示。如果该立方体完全被物体占有,则该立方体可表示为“满”;如果立方体与物体不相交,则该立方体可表示为“空”;如果物体占有立方体的部分空间,则该立方体就等分为8个小立方体并对每个立方体编号,等分后的小立方体继续采用上面的规则编码为“空”或“满”,直到立方体的大小达到最小分辨率为止。第三十四页,共一百零六页,编辑于2023年,星期二4.2三维实体表示方法(续)八叉树模型及八叉树编码示意图第三十五页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线在工程上经常遇到的曲线和曲面有两种:简单曲线和曲面,如抛物线、双曲线、椭圆线等,可以用函数方程或参数方程直接给出;自由曲线,形状较为复杂,难以用二次方程描述,一般采用二次混合曲线或三次曲线。第三十六页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线4.3.1基本特性1.曲线的表示形式两类问题:如何由离散点决定曲线已知自由曲线的形状(即已知曲线上任意点的坐标),如何交互修改,使其满足要求。以上问题归结为三种处理:曲线拟合,即求通过给定点(称型值点)序列的曲线;曲线插值,即在已知曲线方程的基础上求曲线上所有的点的坐标;曲线逼近,求出形状接近给定点(称控制点)列的曲线,曲线可以不通过给定点。要解决这些问题就要确定自由曲线的数学表示形式。第三十七页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)参数方程是表示曲线或曲面的主要形式,用它表示曲线或曲面具有如下的优势:方程所描述的曲线的形状本质上与坐标系无关,即曲线的形状只决定于给定点列之间的关系。参数方程把所有坐标分量均作为参数的函数,使不含坐标值的自变量与所有因变量(各坐标分量)完全分开。容易确定曲线的边界。无论曲线有多长,其参数的区间都可以固定到一个范围,如一般采用规格化区间[0,1],其参数为0或为1就代表了曲线的边界。曲线的绘制简单。当参数t从0变化到1时,由t值求出的点序列组成的连线就是方程代表的曲线。易于变换。对参数方程表示的曲线或曲面进行几何变换或投影变换,只需要对方程的系数变换即可,计算量小。易于处理斜率无穷大的情形。非参数方程用斜率表示曲线的变化率,碰到斜率为无穷大的问题就不好解决;而参数方程采用切矢量来表示变化率,不会出现无穷大的情形。第三十八页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.1基本特性1.曲线的表示形式工程上所用到的曲线一般要求为平滑的样条曲线。样条曲线是由多项式曲线段连接而成的曲线,要求相邻线段的边界处满足特定的连续性条件。0阶连续,记为,是指两个相邻线段和在连接处的位置连续。1阶连续,是指相邻两个曲线段和不仅满足0阶连续,而且在连接处的一阶导数成正比。若在连接处方向相同,长度相等,记为,若方向相同,长度不等,记为。2阶连续,是指两个相邻曲线段不仅满足连续,而且满足条件。记为连续。当二阶导数在连处完全相同时,记为。第三十九页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.2Hermite曲线
Hermite曲线是通过给定曲线的两个端点的位置矢量P0、P1,以及两个端点处的切线矢量R0、R1来描述曲线的。1.三次Hermite曲线的参数方程三维空间中的自由曲线用三次参数方程表示可以用下面的形式:第四十页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)或改写为矩阵形式为若令,则求对参数t的一阶导数得则将t=0和t=1代入、得:第四十一页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)用矩阵方程表示为则Hermite常数矩阵Hermite几何矢量曲线也可表示为第四十二页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)因为上面的Q和Gh都是三维空间中的矢量,有x,y,z三个分量,将式(4-16)表示为分量形式为显然,只要给定Gh,就可以在0≤t≤1范围内求出Q(t),形成曲线上点的轨迹。T×Mh称为Hermite基函数。第四十三页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)2.三次Hermite曲线的调和函数对于不同的三次Hermite曲线,Hermite几何矢量不同,但Hermite基函数都相同。Hermite基函数的4个分量称为调和函数。也就是说,Hermite调和函数通过对P0、P1、R0、R1调和而成为曲线,即第四十四页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)3.切线矢量对Hermite曲线形状的影响如果令Hermite曲线的给定条件中的切线矢量R0和R1、分别为其中,,E0和E1分别为R0、R1的单位矢量。当切线矢量的长度k0和k1变化时,曲线的形状会受到影响。当某一矢量长度大时,Hermite曲线会随它延伸程度大,切线矢量就好像在此端点处对曲线施加的一种力,力越大,曲线受影响越大。第四十五页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.多条三次Hermite曲线的连接当用多段Hermite曲线表示自由曲线时,需要保证曲线的连接性,一般至少要保证连续。假设两条Hermite曲线H1和H2的边界条件Gh1和Gh2为已知,即
如果要在H1的终点和H2的起点之间再补一条Hermite曲线Hm,使连接处均为G1连续,就要满足下面的条件:第四十六页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)于是Hm的Hermite几何矢量为上面的a,b为正的比例因子。第四十七页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)5.三次Hermite曲线的绘制在平面上绘制二维Hermite曲线时首先要确定P0、P1、R0、R1,由于一般情况下给出两个端点处的切线矢量有些不太方便,因而限制了它的使用。但可以使用一些简单的方法给出其端点处的切线矢量。比如若只绘制一段Hermite曲线,可给出4个点P-1、P0、P1、P2,把P0、P1作为曲线的起点和终点,则切线矢量分别为第四十八页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)若要通过一组型值点绘制Hermite曲线连接而成的样条曲线,就需要给出所有型值点处的切线矢量,这通常采用“三点法”或“五点法”来解决。这里给出“三点法”的处理过程。假设点的切线方向与该点的两个相邻点、的连线方向一致,即点处的斜率为:第四十九页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)而斜率是切线矢量的y分量与x分量之比,即不妨令Rx为某一实数(如1.0),则可求出Ry,这样就确定了一个点处的切线矢量。另外,需要在型值点序列中的第一个点P0之前和最后一个点Pn之后各补充一个点,用来求P0、Pn处的切线矢量。如可令新增的点与原型值点满足以下的条件:(k为正的比例因子)则第五十页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)6.三次Hermite曲线的算法实例classPoint//点类{Doublex,y;Point(doublevx,doublevy){This.x=vx;This.y=vy;}Pointoperator–(Pointp)//重载运算符“-”{ReturnnewPoint(x-p.x,y-p.y);}}第五十一页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)6.三次Hermite曲线的算法实例(续)//在p1和p2之间绘制一条Hermite曲线,//p1-p0为p1处的切线矢量,p3-p2为p2处的切线矢量//参数区间[0,1]被离散为count份VoidHermiteCurve(Pointp0,Pointp1,Pointp2,Pointp3,intcount){Pointr1,r2;//切线矢量
r1=p1-p0;r2=p3-p2;//调用重载-doublet=0.0;dt=1.0/count;moveto(p1.x,p2.x);//设置起点
for(inti=0;i<count;i++){t+=dt;doubleF1,F2,F3,F4;//调和函数
F1=2*t*t*t-3*t*t+1;F2=-2*t*t*t+3*t*t;F3=t*t*t-2*t*t+t;F4=t*t*t-t*t;x=p1.x*F1+p2.x*F2+r1.x*F3+r2.x*F4;y=p1.y*F1+p2.y*F2+r1.y*F3+r2.y*F4;lineto(x,y);}}第五十二页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线Bezier曲线是由法国雷诺汽车公司的Bezier在1971年提出的一种构造样条曲线和曲面的方法。这种方法能够较直观地表示给定的条件与曲线形状的关系,使用户可以方便地通过修改参数来改变曲线的形状及阶次,而且算法较为简单,易于被用户接受。Bezier曲线是通过一组多边形折线的顶点来定义的。如果折线的顶点固定不变,则由其定义的Bezier曲线是唯一的。在折线的各顶点中,只有第一点和最后一点在曲线上且作为曲线的起始处和终止处,其他的点用于控制曲线的形状及阶次。曲线的形状趋向于多边形折线的形状,要修改曲线,只要修改折线的各顶点就可以了。多边形折线又称Bezier曲线的控制多边形,其顶点称为控制点。第五十三页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
1.Bezier曲线的定义
Bezier曲线在本质上是由调和函数根据控制点插值生成的,其数学表示式为如下的参数方程:这是一个n次多项式,具有n+1项。其中,Pi(i=0,1,…,n)表示特征多边形的n+1个顶点向量;Bi,n(t)为伯恩斯坦(Bernstein)基函数,它的多项式表示为i=1,2,…,n第五十四页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
1.Bezier曲线的定义
(1)一次Bezier曲线(n=1)一次多项式,有两个控制点,其数学表示及矩阵表示为:显然,这是一条连接P0、P1的直线段。第五十五页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
1.Bezier曲线的定义
(2)二次Bezier曲线(n=2)二次多项式,有三个控制点,其数学表示如下:由上式的结果可知,二次Bezier曲线为抛物线,图形如图4-11(a)。将上式改写为矩阵形式:第五十六页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
1.Bezier曲线的定义
(3)三次Bezier曲线(n=3)三次多项式,有四个控制点,其数学表示如下:其矩阵形式为第五十七页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
1.Bezier曲线的定义上面式中的Bernstein多项式构成了三次Bezier曲线的一组基,或称三次Beizer曲线的调和函数,即它们是图中所示的4条曲线。第五十八页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
2.Bezier曲线的性质(1)端点性质当t=0和t=1时,代入Hermite曲线公式可以得到这说明,Beizer曲线通过特征多边形的起点和终点。第五十九页,共一百零六页,编辑于2023年,星期二将Bernstein多项式对t求导,得第六十页,共一百零六页,编辑于2023年,星期二当t=0时,,其余均为0,故有:当t=1时,,其余均为0,故有:对于三次Bezier曲线,n=3,所以这说明,Bezier曲线在起点、终点与相应的控制多边形相切,且在起点和终点处的切线方向与控制多边形的第一条边和最后一条边的走向一致。第六十一页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
2.Bezier曲线的性质(续)(2)对称性由于,如果将控制点的顺序颠倒过来,记,则根据Beizer曲线的定义可推出:这说明,只要保持特征多边形的顶点位置不变,但顺序颠倒,所得新的Beizer曲线形状不变,只是参数变化的方向相反。第六十二页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
2.Bezier曲线的性质(续)(3)凸包性由于当t∈[0,1]时,Bernstein多项式之和且这说明Bi,n(t)构成了Beizer曲线的一组权函数,所以Bezier曲线一定落在其控制多边形的凸包之中。第六十三页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
2.Bezier曲线的性质(续)(4)几何不变性
几何不变性指Beizer曲线的形状不随坐标变换而变化的特性。Beizer曲线的形状只与各控制顶点的相对位置有关。因此,在对Bezier曲线进行几何变换时,不需要对曲线上的所有点都进行处理,只要先对各控制顶点进行几何变换,然后重新绘制曲线就可以了。第六十四页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
3.三次Bezier曲线的绘制//绘制由p0,p1,p2,p3确定的Bezier曲线//参数区间[0,1]被离散为count份VoidBezierCurve(Pointp0,Pointp1,Pointp2,Pointp3,intcount){doublet=0.0;dt=1.0/count;moveto(p1.x,p2.x);//设置起点
for(inti=0;i<count;i++){t+=dt;doubleF1,F2,F3,F4;//调和函数
doubleu=1.0–t;F1=u*u*u;F2=3*t*u*u;F3=3*t*t*u;F4=t*t*t;x=p0.x*F1+p1.x*F2+p2.x*F3+p3.x*F4;y=p0.y*F1+p1.y*F2+p2.y*F3+p3.y*F4;lineto(x,y);}第六十五页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
4.离散生成Beizer曲线的deCasteljau算法上面给出的Bezier曲线绘制算法完全是按照调和函数的方式写出的,其运算量较大。下面介绍的deCasteljau算法的效率高得多。对于n次Bezier曲线,t∈[0,1],deCasteljau算法用下面的迭代公式计算型值点Q(t):可以用数学规纳法证明,型值点就是。第六十六页,共一百零六页,编辑于2023年,星期二对于三次Bezier曲线,有这个计算过程如下图所示。其中横向箭头表示权重为1-t,斜向下的箭头表示权重为t。权重为1-t权重为t第六十七页,共一百零六页,编辑于2023年,星期二根据该算法的原理还可以手工绘制一段Bezier曲线。如下图:第六十八页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.3Bezier曲线(续)
5Beizer曲线的连接假设两段三次Bezier曲线S1和S2的控制点分别为P0、P1、P2、P3和Q0、Q1、Q2、Q3,讨论满足连续的条件。要满足这个条件,首先要满足C0连续,即只要P3和Q0为同一点即可。另外,已知端点处的对t一阶导数为和,二者成比例即为:比例因子上面表明,P2、P3(Q0)、Q1三点共线第六十九页,共一百零六页,编辑于2023年,星期二两段Bezier曲线的连接第七十页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线前面学过的Bezier曲线有几点不足:Bezier曲线的阶次是由特征多边形的顶点个数决定的,n个控制点产生n-1次的Bezier曲线;由于Bernstein调和函数在[0,1]区间内均大于等于0,在[0,1]的区间内修改任何一个控制点的位置会对整个Bezier曲线的形状有影响;1972年,deBoor和Cox分别提出了B样条的计算方法。1974年,美国通用汽车公司的Gorden和Riesenfeld提出了B样条曲线和曲面。B样条曲线除保持了Bezier曲线的直观性和凸包性等优点之外,还可以局部修改,曲线形状更趋近于特征多边形。B样条曲线可以连续光滑拼接,曲线的阶次与顶点数无关。第七十一页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线1B样条曲线的定义若给定m+n+1个顶点(m为最大段号,n为阶次),则第i段(i=0,1,…,m)、n次等距分割的B样条曲线函数为其中,基底函数Pi+l为定义第i段曲线的特征多边形的n+1个顶点。第七十二页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线
2二次B样条曲线及其性质二次B样条曲线中,n=2,l=1,2,3,可以得出其中为二次B样条曲线的3个调和函数。第七十三页,共一百零六页,编辑于2023年,星期二4.3.4B样条曲线
2二次B样条曲线及其性质(1)端点位置矢量将t=0和t=1代入二次B样条曲线公式得这表明二次B样条曲线的起点在P0P1的中点,终点在向量P1P2的中点。4.3三次参数曲线(续)第七十四页,共一百零六页,编辑于2023年,星期二4.3.4B样条曲线
2二次B样条曲线及其性质(2)端点切线矢量由二次B样条公式对t求导可得:将t=0和t=1代入得这表明二次B样条曲线在起点处的切矢量为P0P1,在终点处的切矢量为P1P2。4.3三次参数曲线(续)第七十五页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线
3三次B样条曲线及其性质三次B样条曲线中,n=3,l=1,2,3,4,可以得出其中构成了三次B样条曲线的4个调和函数。第七十六页,共一百零六页,编辑于2023年,星期二4.3.4B样条曲线
3三次B样条曲线及其性质用矩阵形式表示为4.3三次参数曲线(续)第七十七页,共一百零六页,编辑于2023年,星期二4.3.4B样条曲线
3三次B样条曲线及其性质(1)端点位置矢量分别将t=0和t=1代入上面的方程,可以得到其中:以上表明,三次B样条曲线的起点在的1/3处,终点在的1/3处。4.3三次参数曲线(续)第七十八页,共一百零六页,编辑于2023年,星期二第七十九页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线
3三次B样条曲线及其性质(2)端点处切线矢量对三次B样条曲线公式求导得:将t=0和t=1代入得以上表明,三次B样条曲线在起点处的切线矢量平行于P0P2,长度为其一半,终点处的切线矢量平行于P1P3,长度为其一半。第八十页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线
3三次B样条曲线及其性质(3)端点处的二阶导数对三次B样条曲线公式的一阶导数式继续求导得:将t=0和t=1分别代入得其中以上表明,三次B样条曲线在起点处的二阶导数矢量为的两倍,终点处的二阶导数矢量为的两倍.第八十一页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线
4程序实例//绘制由p0,p1,p2,p3确定的B样条曲线段//参数区间[0,1]被离散为count份VoidB_SpLine(Pointp0,Pointp1,Pointp2,Pointp3,intcount){ doublet=0.0; dt=1.0/count; moveto(p1.x,p2.x);//设置起点
for(inti=0;i<count;i++){ t+=dt; doubleF1,F2,F3,F4;//调和函数
doubleu=1.0–t; F1=-t*t*t+3*t*t–3*t+1;F2=3*t*t*t–6*t*t+4; F3=-3*t*t*t+3*t*t+3*t+1;F4=t*t*t; x=p0.x*F1+p1.x*F2+p2.x*F3+p3.x*F4; y=p0.y*F1+p1.y*F2+p2.y*F3+p3.y*F4; x/=6.0; y/=6.0; lineto(x,y);}}第八十二页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线5三次B样条曲线的边界条件假设给定一组控制点Pi,要求用三次B样条曲线拟合,要使曲线能够通过第一个控制点P0并切于P0P1,通过最末的控制点Pn并切于Pn-1Pn。解决的办法是在P0之前和Pn之后各补充一个点P-1和Pn+1,且保证P-1P0=P0P1和PnPn+1=Pn-1Pn。这是因为,对于第i=-1段曲线,当t=0时,有显然与已知条件相符合。第八十三页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线6反求B样条曲线的控制点
反求三次B样条曲线的控制点是指,已知曲线上的一组型值点Qi(i=0,1,…,n),要用一条三次B样条曲线依次通过这些点。显然,首要的问题就是找出一组与点列Qi对应的控制点序列Pi(i=0,1,2,…,n,n+1)。假定每个型值点Qi都是一段B样条曲线的Qi,3(0)起点,而与各控制点的关系是第八十四页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线6反求B样条曲线的控制点
显然,这是一组联立方程,左边为已知点,右边为待求控制点,共有n个方程。但未知数为n+2个,因此,仍需补充两个条件才有解。比如,补充的两个边界条件分别为:这样,只剩Pi(i=2,3,…,n-1)共n-2个未知数,写出求解控制点的线性方程组(n-2个方程)为:第八十五页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线7B样条曲线与Bezier曲线的相互转换设一段曲线作为三次Bezier曲线的控制顶点为P0,P1,P2,P3,作为B样条曲线的控制顶点为R0,R1,R2,R3。三次Bezier曲线的矩阵形式
可简写为第八十六页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线7B样条曲线与Bezier曲线的相互转换(续)三次B样条曲线的矩阵形式因二者表示同一条曲线,则有可简写为第八十七页,共一百零六页,编辑于2023年,星期二4.3三次参数曲线(续)4.3.4B样条曲线7B样条曲线与Bezier曲线的相互转换(续)则得到下面的关系
即即第八十八页,共一百零六页,编辑于2023年,星期二4.4双三次参数曲面自由曲线是由一系列曲线段如Hermite曲线段、Bezier曲线段、B样条曲线段连接而成的。类似的,空间自由曲面可以由一系列曲面片拼合而成。也就是说,曲面片是曲面的基本单元。每个曲面片都需要采用双参数的函数表示,即我们可以用三次参数方程表示曲面片,即这样的曲面片称为双三次曲面片。当参数u固定时,参数v从0到1变化会得到一组互不相交的曲线;同理,若参数v固定,而参数u从0到1变化会得到另一组互不相交的曲线。这两组曲线相交构成空间网格,所有交点的集合构成了曲面片。第八十九页,共一百零六页,编辑于2023年,星期二4.4双三次参数曲面第九十页,共一百零六页,编辑于2023年,星期二4.4双三次参数曲面4.4.1Coons曲面三次Coons曲面是以Hermite曲线的形式定义的。在曲面片上,当u=i时,从0到1变化会形成一条Hermite曲线。这条曲线是由Q(i,0)和Q(i,1)及这两点处的两个对的导数矢量和确定的,即而Q(i,0)和Q(i,1)只是顺着参数u方向的Hermite曲线。Q(i,0)是由顶点P00、P10及这两点处对u求导的切线矢量、确定的,即同理得第九十一页,共一百零六页,编辑于2023年,星期二4.4双三次参数曲面将上面的后两个式子代入第一个式子得:上式中最后两项对v求导展开,得第九十二页,共一百零六页,编辑于2023年,星期二4.4双三次参数曲面改为矩阵形式,得其中,于是,Coons曲面可以表示为第九十三页,共一百零六页,编辑于2023年,星期二4.4双三次参数曲面可见,只要给出C矩阵中的16个向量就可以确定一个双三次Coons曲面片,但给出这些参数难度较大,特别是4个扭矢,因此不太方便使用。如果令C矩阵中的扭矢为零,则C矩阵变为这样构造起来就容易多了。由这个矩阵构造的曲面片称为Ferguson曲面片,它能保证在连接边界上达到连续,能够在很多情况下满足要求。第九十四页,共一百零六页,编辑于2023年,星期二4.4双三次参数曲面4.4.2Bezier曲面与Bezier曲线类似,Bezier曲面片是由特征多面体的顶点决定的。给定(n+1)×(m+1)个点Pi,j(i=0,1,…,n;j=0,1,…,m),则可以生成一个次的Bezier曲面片,其表示形式为其中,Pij构成了Bezier曲面片的特征多面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年4季度试练习卷附答案
- 设备报价合同范例
- 2023年中级注册安全工程师之安全生产技术基础综合检测试卷B卷含答案 (一)
- 建筑 材20课件讲解
- 维修报价合同范例
- 泉州纺织服装职业学院《海洋生物技术原理及应用》2023-2024学年第一学期期末试卷
- 2023年中级注册安全工程师之安全生产技术基础题库练习试卷A卷附答案 (一)
- 曲靖师范学院《园林景观规划设计》2023-2024学年第一学期期末试卷
- 长期果蔬采购合同范例
- 建筑供水安装合同范例
- 教育机构课程顾问咨询流程
- 2024年学校意识形态工作总结模版(5篇)
- 6《记念刘和珍君》《为了忘却的纪念》说课稿 2024-2025学年统编版高中语文选择性必修中册
- 智能化住宅小区施工合同
- 葡萄酒文化与鉴赏学习通超星期末考试答案章节答案2024年
- 中国输配电设备行业现状动态与发展前景预测研究报告(2024-2030版)
- xx公路与天然气管道交叉方案安全专项评价报告
- 不合格药品、药品销毁管理制度
- 福建师范大学《歌曲写作》2023-2024学年第一学期期末试卷
- 医学教程 《疼痛与护理》课件
- 2023-2024学年天津市部分区八年级(上)期末物理试卷
评论
0/150
提交评论