《ch6三维形体的表》由会员分享,可在线阅读,更多相关《ch6三维形体的表(103页珍藏版)》请在金锄头文库上搜索。
1、第六章 三维形体的表示表示形体的两种模型实体的定义正则集合运算特征表示空间分割表示推移表示边界表示构造实体几何表示不规则形体的建模方法L系统ch6三维形体的表引 言三维图形在科学研究和工程技术中有着广泛的应用。在CAD中,需要对所设计的作品从不同的角度进行审视。计算机几何造型就是用计算机系统来表示、控制、分析和输出三维形体。所以几何造型是计算机图形学中一个十分重要的应用领域,它是CAD/CAM和CIMS系统的核心技术,也是用来实现计算机辅助设计的基本手段。几何造型的功能:n形体输入,即把形体从用户格式转换成计算机内部格式;n图形数据的存储和管理;n图形控制,如对形体进行平移、缩放、旋转等几何变
2、换;n图形修改,如应用集合运算、欧拉运算、有理B样条操作及其交互手段实现对形体局部或整体修改;n图形分析,如形体的容差分析,物质特性分析等;n图形显示输出,如消隐、光照、颜色的控制等;n询问形体的属性及其有关参数ch6三维形体的表形 体在计算机形体一般定义为六层拓扑结构,首先介绍在三维空间中基本术语的定义。形体形体(object)外壳外壳(shell)面面(face)环环(loop)边边(loop)顶点顶点(vertex) 曲线和直线曲线和直线方程方程 点的点的 几何坐标几何坐标ch6三维形体的表形 体体由封闭表面围成的有效空间称为体;一个形体Q是R3空间中非空、有界的封闭子集。其 边界(记为
3、Q) 是有限个面的并集,而外壳是形体的最大边界。一个单位立方体可定义为:(x,y,z)R3|0x1,0y1,0z1其中一个表面可表示为:(1,y,z)R3|0y1,0z1 必须注意:并没有规定形体必须是一个连续的封闭集合,目的是用这样的定义来扩大几何造型的域,使得形体可以由不连续的体素,或是仅有某些相交的形体组成。xzych6三维形体的表形 体面R3中非空、连续、共面且封闭的子集称为面F,其边界(记为F)是有限条线段的并集,Pt表示含有F的唯一平面。面是形体表面的一部分,且具有方向性.FPtch6三维形体的表形 体环由有序、有向边组成的面的封闭边界称为环,环中任意边都不能自交,相邻两条边共享一
4、个端点,环又分为内环和外环。内环是在已知面中的内孔或凸台面边界的环,其边按逆时针方向。外环是已知面的最大外边界的环,其边按顺时针方向,按这种方式定义,在面上沿着边的方向前进,面的内部始终在走向的右侧。ch6三维形体的表形 体边形体内两个相邻面的交界称为边,一条边有且仅有两个相邻面。两个端点确定一条边,这两个端点分别称为该边的起点和终点。假设Q是一个形体,E(Q)是形体边的集合,则在Q(形体的边界)中E(Q)满足下属条件的所有线段的集合:n边e的两个端点属于V(Q);n边e中没有一个内部点属于V(Q)(所有顶点的集合)n边e上每个点,都有两个不同的面,即存在两个面fi,fiQ使得边efifj;n
5、形体Q的边框线WF(Q)是由有序对(V(Q),E(Q)所组成。v1v2ef1f2ch6三维形体的表形 体点边的端点称为点,点不能出现在边的内部,也不能孤立地位于物体内、物体外或面内,顶点又是F(面边界)中两条不共线的线段的交点。v1v2ef1f2ch6三维形体的表形 体体素具有有限个参数定义,且简单的连续封闭的形体称为体素,如长方体、圆柱体、圆锥、球、环等。半空间集合P|F(P)0成为半空间,其中P为R3中的一点,F为一个平面,当F=0时,表示一个平面,这个平面的半空间可以由F(P)=ax+by+cz+d定义的平面加上在平面某一侧的所有点组成。显然一个长方体可以看成是6个平面半空间的交。几何信
6、息用来表示形体的几何性质和度量关系称为几何信息。拓扑信息用来表示形体之间的连接关系称为拓扑信息。ch6三维形体的表表示形体的两种模型数据模型n完全以数据描述n例如w用以8个顶点表示的立方体w以中心点和半径表示的球n以数据文件的形式存在n包括-特征表示、空间分割表示、推移表示、边界表示、构造实体几何表示等n进一步分为w线框模型w表面模型w实体模型ch6三维形体的表线框模型线框模型:将形体表示成一组轮廓线的集合。n一般地,画出了形体的棱线与轮廓线就能唯一地表示出来。如图,八个顶点可以定义一个长方体,但还不足以识别它,如果定义了棱线,则无论如何放置长方体都能唯一地表示了。对于多面体由于其轮廓线和棱线
7、通常是一致的,所以多面体的线模型更便于识别,且简单。e12v4v8s3e2e4e6e8e2e7e11e10e9e3e1v2v3v1v7v5v6s2s6s5s1s4ch6三维形体的表线框模型n优点:简单、处理速度快n缺点:1、对于非平面多面体,如圆柱、球等形体,其轮廓线随观察方向的改变而改变,无法用一组固定的轮廓线来表示它们。2、线框模型与形体之间不存在一一对应关系:它仅仅通过给定的轮廓线约束所表示形体的边界面,而在轮廓线之间的地方,形体的表面可以任意变化。3、没有形体的表面信息,不适于真实感显示,由此导致表示的形体可能产生二义性。ch6三维形体的表表面模型w表面模型n将形体表示成一组表面的集合
8、n如果把线框模型中的棱线包围的部分定义为面,所形成的模型便是表面模型。其数据结构是在线模型的基础上附加一些指针,有序地连接棱线。下图中表面编号表示第几个表面,表面特征表面是平面还是曲面。n形体与其表面一一对应,适合于真实感显示4顶点个数1起始指针0表面特征5表面编号14043032021连接指针属性顶点号14232341ch6三维形体的表表面模型缺点:不能有效的用来表示实体原因:1、表面模型中的所有面未必形成一个封闭的边界2、各个面的侧向没有明确定义,即不知道实体位于面的哪一侧ch6三维形体的表实体模型n实体模型w用来描述实体,主要用于CAD/CAMw包含了描述一个实体所需的较多信息,如几何信
9、息、拓扑信息,可以支持多种运算,如欧拉运算等。ch6三维形体的表表示形体的两种模型过程模型n以一个过程和相应的控制参数描述n例如w用一些控制参数和一个生成规则描述的植物n以一个数据文件和一段代码的形式存在n包括-粒子系统、L系统、迭代函数系统等ch6三维形体的表表示形体的两种模型模型分类ch6三维形体的表实体的定义 抽象带来的问题n计算机中表示的物体是无效的n不能够客观存在为什么要求客观存在nCAD/CAM的需求什么是客观存在(有效)实体的定义n具有一定的形状n具有封闭的边界(表面)n内部连通n占据有限的空间n经过运算后,仍然是有效的物体ch6三维形体的表实体的定义将三维物体看做一个点集,它由
10、内点和边界点共同组成。内点:具有完全包含于该点集的充分小的邻域边界点:不具有内点性质的点集ch6三维形体的表实体的定义 A是一个点集,定义点集的正则运算如下:i:取内点运算c: 取闭包运算正则运算ri A:A的全体内点组成的集合,称为A的内部c i A为A的内部的闭包的运算,是i A与其边界点的并集。ch6三维形体的表实体的定义正则点集n 称为A的正则点集n称A为正则点集,如果它满足问题:正则点集是实体?ch6三维形体的表实体的定义-举例说明阴影部分:物体的内部区域黑色部分:边界(a)图取内点-(b)图求闭包-(c)图正则运算:去除与物体维数不一致的悬挂部分或孤立部分。ch6三维形体的表实体的
11、定义实体的定义可计算的条件n正则点集n表面是二维流形二维流形n其上任意一点存在充分小的领域与圆盘同构(存在连续的一一映射)ch6三维形体的表正则集合运算为什么需要正则集合运算n正则集合运算是构造复杂物体的有效方法正则集合运算是构造复杂物体的有效方法n普通的集合运算会产生无效物体n(b):ABn(c):普通ABn(d):正则ABch6三维形体的表正则集合运算集合运算(并、交、差)是构造形体的基本方法。正则形体经过集合运算后,可能会产生悬边、悬面等低于三维的形体。Requicha在引入正则形体概念的同时,还定义了正则集合运算的概念。正则集合运算保证集合运算的结果仍是一个正则形体,即丢弃悬边、悬面等
12、。ch6三维形体的表正则集合运算正则集合运算的定义n正则并n正则交n正则差ch6三维形体的表 任一实体S可以用它的边界bS和它的内部iS来表示,即 S=bS iS 由实体的定义可知,bS是封闭的,它将整个三维空间分成了三个区域: S的内部iS , S的边界bS ,S的外部eS。边界bS与实体S是一一对应的。确定了边界,也就唯一确定了一个实体。 因此,为了求实体A,B的正则集合运算结果A op* B,只要求出其边界b(A op* B)即可。 正则集合运算ch6三维形体的表正则集合运算考察A,B两物体的交所形成拼合体的边界,由于A,B为正则点集,它们均可表示为边界点与体内点的集合,即A=bA iA
13、 ; B=bB iB A物体的边界 bA可按其位于B物体内、B物体上、B物体外而分别表示为 bA = (bAiB)(bAbB) (bAeB) 同理,bB = (bBiA)(bBbA)(bBeA) Ach6三维形体的表正则集合运算其中bA bB = bB bA是A与B的公共边界,它可以分成两部分: (bA bB)同侧、 (bA bB)异侧(bA bB)同侧由这样一些边界构成:A、B位于边界的同侧(bA bB)异侧由这样一些边界构成:A、B位于边界的异侧ch6三维形体的表正则集合运算对于A * B ,由交的定义可知:1)A、B两物体的边界位于对方内部的部分边界位于对方内部的部分,即bA iB 和b
14、B iA是b(A * B )的组成部分。2) A、B两物体的边界位于对方外部的部分边界位于对方外部的部分,即bA eB 和bB eA不是b(A * B )的组成部分。3)对于A、B的重合边界重合边界有: (bA bB)同侧属于b(A * B ); (bA bB)异侧不属于b(A * B ) 因此:b(A*B)=(bA iB) (bB iA)(bA bB)同侧ch6三维形体的表正则集合运算同理:b(A*B)=(bA eB) (bB eA)(bAbB)同侧b(A*B)=(bA eB) (bB iA)(bAbB)异侧ch6三维形体的表一些非正则形体的实例一些非正则形体的实例ch6三维形体的表为了能够
15、处理非正则形体,产生了非正则造型技术。九十年代以来,基于约束的参数化、变量化造型和支持线框、曲面、实体统一表示的非正则形体造型技术已成为几何造型技术的主流。ch6三维形体的表形体表示模型在实体模型的表示中,基本上可以分为分解表示、构造表示和边界表示三大类。1、分解表示将形体按某种规则分解为小的更易于描述的部分,每一小部分又可分为更小的部分,这种分解过程直至每一小部分都能够直接描述为止。ch6三维形体的表分解表示-空间位置枚举表示n形体空间细分为小的均匀的立方体单元。n用三维数组CIJK表示物体,数组中的元素与单位小立方体一一对应w当CIJK = 1时,表示对应的小立方体被物体占据w当CIJK
16、= 0时,表示对应的小立方体没有被物体占据ch6三维形体的表分解表示-空间位置枚举表示n优点w简单,可以表示任何物体w容易实现物体间的交、并、差集合运算w容易计算物体的整体性质,如体积等n缺点w占用大量的存储空间,如1024*1024*1024 = 1G bitsw物体的边界面没有显式的解析表达式,不适于图形显示w对物体进行几何变换困难,如非90度的旋转变换w是物体的非精确表示ch6三维形体的表分解表示-八叉树表示八叉树表示n对空间位置枚举表示的空间分割方法作了改进:均匀分割 自适应分割n八叉树建立过程八叉树的根节点对应整个物体空间八叉树的根节点对应整个物体空间如果它完全被物体占据,将该节点标
17、记为如果它完全被物体占据,将该节点标记为F(Full),算法结束;算法结束;如果它内部没有物体,将该节点标记为如果它内部没有物体,将该节点标记为E(Empty),算法结束;算法结束;如果它被物体部分占据,将该节点标记为如果它被物体部分占据,将该节点标记为P(Partial),并将它分割成并将它分割成8个子立方体,对每一个子立方体进个子立方体,对每一个子立方体进行同样的处理行同样的处理ch6三维形体的表分解表示-八叉树表示8叉树的表示应用三维形体的分解,它对一个外接立方体的形体进行前后、左右、上下等部分8个小立方体,如果小立方体单元为满或为空,表示该立方体完全在形体中或完全不在形体中,则其停止分
18、解;对部分形体占有的小立方体需进一步分解为8个子立方体,直至所有小立方体单元要么全部满,要么全部空,或已分解到规定的分解精度为止。236720131375具有子孙的节点具有子孙的节点( (P)P)空节点空节点( (E)E)实节点实节点( (F)F)ch6三维形体的表分解表示-八叉树表示n优点w可以表示任何物体,且形体表示的数据结构简单w简化了形体的集合运算。只需同时遍历参加集合运算的两形体相应的八叉树,无需进行复杂的求交运算。w简化了隐藏线(或面)的消除,因为在八叉树表示中,形体上各元素已按空间位置排成了一定的顺序。w分析算法适合于并行处理。n缺点w没有边界信息,不适于图形显示w对物体进行几何
19、变换困难w是物体的非精确表示w占用大量存储。实际上,八叉树表示是以存储空间换取算法的效率ch6三维形体的表分解表示-线性八叉树表示线性八叉树:用一可变长度的一维数组来存储一棵八叉树。数组中仅存储八叉树的性质为FULL的终端结点。并用一个八进制数表示该结点在八叉树中的位置。编码方式为:Q1Q2Qm,其中Q1表示该结点所属的一级父结点的编号(0-7),以此类推。例右图为:1X,30X,31X,323X,33X 3 2031 75具有子孙的节点具有子孙的节点( (P)P)空节点空节点( (E)E)实节点实节点( (F)F)ch6三维形体的表分解表示-单元分解表示单元分解表示n对空间位置枚举表示的空间
20、分割方法作了改进:单一体素 多种体素n三种空间分割方法的比较w空间位置枚举表示-同样大小立方体粘合在一起表示物体w八叉树表示-不同大小的立方体粘合在一起表示物体w单元分解表示-多种体素粘合在一起表示物体ch6三维形体的表分解表示-单元分解表示n优点w表示简单w容易实现几何变换w基本体素可以按需选择,表示范围较广w可以精确表示物体n缺点w物体的表示不唯一w物体的有效性难以保证ch6三维形体的表构造表示扫描表示构造实体几何表示(CSG)特征表示ch6三维形体的表构造表示-推移表示将物体A沿着轨迹P推移得到物体B,称B为sweep体平移sweep-将一个二维区域沿着一个矢量方向推移ch6三维形体的表
21、构造表示-推移表示旋转sweep-将一个二维区域绕旋转轴旋转一周ch6三维形体的表 三维形体也能在空间通过扫描变换生成新的形体:如左图,一个圆柱体按指定方向在长方体上运动生成新的形体,这个过程犹如长方体与运动者的圆柱体不断的作差运算操作。有时经过扫描变换所生成的形体可能会出现维数不一致问题。构造表示构造表示- -推移表示推移表示扫描线方向扫描线方向U Uch6三维形体的表构造表示-推移表示广义sweepn任意物体沿着任意轨迹推移n推移过程中物体可以变形ch6三维形体的表构造表示-推移表示优点n表示简单、直观n适合做图形输入手段缺点n作几何变换困难n对几何运算不封闭n用扫描变换产生的形体可能出现
22、维数不一致的问题。n扫描方法不能直接获取形体的边界信息,表示形体的覆盖域非常有限。ch6三维形体的表构造表示-构造实体几何表示(CSG).通过对体素定义运算而得到新的形体的一种表示方法。体素可以是立方体、圆柱、圆锥等,也可以是半空间,其运算为变换或正则集合运算并、交、差。CSG表示可以看成是一棵有序的二叉树。w其终端节点或是体素、或是形体变换参数。w非终端结点或是正则的集合运算,或是变换(平移和/或旋转)操作,这种运算或变换只对其紧接着的子结点(子形体)起作用。ch6三维形体的表构造表示-构造实体几何表示(CSG)ch6三维形体的表构造表示-构造实体几何表示(CSG)CSG树是无二义性的,但不
23、是唯一的.CSG表示的优点:w数据结构比较简单,数据量比较小,内部数据的管理比较容易;w物体的有效性自动得到保证;wCSG方法表示的形体的形状,比较容易修改。ch6三维形体的表构造表示-构造实体几何表示(CSG)CSG表示的缺点:w对形体的表示受体素的种类和对体素操作的种类的限制,也就是说,CSG方法表示形体的覆盖域有较大的局限性。w对形体的局部操作不易实现,例如,不能对基本体素的交线倒圆角;w由于形体的边界几何元素(点、边、面)是隐含地表示在CSG中,故显示与绘制CSG表示的形体需要较长的时间。w表示不唯一 ch6三维形体的表构造表示-特征表示用一组特征参数表示一组类似的物体特征包括形状特征
24、、材料特征等适用于工业上标准件的表示ch6三维形体的表构造表示-特征表示n从应用层来定义形体,因而可以较好的表达设计者的意图。从功能上可分为形状、精度、材料和技术特征。n特征是面向应用、面向用户的。特征模型的表示仍然要通过传统的几何造型系统来实现。不同的应用领域,具有不同的应用特征。n在几何造型系统中,根据特征的参数我们并不能直接得到特征的几何元素信息,而在对特征及在特征之间进行操作时需要这些信息。n特征方法表示形体的覆盖域受限于特征的种类。ch6三维形体的表构造表示的特点构造表示的特点:n构造表示通常具有不便于直接获取形体几何元素的信息、覆盖域有限等缺点,n但是,便于用户输入形体,在CAD/
25、CAM系统中,通常作为辅助表示方法。ch6三维形体的表边界表示边界表示(BR表示或BRep表示)n按照体面环边点的层次,详细记录了构成形体的所有几何元素的几何信息及其相互连接的拓扑关系。n边界表示的一个重要特点是在该表示法中,描述形体的信息包括几何信息(Geometry)和拓扑信息(Topology)两个方面。w拓扑信息描述形体上的顶点、边、面的连接关系,拓扑信息形成物体边界表示的“骨架”。w形体的几何信息犹如附着在“骨架”上的肌肉。ch6三维形体的表边界表示边界模型表达形体的基本拓扑实体包括:n1. 顶点n2. 边。边有方向,它由起始顶点和终止顶点来界定。边的形状(Curve)由边的几何信息
26、来表示,可以是直线或曲线,曲线边可用一系列控制点或型值点来描述,也可用显式、隐式或参数方程来描述。ch6三维形体的表边界表示n3. 环。环(Loop)是有序、有向边(Edge)组成的封闭边界。环有方向、内外之分,外环边通常按逆时针方向排序,内环边通常按顺时针方向排序。n4.面。面(Face)由一个外环和若干个内环(可以没有内环)来表示,内环完全在外环之内。w若一个面的外法矢向外,称为正向面;反之,称为反向面。ch6三维形体的表边界表示w面的形状可以是平面或曲面。平面可用平面方程来描述,曲面可用控制多边形或型值点来描述,也可用曲面方程(隐式、显式或参数形式)来描述。对于参数曲面,通常在其二维参数
27、域上定义环,这样就可由一些二维的有向边来表示环,集合运算中对面的分割也可在二维参数域上进行。n5.体。体(Body)是面的并集。ch6三维形体的表边界表示边界表示模型是一种采用描述形体表面的方法来描述的几何表示模型。一个形体一般可以通过其边界拆成一些有界的“面”或“小片”的子集来表示,而每一个面又可以通过其边界的边和顶点来表示。若面的表示无二义性,则其边界表示模型也无二义性,但通常不一定只有唯一的表示。ch6三维形体的表边界表示的数据结构边界表示法的数据结构有四种方法:以面为基础、以顶点为基础、以边为基础和翼边结构;以面为基础的数据结构以面为基础的数据结构以面为基础,按照体、面、顶点坐标的树结
28、构层次组织元素数据;如面 顶点坐标F1 (X1Y1Z1,X2Y2Z2,X3Y3Z3,X4Y4Z4)F2 (X1Y1Z1,X2Y2Z2,X6Y6Z6,X5Y5Z5) .其中顶点按照外观顺时针顺序;ch6三维形体的表边界表示的数据结构2 2以顶点为基础的数据结构以顶点为基础的数据结构以顶点/坐标和面/顶点序列两张关系表表示,如:顶点 坐标 面 顶点序列V1 X1Y1Z1 F1 V1V2V3V4.3.3.以边为基础的数据结构以边为基础的数据结构以边/顶点,顶点/坐标,面/边三张关系表表示;ch6三维形体的表边界表示模型四棱椎边界表示的例子如右,由4个面组成,且这种表示可以看作是含有体、面、边、顶点为
29、节点的有向图四棱椎边界表示也可以基于边界的三角形分解,即把形体的边界拆成一些互不重叠的三角形。v1v2v3v4v5v2v3v4v5e1e2e3f1v1四棱柱四棱柱面节点面节点边节点边节点顶点坐标顶点坐标f1f2f3.e1e2e3e4.v1v2v3.(x1,y1,z1)组合组合结构结构坐标坐标信息信息.ch6三维形体的表边界表示的数据结构-翼边数据结构翼边数据结构:在1972年,由美国斯坦福大学Baumgart作为多面体的表示模式提出。n它用指针记录了每一边的两个邻面(即左外环和右外环)、两个顶点、两侧各自相邻的两个邻边(即左上边、左下边、右上边和右下边),用这一数据结构表示多面体模型是完备的,
30、但它不能表示带有精确曲面边界的实体。ch6三维形体的表边界表示的数据结构-翼边数据结构翼边结构由四种结点Solid , Face , edge和Vertex组成的,各结点描述如下: Solid 构成引用的根节点。在任意时刻,会存在几个数据结构引用;为了存取其中的任何一个,需要指向其Solid节点的指针。通过指向三个双向链表的指针,Solid 节点给出对该模型的面、边和顶点的访问。所有实体被链接到一个双向链表中,这个表通过指向该表的后继和前趋实体的指针来实现的。具体包括: ch6三维形体的表边界表示的数据结构-翼边数据结构Solid ID; 指向face的链表指针; 指向edge的链表指针; 指
31、向vertex的链表指针; ch6三维形体的表边界表示的数据结构-翼边数据结构Face 表示多面体的一个小平面,包括:Face ID ;指向face的链表首元素的指针; 指向face的下一元素的指针;ch6三维形体的表边界表示的数据结构-翼边数据结构Edge 由Edge节点构成,是整个数据结构的核心,每个Edge结点代表一条边,包括:Edge ID ;Edge的起始顶点指针;Edge的终止顶点指针;Edge的右邻面的指针;Edge的左邻面的指针;Edge的右方向向前邻边指针;Edge的右方向向后邻边指针;Edge的左方向向前邻边指针;Edge的左方向向后邻边指针;ch6三维形体的表边界表示的数
32、据结构-翼边数据结构Vertex 由vertex节点构成,包括:Vertex ID ;顶点坐标(x,y,z) ;指向与该vertex相连的第一条边指针;指向下一个Vertex结点指针;ch6三维形体的表边界表示的数据结构-半边数据结构半边数据结构,是在80年代提出的,作为一种多面体的表示方法。在构成多面体的三要素(顶点、边、面)中,半边数据结构以边为核心。一条边表示成拓扑意义上方向相反的两条“半边”,所以称为半边数据结构。其中各节点的数据结构及含义如下:ch6三维形体的表边界表示的数据结构-半边数据结构typedef float vector4;typedef short ID;typedef
33、 struct solid Solid ;typedef struct face Face ;typedef struct loop Loop ;typedef struct edge Edge ;typedef struct halfedge HalfEdge ;typedef struct vertex Vertex ;ch6三维形体的表边界表示的数据结构-半边数据结构多面体struct solid ID solidno; /多面体序号 Face *sfaces; /指向多面体的面; Edge *sedges; /指向多面体的边; Vertex *sverts;/指向多面体的顶点 Soli
34、d *nexts; /指向后一个多面体 Solid *prevs; /指向前一个多面体 ;ch6三维形体的表边界表示的数据结构-半边数据结构面Struct face ID faceno; /面序号 Solid *fsolid;/指向该面所属的多面体 Loop *floops; /指向构成该面的环 Vector feq; /平面方程 Face *prevf; /指向前一个面; Face *nextf; /指向后一个面; ;ch6三维形体的表边界表示的数据结构-半边数据结构环 struct loop HalfEdge *ledge; /指向构成环的半边 Face *lface ; /指向该环所属的
35、面 Loop *prevl; /指向前一个环 Loop *nextl; /指向后一个环 ch6三维形体的表边界表示的数据结构-半边数据结构边 struct edge ID edgeno; /边的序号 HalfEdge *he1; /指向左半边 HalfEdge *he2; /指向右半边 Edge *preve; /指向前一条边 Edge *nexte; /指向后一条边ch6三维形体的表边界表示的数据结构-半边数据结构半边 struct halfedge Edge *edge; /指向半边的父边 Vertex *vtx; /指向半边的起始顶点 Loop *wloop; /指向半边所属的环 Hal
36、Edge *prv; /指向前一条半边 HalfEdge *nxt; /指向后一条半边ch6三维形体的表边界表示的数据结构-半边数据结构顶点 struct vertex ID vertexno; /顶点序号 HalfEdge *vedge; /指向以该顶点为起 点的半边 Vector vcoord; /顶点坐标 Vertex *nextv; /指向前一个顶点 Vertex *prevv; /指向后一个顶点ch6三维形体的表欧拉运算和正则集合运算在边界表示法中,可以定义一系列运算来构造或修改三维实体,常用的这类运算有:欧拉运算正则集合运算ch6三维形体的表欧拉运算欧拉运算是三维物体边界表示数据结
37、构的生成操作。运用欧拉运算,可以正确、有效构建三维物体边界表示中的所有拓扑元素和拓扑关系。该运算之所以称为欧拉运算,是因为每一种运算所构建的拓扑元素和拓扑关系均要满足欧拉公式。ch6三维形体的表欧拉运算欧拉公式V:顶点数E:棱线数F:面数凡是满足欧拉公式的形体均称为欧拉形体欧拉公式是简单多面体的必要条件。附加条件: 每边连接两个顶点 每条边只被两个面共享等来保证有效性 至少要有三条边交于一个顶点。V-e+f=2ch6三维形体的表欧拉运算广义欧拉公式(P204)V-e+f-r=2(s-h)V:顶点数,E:棱线数,F:面数r: 多面体表面上孔的个数s: 相互分离的多面体数h: 贯穿多面体的孔洞个数
38、ch6三维形体的表欧拉运算若将广义欧拉公式 中的v,e,f,h,r,s分别看作独立的坐标变量,则上式在六维空间中定义了一张平面(平面是五维的),该平面通过原点。由于各坐标变量的取值只能是非负的整数,所以上式实际上对应了一张五维平面上的网格,每个多面体都对应一个网格点。但并不是每个网格都对应一个有效的多面体(只是必要条件)。如果要构造的多面体对应的网格点的坐标是( v,e,f,h,r,s ),那么构造该实体的过程就是从原点开始沿网格一步一步向这个坐标点前进的过程。由于网格上的每点都满足欧拉公式,最后的多面体也必然满足它。V-e+f-r=2(s-h)ch6三维形体的表欧拉运算前进的“走法”是多种多
39、样的,因为只有五个自由变量,所以只需五种基本走法就可以了。要求:每一步至多只能使某一坐标变量增(减)一个单位。每一步行走都有明显的几何意义。欧拉运算是对形体进行增加,删除点、边、面而生成的一个新的欧拉形的处理。最基本的五种欧拉运算是:n增加一条边和一个顶点;n增加一个面和一条边;n增加一条边, 一个面和一个顶点;n增加一条边和一个顶点;n增加一条边,且删除一个孔穴。ch6三维形体的表欧拉运算相应的五种补运算是:n删除一条边和一个顶点;n删除一个面和一条顶点;n删除一个体, 一个面和一个顶点;n删除一个孔洞和一个体;n删除一条边,且增加一个孔穴;任何一种欧拉形体(或欧拉运算)都可以用最基本的欧拉
40、运算的现行组合来表示。用最基本的欧拉运算操作生成的形体必定是一个欧拉形体。ch6三维形体的表正则集合运算通过对边界表示的物体做正则集合运算可以构造新的边界表示的物体。对具有平面边界、曲面边界的物体进行集合运算的算法有很多,算法的大致步骤如下: (1)预检查两物体是否相交 第一步:计算两个待求交物体的包围盒,若两包围盒不相交,则两物体不相交,正则集合运算结束,否则进行下一层。 第二步:计算两物体每一个表面片的包围盒,当某个面片的包围盒与另一物体的包围盒相交时,将该面片与另一物体的所有表面片一一求交,否则该面片与另一物体的所有表面片都无交。同样,只有在用边界盒法无法判断时才进行求交计算,从而避免许
41、多不必要的复杂的求交计算。 ch6三维形体的表正则集合运算(2)计算两物体各表面之间的交线。 由于物体表面均为有界表面,因此物体表面之间的交线是有界的直线或曲线。计算两物体表面之间的交线的一般步骤如下 a.基于两相交表面的方程,建立交线的方程,确定出初始交线。初始交线可能为无界。 b.分别确定初始交线位于两相交表面内部的部分。 c.计算位于两相交表面内部的两相交区段的重叠部分,即为两相交表面之间的真正交线。ch6三维形体的表(3)对物体的表面进行分类 两物体之间的交线将它们的表面分割成两部分,其中一部分落在拼合体的表面上,形成新的边界,另一部分位于拼合体内或拼合体外,应在集合运算最后一步予以删
42、除。(4)建立结果物体的边界表示。正则集合运算ch6三维形体的表边界表示Brep表示覆盖域大,原则上能表示所有的形体,而且易于支持形体的特征表示等,Brep表示已成为当前CAD/CAM系统的主要表示方法。Brep表示的优点是:n表示形体的点、边、面等几何元素是显式表示的,使得绘制Brep表示的形体的速度较快,而且比较容易确定几何元素间的连接关系;n容易支持对物体的各种局部操作,比如进行倒角。n便于在数据结构上附加各种非几何信息,如精度、表面粗糙度等。ch6三维形体的表边界表示Brep表示的缺点是:n数据结构复杂,需要大量的存储空间,维护内部数据结构的程序比较复杂;nBrep表示不一定对应一个有
43、效形体,通常运用欧拉操作来保证Brep表示形体的有效性、正则性等。ch6三维形体的表各种表示方法的比较精确性:能否精确的表示实体。特征表示-能够精确表示一个实体。构造实体几何表示-依赖于它所采用的基本体素,如果基本体素足够丰富,则能精确描述较大范围内的实体。边界表示-如果以多面体表示实体,则仅是一种近似表示;若允许曲面边界,则可以精确表示实体。推移表示-与边界表示类似。空间分割表示-近似表示一个实体。ch6三维形体的表各种表示方法的比较表示域:指一种表示法所能表示的实体的范围。表示域越大,表示能力越强。特征表示法、推移表示法:表示能力有限空间分割表示法:可以表示任何实体。边界表示法:理论上说,
44、可以表示所有实体。但若将边界表示法中的边界限制在某个范围之内(如平面多边形),则表示能力降低。实体构造表示法:依赖其基本体素的范围。ch6三维形体的表各种表示方法的比较唯一性:实体的表示形式唯一。只有空间位置枚举方法和八叉树具有唯一性。ch6三维形体的表各种表示方法的比较封闭性:若其表示域内的实体经过某种运算(如正则集合运算,几何变换)后,结果实体仍然落在表示域之内。特征表示:实体之间不能进行集合运算。简单推移表示,单元分解表示:不封闭。空间位置枚举表示,八叉树表示,CSG树表示封闭。边界表示虽然对正则集合运算不封闭,但可以附加约束条件避免。ch6三维形体的表各种表示方法的比较有效性:通常,边
45、界表示(包括推移表示)物体的有效性难以检验。特征表示的物体有效性自动得到保证。其它表示方法的有效性验证也比较简单。ch6三维形体的表各种表示方法的比较简洁性:空间分割表示:占用空间大特征表示、推移表示、CSG树表示较简洁。边界表示介于其间。ch6三维形体的表各种表示方法的比较输入:特征表示、推移表示、CSG树表示和单元分解表示都是面向用户的,只需输入少量参数,即可生成所需实体。空间位置枚举和八叉树表示很难由用户直接建立,一般都由其它表示形式转化过来。若采用边界表示作为输入手段,则一方面用户能方便的控制实体的形状,另一方面,需输入大量数据,且数据一致性很难保证。ch6三维形体的表各种表示方法的比
46、较输出:实体造型的输出包括图形、计算机辅助制造系统进行数控加工所需的数据以及实体的性质(重量、体积等)。图形显示和数控加工主要要求实体的边界信息,所以边界表示较好。若需实体性质等方面的计算,则空间分割表示、CSG树表示更好。ch6三维形体的表模型的考虑模型的考虑必须考虑以下一些问题:n根据形体边界给定的信息,是否能自动的获取形体的几何特征?n如何确定对形体操作数据的有效性?n形体的表示模型是否唯一?不同的表示模型是否可以转换?是否最佳表示模型?对于几何造型系统来说,按照不同的目的可以采用不同的最佳表示模型。ch6三维形体的表不规则形体的建模方法迭代函数系统基于文法的模型粒子系统动力系统ch6三
47、维形体的表L系统由生物学家Lindenmayer创立基本思想:n用文法表示植物的拓扑结构n通过图形学方法生成逼真的画面DOL系统(确定的上下文无关的L系统)n定义为三元组,其中V-表示字母集合V*-表示V上所有单词的集合w-是一个非空单词,称为公理P-产生式集合 ,使得如果没有明显的产生式,则令ch6三维形体的表L系统n例子-Koch 雪花曲线wV:F,+,-ww:FwP:F-F-F+F-Fw几何解释nF:向前画一条线n+:右转n-:左转 ch6三维形体的表L系统Bracketed L系统n增加如下两个字符:压栈:出栈n例子-植物w:FP:F-F+FF-FFch6三维形体的表L系统ch6三维形体的表