三维形体的构造及表达

  实体造型技术的研究可以追到溯到六十年代初期,不过,直到六十年代
后半期,有关实体造型的报道仍然很少。七十年代初期,出现了一些实体造
型系统,如英国剑桥大学的BUILD-1系统,德国柏林工业大学的COMPAC系统,
日本北海道大学的TIPS-1系统和美国罗切斯特大学的PADL-1、PADL-2系统
等。   
   
  这些早期的实体造型系统有一个共同的特点:不支持精确的曲面表示,
用多面体表示形体。多面体模型的优点是数据结构相对简单,集合运算、明
暗图的生成和显示速度快。但是,同一系统中存在两种表示:精确的曲面表
示和近似的多面体逼近,违背了几何定义唯一性原则;而且,曲面形体使用
多面体模型只是近似表示,存在误差,若要提高表示精度时,就需要增加离
散平面片的数量,庞大数据量影响计算速度和计算机的存储管理,也是难以
接受的。显然,要为了解决这个问题,就需要在几何造型系统中采用精确的
形体表示模型。      
   
  六、七十年代,雕塑曲面的研究取得了很大的进展,Coons曲面、Bezier
曲线和曲面、B样条曲线和曲面等设计方法相继提出,并在汽车、航空和造
船等行业得到了广泛的应用。曲面造型系统由于缺乏面片的连接关系,不仅
使曲面的交互修改非常复杂,而且也难于构造封闭的形体。实体造型系统则
由于不能有效地处理复杂曲面,也使其几何造型的覆盖域受到了很大的限制。
自然,如何构造能够精确表示形体的几何造型系统,成了人们研究的目标。
1978年,英国Shape Data公司推出了实体造型系统Romulus,并首次引入了
精确的二次曲面,二次曲面的表示采用了代数方程的形式。       
   
  八十年代末,出现了NURBS曲线曲面设计方法,已有的曲线曲面表示方
法,如Bezier方法、B样条方法等,可以用NURBS方法统一表示,且能精确表
示二次曲线曲面。由于NURBS的强大的表示能力,能够精确表示形体的几何
造型系统,纷纷采用了NURBS方法,国际标准化组织也已将NURBS作为定义工
业产品形状的唯一数学方法。    
   
  早期的几何造型系统还有一个特点,就是只支持正则的形体造型。正则
形体集(R-Set)的概念由罗切斯特大学Requicha引入造型系统,并为几何
造型奠定了初步的理论基础。 
   
  为了描述正则形体,引入了二维流形(2-manifold)的概念。所谓二维
流形是指这样一些面,其上任一点都存在一个充分小的邻域,该邻域与平面
上的圆盘是同构的,即在该邻域与圆盘之间存在连续的1-1映射。  
   
  对于任一形体,如果它是3维欧氏空间中非空、有界的封闭子集,且
其边界是二维流形(即该形体是连通的),我们称该形体为正则形体,否则
称为非正则形体。图3.2.1给出了一些非正则形体的实例。  
 
   
  基于正则形体表示的实体造型形体只能表示正则的三维“体”,低于三
维的形体是不能存在的。这样,线框模型中的“线”,表面模型中的“面”,
都是实体造型系统中所不能表示的。但在实际应用中,有时候人们希望在系
统中也能处理象形体中心轴、剖切平面这样低于三维的形体,这就要求造型
系统的数据结构能统一表示线框、表面、实体模型。    
   
  集合运算(并、交、差)是构造形体的基本方法,正则形体经过集合运
算后,可能会产生悬边、悬面等低于三维的形体,如图3.2.2所示。Requicha
在引入正则形体概念的同时,还定义了正则集合运算的概念,正则集合运算
保证集合运算的结果仍是一个正则形体,即丢弃悬边、悬面等,如图3.2.3
所示。但是,这些信息在很多应用中是有用的,不能丢弃,这也要求几何造
型系统要能够表示边、面等低于三维的形体。即是说,几何造型系统要求能
够处理非正则形体,于是,产生了非正则造型技术。     
 
 
   
  九十年代以来,基于约束的参数化、变量化造型和支持线框、曲面、实
体统一表示的非正则形体造型技术已成为几何造型技术的主流。 
 
 3.6.2 形体表示模型 
 
  在实体模型的表示中,出现了许多方法,基本上可以分为分解表示、构
造表示和边界表示三大类。
 
  1.分解表示
   
  分解表示是将形体按某种规则分解为小的更易于描述的部分,每一小部
分又可分为更小的部分,这种分解过程直至每一小部分都能够直接描述为止。
分解表示的一种特殊形式是每一小的部分都是一种固定形状(正方形、立方体
等)的单元,形体被分解成这些分布在空间网格位置上的具有邻接关系的固定
形状单元的集合,单元的大小决定了单元分解形式的精度。根据基本单元的
不同形状,常用四叉树、八叉树和多叉树等表示方法。     
   
  分解表示中一种比较原始的表示方法是将形体空间细分为小的立方体单
元,与此相对应,在计算机内存中开辟一个三维数组。凡是形体占有的空间,
存储单元中记为1;其余空间记为0。这种表示方法的优点是简单,容易实现
形体的交、并、差计算,但是占用的存储量太大,物体的边界面没有显式的
解析表达式,不便于运算,实际上并未采用。    
   
  图3.2.4 是八叉树表示形体的一个实例。八叉树法表示形体的过程是这
样的,首先对形体定义一个外接立方体,再把它分解成八个子立方体,并对
立方体依次编号为0,1,2,…,7。如果子立方体单元已经一致,即为满
(该立方体充满形体)或为空(没有形体在其中),则该子立方体可停止分
解;否则,需要对该立方体作进一步分解,再一分为八个子立方体。在八叉
树中,非叶结点的每个结点都有八个分支。八叉树表示法有一些优点,近年
来受到人们的注意。这些优点主要是:      
   
  (1)形体表示的数据结构简单。
   
  (2)简化了形体的集合运算。对形体执行交、并、差运算时,只需同
时遍历参加集合运算的两形体相应的八叉树,无需进行复杂的求交运算。
   
  (3)简化了隐藏线(或面)的消除,因为在八叉树表示中,形体上各
元素已按空间位置排成了一定的顺序。 
   
  (4)分析算法适合于并行处理。
   
  八叉树表示的缺点也是明显的,主要是占用的存储多,只能近似表示形
体,以及不易获取形体的边界信息等。 
 
 
  2.构造表示
   
  构造表示是按照生成过程来定义形体的方法,构造表示通常有扫描表示、
构造实体几何表示和特征表示三种。 
   
  • 扫描表示
   
  扫描表示是基于一个基体(一般是一个封闭的平面轮廓)沿某一路径运
动而产生形体。可见,扫描表示需要两个分量,一个是被运动的基体,另一
个是基体运动的路径;如果是变截面的扫描,还要给出截面的变化规律。图
3.2.5 给出了扫描表示的一些例子,(a)是拉伸体(扫描路径是直线),
(c)是回转体,(b)、(d)扫描体的扫描路径是曲线,且(b)是等截面
扫描,(d)是变截面扫描。     
   
  扫描是生成三维形体的有效方法,但是,用扫描变换产生的形体可能出
现维数不一致的问题。如图3.2.6所示,其中(a)图表示一条曲线经平移
(扫描路径是直线)扫描变换后产生了一个表面和二条悬边;(b)图中一条
曲线经平移扫描变换后产生的形体是两个二维的表面间有一条一维的边相连;
(c)、(d)图中表示扫描变换的基体本身维数不一致,因而产生的结果形
体也是维数不一致且有二义性。另外,扫描方法不能直接获取形体的边界信
息,表示形体的覆盖域非常有限。      
 
 
 
  • 构造实体几何表示
  构造实体几何(CSG)表示是通过对体素定义运算而得到新的形体的一
种表示方法,体素可以是立方体、圆柱、圆锥等,也可以是半空间,其运算
为变换或正则集合运算并、交、差。  
   
  CSG表示可以看成是一棵有序的二叉树,其终端节点或是体素、或是形
体变换参数。非终端结点或是正则的集合运算,或是变换(平移和/或旋转)
操作,这种运算或变换只对其紧接着的子结点(子形体)起作用。每棵子树
(非变换叶子结点)表示其下两个节点组合及变换的结果,如图3.2.7所示。
三个叶子节点代表体素、和平移变换,两个中间节点为和
的运算结果,根节点表示了最终的形体,这里的体素和中间形体都是合法边
界的形体。几何变换并不限定为刚体变换,也可以是任意范围的比例变换和
对称变换。       
   
  CSG树是无二义性的,但不是唯一的,它的定义域取决于其所用体素以
及所允许的几何变换和正则集合运算算子。若体素是正则集,则只要体素叶
子是合法的,正则集的性质就保证了任何CSG树都是合法的正则集。  
   
  CSG表示的优点:
  1)数据结构比较简单,数据量比较小,内部数据的管理比较容易;

2)CSG表示可方便地转换成边界(Brep)表示;

3)CSG方法表示的形体的形状,比较容易修改。

   
  CSG表示的缺点:
   
  1)对形体的表示受体素的种类和对体素操作的种类的限制,也就是说,
 CSG方法表示形体的覆盖域有较大的局限性。
   
 

2)对形体的局部操作不易实现,例如,不能对基本体素的交线倒圆角;

   
  3)由于形体的边界几何元素(点、边、面)是隐含地表示在CSG中,故
显示与绘制CSG表示的形体需要较长的时间。 
 
 
  • 特征表示
   
  八十年代末,出现了参数化、变量化的特征造型技术,并出现了以Pro/
Engineering为代表的特征造型系统,在几何造型领域产生了深远的影响。
特征技术产生的背景是以CSG和Brep为代表的几何造型技术已较为成熟,实
体造型系统在工业界得到了广泛的应用,同时,用户对实体造型系统也提出
了更高的要求。人们并不满足于用点、线、面等基本的几何和拓扑元素来设
计形体,原因是多方面的,一是几何建模的效率较低,二是需要用户懂得几 
何造型的一些基本理论,很显然,用户更希望用他们熟悉的设计特征来建模。
   
  还有一个重要的原因是实体造型系统需要与应用系统的集成。以机械设
计为例,机械零件在实体系统中设计完成以后,需要进行结构、应力分析,
需要进行工艺设计、加工和检验等。用户进行工艺设计时,需要的并不是构
成形体的点、线、面这些几何和拓扑信息,而是需要高层的机械加工特征信
息,诸如光孔、螺孔、环形槽、键槽、滚花等,并根据零件的材料特性,加
工特征的形状、精度要求、表面粗糙度要求等,以确定所需要的机床、刀具、
加工方法、加工用量等,传统的几何造型系统远不能提供这些信息,以至CAD
与CAPP(计算机辅助工艺过程设计)成为世界性的难题。      
   
  由此可以看出,特征是面向应用、面向用户的,基于特征的造型系统如
图3.2.8所示。特征模型的表示仍然要通过传统的几何造型系统来实现。不
同的应用领域,具有不同的应用特征。一些著名的特征造型系统(如Pro/
Engineering)除提供了一个很大的面向应用的设计特征库外,还允许用户
自己定义自己的特征,加入到特征库中,为用户进行产品设计和使CAD与其
它应用系统的集成提供了极大的方便。     
 
   
  不同应用领域的特征都有其特定的含义,例如机械加工中,提到孔,我
们就会想到,是光孔,还是螺孔,孔径有多大,孔有多深,孔的精度是多少
等。特征的形状常用若干个参数来定义,如图3.2.9所示。圆柱和圆锥特征用
底面半径R和高度H来定义,方块特征用长度L,宽度W和高度H来定义。   
   
  所以,在几何造型系统中,根据特征的参数我们并不能直接得到特征的
几何元素信息,而在对特征及在特征之间进行操作时需要这些信息。特征方
法表示形体的覆盖域受限于特征的种类。  
 
   
  上面介绍了构造表示的三种表示方法,我们已经看到,构造表示通常具
有不便于直接获取形体几何元素的信息、覆盖域有限等缺点,但是,便于用
户输入形体,在CAD/CAM系统中,通常作为辅助表示方法。  
 
  3.边界表示
   
  图3.1.10给出了一个边界表示的实例。边界表示(Boundary Represen-
-tation)也称为BR表示或BRep表示,它是几何造型中最成熟、无二义的表
示法。实体的边界通常是由面的并集来表示,而每个面又由它所在的曲面的
定义加上其边界来表示,面的边界是边的并集,而边又是由点来表示的。边
界表示的一个重要特点是在该表示法中,描述形体的信息包括几何信息(Ge-
-ometry)和拓扑信息(Topology)两个方面,拓扑信息描述形体上的顶点、
边、面的连接关系,拓扑信息形成物体边界表示的“骨架”,形体的几何信
息犹如附着在“骨架”上的肌肉。例如形体的某个表面位于某一个曲面上,
定义这一曲面方程的数据就是几何信息。此外,边的形状、顶点在三维空间
中的位置(点的坐标)等都是几何信息,一般说来,几何信息描述形体的大
小、尺寸、位置、形状等。          
   
  在边界表示法中,边界表示就按照体-面-环-边-点的层次,详细记
录了构成形体的所有几何元素的几何信息及其相互连接的拓扑关系。在进行
各种运算和操作中,就可以直接取得这些信息。  
   
  Brep表示的优点是:
   
  (1)表示形体的点、边、面等几何元素是显式表示的,使得绘制Brep
表示的形体的速度较快,而且比较容易确定几何元素间的连接关系;
   
  (2)容易支持对物体的各种局部操作,比如进行倒角,我们不必修改
形体的整体数据结构,而只需提取被倒角的边和与它相邻两面的有关信息,
然后,施加倒角运算就可以了;  
   
  (3)便于在数据结构上附加各种非几何信息,如精度、表面粗糙度等。
 
  Brep表示的缺点是:
   
  (1)数据结构复杂,需要大量的存储空间,维护内部数据结构的程序
比较复杂;  
   
  (2)Brep表示不一定对应一个有效形体,通常运用欧拉操作来保证Brep
表示形体的有效性、正则性等。 
   
  由于Brep表示覆盖域大,原则上能表示所有的形体,而且易于支持形
的特征表示等,Brep表示已成为当前CAD/CAM系统的主要表示方法。 
 
 
 3.6.3 形体的边界表示模型  
 
  用边界表示法建立三维形体时,经常用到欧拉操作与集合运算,本小节
我们对边界表示的数据结构、欧拉操作及集合运算作一个简单的介绍。
 
  3.6.3.1 边界表示的基本实体  
 
  我们已经知道,边界模型由几何信息和拓扑信息两部分组成,表达形体
的基本拓扑实体(Entity)包括: 
   
  1. 顶点
   
  顶点(Vertex)的位置用(几何)点(Point)来表示。一维空间的点
用一元组{t}表示;二维空间中的的点用二元组{x,y}或{x(t),y(t)}表示;
三维空间中的点用三元组{x,y,z}或{x(t),y(t),z(t)}表示。n维空间中的点
在齐次坐标下用n+1维表示。点是几何造型中的最基本的元素,自由曲线、
曲面或其它形体均可用有序的点集表示。用计算机存储、管理、输出形体的
实质就是对点集及其连接关系的处理。  
   
  在正则形体定义中,不允许孤立点存在。
 
  2. 边
   
  边(Edge)是两个邻面(对正则形体而言)、或多个邻面(对非正则形体
而言)的交集,边有方向,它由起始顶点和终止顶点来界定。边的形状
(Curve)由边的几何信息来表示,可以是直线或曲线,曲线边可用一系列
控制点或型值点来描述,也可用显式、隐式或参数方程来描述。   
 
  3. 环
   
  环(Loop)是有序、有向边(Edge)组成的封闭边界。环中的边不能相
交,相邻两条边共享一个端点。环有方向、内外之分,外环边通常按逆时针
方向排序,内环边通常按顺时针方向排序。  
 
  4. 面
   
  面(Face)由一个外环和若干个内环(可以没有内环)来表示,内环完
全在外环之内。根据环的定义,在面上沿环的方向前进,左侧总在面内,右
侧总在面外。面有方向性,一般用其外法失方向作为该面的正向。若一个面
的外法矢向外,称为正向面;反之,称为反向面。面的形状(Surface)由
面的几何信息来表示,可以是平面或曲面,平面可用平面方程来描述,曲面
可用控制多边形或型值点来描述,也可用曲面方程(隐式、显式或参数形式)
来描述。对于参数曲面,通常在其二维参数域上定义环,这样就可由一些二
维的有向边来表示环,集合运算中对面的分割也可在二维参数域上进行。      
 
  5. 体
   
  体(Body)是面的并集。在正则几何造型系统中,要求体是正则的,非
正则形体的造型技术将线框、表面和实体模型统一起来,可以存取维数不一
致的几何元素,并可对维数不一致的几何元素进行求交分类,从而扩大了几
何造型的形体覆盖域。  
 
  3.6.3.2 边界表示的数据结构 
 
  在实体造型的研究中,有不少边界表示的数据结构相继提出,比较著名
的有半边数据结构、翼边数据结构、辐射边数据结构等。 
   
  其中翼边数据结构是在1972年,由美国斯坦福大学Baumgart作为多面体
的表示模式而被提出来的,它是基于边表示的数据结构,如图3.2.11所示。
它用指针记录了每一边的两个邻面(即左外环和右外环)、两个顶点、两侧
各自相邻的两个邻边(即左上边、左下边、右上边和右下边),用这一数据
结构表示多面体模型是完备的,但它不能表示带有精确曲面边界的实体。    
 
   
  为了表示非正则形体,1986年,Weiler提出了辐射边(Radial Edge)
数据结构,如图3.2.12所示。辐射边结构的形体模型由几何信息(Geometry)
和拓扑信息(Topology)两部分组成。几何信息有面(face)、环(loop)、
边(edge)和点(vertex),拓扑信息有模型(model)。  
   
  区域(region)、外壳(shell)、面引用(face use)、环引用(loop
use)、边引用(edge use)和点引用(vertex use)。这里点是三维空间
的一个位置,边可以是直线边或曲线边,边的端点可以重合。环是由首尾相
接的一些边组成,而且最后一条边的终点与第一条边的起点重合;环也可以
是一个孤立点。外壳是一些点、边、环、面的集合;外壳所含的面集有可能
围成封闭的三维区域,从而构成一个实体;外壳还可以表示任意的一张曲面
或若干个曲面构成的面组;外壳还可以是一条边或一个孤立点。外壳中的环
和边有时被称为“线框环”和“线框边”,这是因为它们可以用于表示形体
的线框图。区域由一组外壳组成,而模型由区域组成。图3.2.11是用辐射边
数据结构表示的一个形体模型,注意其中实体、面、线是用统一的数据结构
表示的。        
 
   
  清华大学国家CAD工程中心开发的几何造型系统GEMS5.0中,采用的数
结构如图3.2.14所示。 
 
 
该数据结构基于线框、表面、实体和特征统一表示,且具有以下特点: 
   
  1. 采用自顶向下的设计思想。在形体的表示上,遵循了从大到小,分解
表示的原则;  
   
  2. 支持非流形形体的表示;
   
  3. 实体拓扑数据与几何数据双链表连接,存放紧凑;
   
  4. 能够支持特征造型。
 
  3.6.3.3 欧拉操作 
 
  对于任意的简单多面体,其面(f)、边(e)、顶点(v)的数目满足公式:
v - e + f = 2.
   
  这就是著名的欧拉公式。对于任意的正则形体,引入形体的其它几个参
数:形体所有面上的内孔总数(r)、穿透形体的孔洞数(h)和形体非连通部分 
总数(s),则形体满足公式: v - e + f = 2(s-h) + r. 
   
  欧拉公式给出了形体的点、边、面、体、孔、洞数目之间的关系,在对形
体的结构进行修改时,必须要保证这个公式成立,才能够保证形体的有效性。
由此而构造出一套操作,完成对形体部分几何元素的修改,修改过程中保证各
几何元素的数目保持这个关系式不变,这一套操作就是欧拉操作。最为常用的
几种欧拉操作有:    
   
  (1).mvsf(v,f),生成含有一个点的面,并且构成一个新的体。
   
 

(2).kvsf,删除一个体,该体仅含有一个点的面。

   
 

(3).mev(v1,v2,e),生成一个新的点v2,连接该点到已有的点v1,构成一

条新的边。 
   
 

(4).kev(e,v),删除一条边e和该边的一个端点v。

   
 

(5).mef(v1,v2,f1,f2,e),连接面f1上的两个点v1、v2,生成一条新的边

e,并产生一个新的面。 
   
 

(6).kef(e),删除一条边e和该边的一个邻面f。

   
 

(7).kemr(e),删除一条边e,生成该边某一邻面上的一新的内环。

   
 

(8).mekr(v1,v2,e),连接两个点v1、v2,生成一条新的边e,并删除掉v1

和v2所在面上的一个内环。 
   
 

(9).kfmrh(f1,f2),删除与面f1相接触的一个面f2,生成面f1上的一个内

环,并形成体上的一个通孔。 
   
 

(10).mfkrh(f1,f2),删除面f1上的一个内环,生成一个新的面f2,由此

也删除了体上的一个通孔。 
 
 

为了方便对形体的修改,还定义了两个辅助的操作:

 
 

(11).semv(e1,v,e2),将边e1分割成两段,生成一个新的点v和一条新的

边e2。 
   
  (12).jekv(e1,e2),合并两条相邻的边e1、e2,删除它们的公共端点。
   
  以上十种欧拉操作和两个辅助操作,每两个一组,构成了六组互为可逆的
操作。
   
  可以证明:欧拉操作是有效的,即用欧拉操作对形体操作的结果在物理上
是可实现的;欧拉操作是完备的,即任何形体都可用有限步骤的欧拉操作构造
出来。  
   
  以上欧拉操作仅适用于正则形体,非正则形体已不再满足欧拉公式,但是
欧拉操作中对形体点、边、面、体几何元素作局部修改的原理仍然适用,Weiler
定义了扩展的欧拉操作来构造非正则形体,仍然把这一套操作形体拓扑结构的
方法叫作欧拉操作。    
 
  3.6.3.4 集合运算 
 
  集合运算是实体造型系统中非常重要的模块,也是一种非常有效的构造形
体的方法。从一维几何元素到三维几何元素,人们针对不同的情况和应用要求,
提出了不少集合运算算法。  
   
  在早期的造型系统中,处理的对象是正则形体,因此定义了正则形体集合
运算,来保证正则形体在集合运算下是封闭的。在非正则形体造型中,参与集
合运算的形体可以是体、面、边、点,运算的结果也是这些形体,这就要求集
合运算算法中能统一处理这些不同维数的形体,因此需要引入非正则形体运算。
 
  1.正则集与正则集合运算算子
   
  Tilove根据点集拓扑学的原理,给出了正则集的定义。认为正则的几何形
体是由其内部点的闭包构成,即由内部点和边界两部分组成。对于几何造型中
的形体,规定正则形体是三维欧氏空间中的正则集合,因此可以将正则几何形
体描述如下:  
   
  设G是三维欧氏空间中的一个有界区域,且G=bG∪iG,其中bG是G的
n-1维边界,iG是G的内部。G的补空间cG称为G的外部,此时正则形体G需满足:
   
  1)bG将iG和cG分为两个互不连通的子空间;

2)bG中的任意一点可以使iG和bG连通;

3)bG中任一点存在切平面,其法矢指向cG子空间

4)bG是二维流形。

   
  对于正则形体集合,可以定义正则集合算子。设<OP>是集合运算算子(交、
并或差),如果R3中任意两个正则形体A、B作集合运算: R=A<OP>B
   
  运算结果R仍是R3中的正则形体,则称<OP>为正则集合算子,正则并、正
则交、正则差分别记为∪*,∩*、-*。 
 
  2.分类
   
  几何造型中的集合运算实质上是对集合中的成员进行分类的问题,Tilove
给出了集合成员分类问题的定义及判定方法。 
   
  Tilove对分类问题的定义为:设S为待分类元素组成的集合,G为一正则集
合,则S相对于G的成员分类函数为: C(S,G)={S in G,S out G,S on G},
(3-2-1), 其中, S in G=S∩iG, S out G=S∩cG, S on G=S∩bG。
   
  如果S是形体的表面,G是一正则形体,则定义S相对于G的分类函数时,需
考虑S的法向量。记-S为S的反向面。形体表面S上一点P相对于外侧的法向量为
NP(S),相反方向的法向量为- NP(S),则(3-2-1)式中S on G可分为两种情

况:   S on G ={S shared(bG),S shared(-bG)},其中,

S shared(bG)={P|P∈S,P∈bG,NP(S)=NP(bG)},

S shared(-bG)={P|P∈S,P∈bG,NP(S)=-NP(bG)}。

 
于是,S相对于G的分类函数C(S,G)可写为:
   
  C(S,G)={S in G,S out G,S shared(bG),S shared(-bG)}。
   
  由此,正则集合运算定义的形体边界可表达为:
   
  b(A∪B)={bA out B,bB out A,bA shared(bB)},

b(A∩B)={bA in B,bB in A,bA shared(bB)},

b(A-B)={bA out B,-(bB in A),bA shared(-bB)}。

   
  3.集合运算算法
   
  正则集合运算与非正则形体运算的区别在于增加了正则化处理步骤。下面,
我们给出一个非正则形体的集合运算算法。 
   
  假定参与集合运算的形体为A和B,运算的结果形体C=A <op> B,其中集
合运算符<op>为通常的集合运算并、交、差(è 、? 、- )。 
   
  对于一个非正则形体L,可以将其分解为L=L3è L2è L1è L0,其中L3为R3
中的正则闭集之并,存在面表、边表、点表等拓扑元素。L2是悬面集,存在边
表和点表。L1是悬边集,只有端点。L0是孤立点集。  
   
  集合运算整个算法包括了以下几部分:
 
  (1)求交:参与运算的一个形体的各拓扑元素求交,求交的顺序采用低维
元素向高维元素进行。用求交结果产生的新元素(维数低于参与求交的元素)
对求交元素进行划分,形成一些子元素。这种经过求交步骤之后,每一形体产
生的子拓扑元素的整体相对于另一形体有外部、内部、边界上的分类关系。   
 
  (2)成环:由求交得到的交线将原形体的面进行分割,形成一些新的面环。
再加上原形体的悬边、悬点经求交后得到的各子拓扑元素,形成一拓扑元素生
成集。  
 
  (3)分类:对形成的拓扑元素生成集中的每一拓扑元素,取其上的一个代
表点,根据点/体分类的原则,决定该点相对于另一形体的位置关系,同时考
虑该点代表的拓扑元素的类型(即其维数),来决定该拓扑元素相对于另一形
体的分类关系。   
 
  (4)取舍:根据拓扑元素的类型及其相对另一形体的分类关系,按照集合
运算的运算符要求,要决定拓扑元素是保留还是舍去;保留的拓扑元素形成一
个保留集。  
 
  (5)合并:对保留集中同类型可合并的拓扑元素进行合并,包括面环的合
并和边的合并。 
 
  (6)拼接:以拓扑元素的共享边界作为其连接标志,按照从高维到低维的
顺序,收集分类后保留的拓扑元素,形成结果形体的边界表示数据结构。 
 
   
 
 

你可能感兴趣的:(数据结构,算法,存储,产品设计,终端,网格)