710官方网站探讨和剖析有限元网格划分的为主尺度,很多个人都在转业于三维数据模型的钻研

率先,探究和剖析有限元网格划分的中央尺度;其次,对脚下独立网格划分方法开展不易地分类,结合实例,系统地分析各样网格划分方法的机理、特点及其适用范围,如映射法、基于栅格法、节点连元法、拓扑分解法、几何分解法和扫描法等;再度,演说当前网格划分的研商热点,综述六面体网格和曲面网格划分技术;最后,展望有限元网格划分的发展趋势。

Delaunay Triangulation in
OpenCascade

2.6 三维空间数据模型及协会

近几年,很三个人都在致力于三维数据模型的钻研,就算有三维GIS系统问世,但其功用远远无法满足人们分析难点的须求。原因紧假如三维GIS理论不成熟,其拓扑关系模型一向尚未缓解,其它三维基础上的数据量很大,很难建立贰个一蹴而就的,易于编程完毕的三维数据模型。尽管如此,本节仍将介绍当前在三维GIS上所运用的两种数据模型。

3D空间构模方法讨论是日前3D GIS领域以及3D
GMS领域商量的热点难题。许多专家学者在此领域做了便于的追究。地质、矿山领域的一部分专家学者,围绕矿床地质、工程地质和矿山工程难题,对3D
GMS的空中营造难点展开了卓有功用的争辨与技能研讨,加拿大、澳大奇瓦瓦、United Kingdom、南非(South Africa)等国还一一推出了一批在矿山和工程地质领域得到推广应用的3D
GMS软件。

千古十来年中,商量指出了20余种空间构模方法。若不区分准-3D和真-3D,则可以将现有空间构模方法总结为基于面模型(facial
model)、基于体模型(volumetric model)和依照混合模型(nixed
model)的3大类构模连串,如表2-6所示(吴立新,2004)。

表2-6 3D空间构模法分类

面模型(facial model)

体模型(volumetric model)

混合模型

(mixed model)

规则体元

非规则体元

非不奇怪三角网(TIN)

结构实体几何(CSG)

四面体格网(TEN)

TIN-CSG混合

格网(Grid)

体素(Voxel)

金字塔(Pyramid)

TIN-Octree混合或Hybrid模型

边界表示模型(B-Rep)

八叉树(Octree)

三棱柱(TP)

Wire Frame-Block混合

线框(Wire Frame)或持续切片(Linked slices

针体(Needle)

地质细胞(Geocellular)

Octree-TEN混合

断面体系(Series Sections)

规则块体(Regular Block)

非规则块体(Irregular Block)

 

断面-三角网混合(Section-TIN mixed)

 

实体(Solid)

 

多层DEMs

 

3D Voronoi图

 

 

 

广义三棱柱(GTP)

 

1引言

eryar@163.com

2.6.1 三维矢量模型及布局

三维矢量模型是二维中点、线、面矢量模型在三维中的推广。它将三维空间中的实体抽象为三维空间中的点、线、面、体多种为主成分,然后以那多样基本几何元素的集纳来布局更扑朔迷离的目的。以起源、终点来限制其边界,以一组型值点来限制其形象;以三个外边界环和若干内边界环来限定其边界,以一组型值曲线来限制其造型;以一组曲面来界定其边界和形状。矢量模型能准确表明三维的线状实体、面状实体和体状实体的畸形边界,数据存储格式紧密、数据量小,并能直观地表述空间几何成分间的拓扑关系,空间查询、拓扑查询、邻接性分析、互联网分析的能力较强,而且图形输出美观,容易完成几何变换等空间操作,不足之处是操作算法较为复杂,表明体内的不均一性的力量较差,叠加分析达成相比困难,不便于空间引得。

1.3D FDS模型

Molennar(1994)在原二维拓扑数据结构的功底上,定义了结点(Node)、弧(Arc)、边(Edge)和面(Face)种种几何成分之间的拓扑关系及其与点(Point)、线(Line)、面(Surface)和体(Solid)七种几何目标之间的拓扑关系,并显式地表明点和体、线和体、点和面、线和面间的is-in,is-on等拓扑关系,指出了—种基于3D矢量图的格局化数据结构(Formal
Data
Structure,FDS)(Pilout,Tempfli, Molenaar,1993),如图2-27所示。其特点是显式地揭橥目的几何组成和矢量成分之间的拓扑关系,有点类似于CAD中的B翼虎说明与CSG表明的并轨。

 

710官方网站 1
图2-27 3DFDS数据结构(据Molenar,1993)

 

这一模子的第3、难点有多个:j仅考虑空间目的表面的划分和边际表达,没有设想对象的内部结构,因而只适合于造型规则的回顾空间目的,难以表明地质环境领域,和的远非规则边界的复杂目标;k没有对空中实体间的拓扑关系进展严谨的概念和格局化描述;l由于显示地存贮几何成分间的拓扑关系,使得操作不便。

    2. 三维边界(B-Rep)表示法

在丰盛多彩的三维物体中,平面多面体在表示与处理上均比较简单,而且又足以用它来逼近别的种种实体。平面多面体的每二个外部都足以看做是二个平面多边形。为了使得地代表它们,总要指定它的巅峰地方以及有怎么着点构成边,哪些边围成壹个面那样一些几何与拓扑的音信。那种经过点名顶点地方、构成边的极限以及构成面的边来代表三维物体的格局被喻为三维边界表示法。

即三维边界(B-Rep)模型是通过面、环、边、点来定义形体的地点和形象,边界线可以是曲线,也得以是空中曲线。例如三个长方体由六个面围成,对相应六个环,各种环由4条边界定,每条边又由多个端点定义。

正如常用的三维边界表示法是行使三张表来提供点、边、面的音讯,这三张表就是:顶点表,用来代表多面体各顶点的坐标;边表,指出整合多面体某边的八个终端;面表,给出围成多面体某些面的各条边。对于后三个表,一般选取指针的点子来指出有关的边、点存放的地点。

三维边界模型的特色是:详细笔录了组合物体形体的有着几何成分的几何新闻及其互相连接关系,以便直接存取构成形体的逐条面、面的边界以及各类顶点的定义参数,有利于以面、边、点为根基的各样几何运算和操作。边界表示构模在讲述结构简单的3D物体时卓殊有效,但对此不规则3D地物则很不便于,且功效低下。

有限元网格划分是进展有限元数值模拟分析重点的一步,它直接影响着继续数值总结分析结果的精确性。网格划分关系单元的形状及其拓扑类型、单元类型、网格生成器的挑三拣四、网格的密度、单元的编号以及几何体素。在有限元数值求解中,单元的等效节点力、刚度矩阵、品质矩阵等均用数值积分生成,三番五次体单元以及壳、板、梁单元的面内均运用高斯(Gauss)积分,而壳、板、梁单元的厚薄方向使用辛普生(Simpson)积分。

摘要:本文简要介绍了Delaunay三角剖分的基础理论,并利用OpenCascade的三角形剖分算法将边界BRep表示的几何体举行三角离散化后在OpenSceneGraph中突显。 

2.6.2 三维体元模型及社团

真3D地学模拟、地面与不法空间的联结发挥、陆地海洋的联结建模、3D拓扑描述、3D空间分析、3D动态地学进程模拟等难点,已变成地学与消息科学的接力技术前沿和攻关热点。

体模型基于3D空间的体元分割和真3D实体表明,体元的品质可以单独描述和仓储,由此可以展开3D空间操作和分析。体元模型可以按体元的面数分为四面体(Tetrahedral)、六面体(Hexahedral)、棱柱体(Prismatic)和多面体(Polyhedral)共二种档次,也足以依照体元的规整性分为规则体元和非规则体元八个大类。规则体元包括CSG-tree、Voxel、Octree、Needle和Regular
Block共5种模型。规则体元平时用于水体、污染和环境难题构模,其中Voxel、Octree模型是一种无采样约束的面向场物质(如动力场、磁场)的一连空间的科班分割方法,Needle和Rugular
Block可用以简单地质构模。非规则体元包涵TEN、Pyramid、TP、Geocelluar、Irregular
Block、Solid、3D-Voronoi和GTP共8种模型。非规则体元均是有采样约束的、基于地材料层界面和地质结构的面向实体的3D模型。

    1. 八叉树(Octree)数据结构

    八叉树数据结构可以视作是二维栅格数据中的四叉树在三维空间的加大。该数据结构是将所要表示的三维空间V按X、Y、Z三个方向从中路举办私分,把V分割成七个立方

体;然后依据逐个立方体中所含的靶子来控制是不是对各立方体继续开展八等分的细分,平素分开到种种立方体被二个对象所充斥,或尚未目的,或其尺寸已成为优先定义的不得再分的体素截至。

比如,图2-28所示的上空物体,其八叉树的逻辑结构可按图2-29代表。图中,小圆圈表示该立方体未被某目的填满,大概说,它涵盖五个目标在里边,须求后续划分。有阴影线的小矩形表示该立方体被有些目标填满,空白的小矩形表示该立方体中绝非目的,那三种状态都不需后续划分。

 

710官方网站 2

(a) 三维空间V中的物体 (b) 三维空间V及划分编码

图2-28 三维空间物体实例

    710官方网站 3

图 2-29 八叉树数据结构举例

八叉树的最主要优点在于可以拾叁分有利地贯彻有常见用途的集结运算(例如,可以求七个物体的并、交、差等运算),而这几个恰是其余代表方法比较难以处理或然要求用度成千成万计量财富的地点。不仅如此,由于那种措施的有序性及分层性,因此对呈现精度和速度的平衡、隐线和隐面的排除等,带来了很大的造福,越发有用。

     2. 四面体格网(TEN)

从理论上讲,对随意的三维物体,只要它满足一定的基准,大家总可以找到1个适用的平面多面体来似乎地意味着那几个三维物体,且使误差保持在必然的范围内。一般地讲,假若要表示有个别三维物体,咱们就须领会从那么些物体表面S0上测得的一组点P1,P2,…PN的坐标。其次,就是要为这么些点建立起某种关系,那种关联有时被誉为那一个点代表的实体的布局。

普普通通那种近乎(或叫逼近)有二种格局,一种是以鲜明的平面多面体的外表作为原三维物体的表面S0的逼近;另一种则是提交一多重的四面体,这么些四面体的聚集(又叫做四面体格网)就是对原三维物体的临界。前者着眼于实体的疆界表示(类似于三维曲面的象征),而后一类着眼于三维物体的诠释,就象1个三维物体可以用体平昔代表无异。

四面体格网(Tetrahedral
Network-TEN)是将对象上空用紧凑排列但不重叠的畸形四面体形成的格网来表示,其实质是2D
TIN结构在3D空间上的扩充。在概念上先是将2D Voronoi格网伸张到3D,形成3D
Vornonoi多面体,然后将TIN结构伸张到3D云谲风诡四面体格网。

1)四面体格网数据的集体

四面体格网由点、线、面和体四类基本成分组合而成。整个格网的几何变换可以成为每一个四面体变换后的结缘,这一风味便于广大复杂的空间数据分析。同时,四面体格网既具有体结构的长处,如:火速几何变换,飞速突显,又足以看成是一种特殊的边际表示,具有部分边际表示的助益,如:拓扑关系的全速处理。

 

710官方网站 4

图2-30 四面体格网表示三维空间物体的例证

四面体                             三角形

体号    面号    属性

 

面号   线段号   属性

 

    …

1   A,B,C,D

 

A    a,b,c

B    b,d,e

C    c,e,f

D    a,d,f

    …

线                                 结点

线号  起点  终点  属性

 

点号   X   Y   Z  属性

a     1    2

b     1    3

c     3    2

d     1    4

      …

1    10   3   2

2    4    3   2

3    8   1.5   3

4   10.5  -1   0

     …

        图2-31 四面体格网表示三维空间物体例子的数据结构

用四面体格网表示三维空间物体的例证及其数据结构见图2-30和2-31。

四面体网格数据结构是网格生成程序已毕上三个丰盛主要的题材。网格数据结构的选项和树立,尤其是可以满意种种各个网格生成算法必要的数据结构尤其显得首要。

2)四面体格网数据的浮动算法

四面体格网(TEN)数据模型实质是二维三角形网(Triangulation Irregular
Nework-TIN)数据结构在三维上的恢宏。如今,首要有两种三角网生成的算法,即三角网生成算法\[64\],逐点插入法,以及分治算法。上面在分析三角网生成算法的底蕴上,给出了五个建立四面体格网的算法思想及步骤。

(1)四面体格网生成算法

该算法的沉思是:在数据场中先构成第1个四面体,然后以四面体的某个面向外伸张生成新的四面体,直至全体离散点均已连成网甘休。其步骤如下:

一, 在数据场中采纳方今七个点连线,作为第三个三角形的一条边。

贰, 选用第多少个点组成第三个三角。

3、 拔取第10个点构成第两个四面体。

4、 i=1, j=1(i为已结成的四面体个数,j为正扩展的四面体个数)。

5、 增添第j个四面体生成新的四面体0~陆个。

⑥ i=i+k(k=0,1,2,4),j=j+1。

⑦ i≥j则转向⑤。

⑧ 结束。

上述算法完结进度中,在步骤贰,中,采取第多少个点的依据是Delauny的七个属性。其一是所选点与原两点同步所组成圆的圆心到原两点连线的“距离”最小;其二是所选点与原两点连线的夹角最大。在步骤三,中,选取第多少个点的基于是所选点与已发出的三角的多少个点一块所结合球面的球心到三角形所构成的面的“距离”最小。

(2)逐次插入算法

该算法思想是:将未处理的点参加到已经存在的四面体格网中,每一遍插入1个点,然后将四面体格网举行优化。其步骤如下:

一, 生成包括全体数据点的立方体(即建立超四面体顶点)。

贰, 生成开始四面体格网。

3、 从数据中取出一点P投入到三角网中。

四, 搜寻包涵点P的四面体,将P与此四面体的三个点不断,形成五个四面体。

伍, 用LOP算法从里到外优化全部变更的四面体。

六, 重复3、~5、直至全数点处理达成。

柒, 删除全部包括三个或七个超四面体顶点的四面体。

 

 

 

 

 

                优化前                                  优化后

图2-32 四面体优化示意图

上述手续五,中的LOP(Local Optimization
Procedure)是生成四面体格网的优化进程,其思

想是拔取四面体格网的习性,对由八个公共面的四面体组成的六面体举办判断,倘诺内部

一个四面体的外接球面包罗第8、个极点,则将这几个六面体的公共面交流,如图2-32所示。

(3)分治算法

该算法的思辨是:首先将数据排序,即将点集V按升序排列使(xi,yi,zi) <(xi+1,yi+1,zi+1),不等式创建的准绳是xi ≦xi+1且yi ≦yi+1 且zi <zi+1.然后递归地撩拨数据点集,直至子集中只包涵两个点而形成四面体,然后自下而上地逐级合并生成最后的四面体格网。分治函数lee(V)内容如下:

lee(V)

1、 把点集V分为近似相等的两个子集VL和VR

② 分别在VL和VR中生成四面体格网。

l  如果VL中包含4~7个点,则建立VL的四面体格网;否则调用lee(VL)。

l  如果VR中包含4~7个点,则建立VR的四面体格网;否则调用lee(VR)。

三, 用一些优化算法LOP优化所爆发的四面体格网。

④ 合并VL和VR中多个四面体格网。

l  分别生成VL和VR的凸多面体。

 

 

 

 

 

 

 

 

 

 

                 \          VL四面体格网                         VR四面体格网

图2-33 合并VL和VR示意图

 

l  在两多面体的Z方向底线寻找一三角形,然后建立一四面体。

l  从该四面体逐步伸张直至整个四面体格网建立已毕。

在合并VL和VR中三个四面体格网的进度中,在确立首个四面体,以及日益伸张四面体时,均是在与已有数据点相连的极端中搜索。举例见图2-33,在合并VL和VR时,先找到第1、个三角⊿P1P2P3,然后从与P1,P2,P3连发的极限中找到点P4,即生成由P1P2P3P4那七个点所组成的四面体。然后分别从⊿P1P2P4和⊿P1P3P4向外伸张,对于⊿P1P2P4是在与点P1,P2,P4随处的点中寻找第多少个点,而⊿P1P3P4是在与点P1,P3,P4穿梭的点中寻找第伍个点。每找到壹个点,必须认可四面体之间无交叉重叠,若出现那种情景,则废弃这么些点,认为该三角形不可能再增添。

在算法落成进度中,数据结构的集体方式是有效创立四面体格网的机要,必要深一步的切磋和商量。

2有限元网格划分的宗旨原则

关键字:Delaunay Triangulation、OpenCascade、OpenSceneGraph 

2.6.3 三维混合数据模型及布局

依据面模型的构模方法侧重于3D空间实体的外表表示,如地形表面、地质层面等,通过外部表示形成3D目的的空间概况,其优点是惠及体现和数码更新,不足之处是为难开展空间分析。基于体模型的构模方法侧重于3D空间实体的分界与其中的完好表示,如地层、矿体、水体、建筑物等,通过对体的叙述完结3D目的的上空表示,优点是便于进行空间操作和分析,但存储空间大,计算速度慢。混合模型的目标则是综合面模型和体模型的优点,以及综合规则体元与非规则体元的长处,取长补短。

1.TIN-CSG混合构模

这是现阶段都会3D
GIS和3DCM构模的主要特性局,即以TIN模型表示地形表面,以CSG模型表示城市建筑,二种模型的数额是分离储存的。为了落到实处TIN与CSG的合壹,在TIN模型的多变进度上将建筑物的当地概略作为内部约束,同时把CSG模型中建筑的编号作为TIN模型中建筑的本地概况多边形的质量,并且将三种模型集成在八个用户界面(李清泉,1999;孙敏等,3000)。这种购并是一种表面上的集成形式,二个对象只由一种模型来代表,然后通过国有边界来再而三,由此其操作与突显都以分开进行。

2.TIN-Octree混合构模(Hybrid构模)

即以TIN表达3D空间物体的外部,以Octree表明内部结构。用指针建立TIN和Octree之间的联系,其中TIN首要用以可视化与拓扑关系公布。那种模型集中了TIN和Octree的独到之处,使拓扑关系搜索很实惠,而且可以充裕利用映射和光芒跟踪等可视化技术。缺点是Octree模型数据必须随TIN数据的转移而改变,否则会挑起指针混乱,导致数据爱慕困难。

3.Wire Frame-Block混合构模

即以Wire
Frame模型来表述目的轮廓、地质或开挖边界,以Block模型来填充其里面(惠勒 A.J.等,一九八六)。为增加境界区域的模拟精度,可按某种规则对Block举办剪切,如以Wire
Frame的三角面与Block体的截割角度为轨道来规定Block的剪切次数(每回可沿二个主旋律或几个趋势将尺寸减半)。该模型实用作用不高,即每五次发掘或地质边界的转变都需尤其划分块体,即修改三回模型。

4.Octree-TEN混合构模

李德仁等曾指出过八又树(Octree)和狼狈四面体(TEN)相结合的长短不一数据结构(李德仁等,1999)。在那些结构中,用八叉树作全局描述,而在八叉树的一些栅格内停放不规则四面体作一些描述。这种结构尤其符合于发挥内部破碎、表面规整的二维对象,但对

 

710官方网站 5

      图2-34观念八叉树与TEN的组成                 图2-35 面八叉树与TEN的结缘

于外部也不收拾的目的则不正好。

    考虑将符合于发挥实体内部破碎复杂结构的歇斯底里四面体网和适合于发挥表面不收拾的八叉树层次结构有机整合起来,形成统一的三维集成数据结构。这种结构用八叉树结构

公布对象表面及其内部完整部分,并在八叉树的奇特标识结点内停放不规则四面体网表达对象内部的破碎部分,整个结构用一棵经过有机融合为一的八叉树说明。不规则四面体网和三级矢量化八叉树有机构成的联结三维集成数据结构,可用如图2-3三,图2-34代表。   

    5. 矢量与栅格集成模型

 

710官方网站 6

图2-36 矢量栅格集成的三维空间数据模型(李清泉等,一九九九)

三个三维空间数据模型应享有目标的几何、语义和拓扑描述;具有矢量和栅格数据结构;可以从已有的二维GIS获取数据以及三维突显和表示复杂目的的力量。矢量栅格集成的三维空间数据模型,如图2-36所示。

在这几个模型中,空间目标分为四大类,即点(0D)、线(1D)、面(2D)和体(3D)。目标的地点、形状大小和拓扑新闻都得以得到描述。其中目标的岗位消息包罗在上空坐标;目标的形状和分寸消息包蕴在线、面和体目标;目的的拓扑音讯包蕴在对象的几何要素和几何要素之间的维系中,而且模型中带有矢量和栅格结构。模型中含有的种种目的及其数

据模型周密,但对具体的种类用怎么样的数据模型可视需求而定。

 

 

 

有限元方法的主干考虑是将协会离散化,即对一而再体举行离散化,利用简化几何单元来如同逼近两次三番体,然后根据变形协调条件综合求解。所以有限元网格的细分一方面要考虑对各物体几何样子的可靠描述,另一方面也要考虑变形梯度的高精度描述。为不易、合理地建立有限元模型,那里介绍划分网格时应考虑的一部分主导规则。

一、 概述

三角形剖分是平面剖分中的二个重点课题,在数字图像处理、计算机三维曲面造型、有限元总结、逆向工程等世界具有广泛应用。由于三角形是平面域中的单纯形,与别的平面图形比较,其有描述方便、处理大致等风味,很吻合于对复杂区域展开简化处理。由此,无论在盘算几何、总括机图形处理、方式识别、曲面逼近,还有零星元网格生成下边有广大的应用。 

就算曲线、曲面等有标准的方程来代表,可是在在总括机中,只好用离散的不二法门来逼近。如曲线可用直线段来逼近,而曲面可用多边形或三角形来代表。用多边形网格表示曲面是规划中时常采用的花样,可以根据使用须求采纳网格的密度。利用三角形面片表示的曲面在电脑图形学中也称为三角形网格。用三角网格表示曲面须要化解多少个难点:三角形的发生、描述、遍历、简化和压缩等,这么些标题都以计算几何钻探的层面,相关难点都足以从中找到答案。下图所示的圆柱和立方体是由OpenCascade生成,使用OpenCascade的算法离散成三角网格后在OpenSceneGraph中浮现的效劳。 

710官方网站 7

Figure 1.1 Shaded Cylinder and Box 

710官方网站 8

Figure 1.2 Mesh generated by OpenCascade 

从图中得以看看,平面的三角形网格功效还可以,曲面的三角网格表示只能是近似表示,可以透过增强网格的密度来增添真实性,但对应渲染的数据量就大了。有人说OpenCascade的突显模块做得不是很好,上述方法则足以只使用OpenCascade的形制模块,再结合OpenSceneGraph来对图片举行展示。 

三维数据交流STL格式文件中保留的都是三角面片的数据,STL文件格式是由美利坚联邦合众国3D
System集团支付,已被工业界认为是近年来高速机动成型领域的准标准零件描述文件格式。它对三维实体描述的解释具有惟一性。大约全部的几何样子系统都提供STL文件数据互换接口。OpenCascade中的数据互换模块也提供对STL格式的支撑,总之三角网格在几何样子系统中的紧要性。 

Voronoi图和Delaunay三角剖分的应用领域十一分周边:几何建模——用来寻觅三维曲面“好的”三角剖分;有限元分析——用来扭转“好的”有限元网格;地理音信种类——用来展开空中领域分析;结晶学——用来明确合金的布局;人类学和考古学——用来规定氏族部落、首领权威、居住中心或堡垒等的影响范围;天历史学——用来规定恒星和星系的遍布;生物学生态学和林学——用来规定动植物的竞争;动物学——分析动物的领地;计算学和数量解析——用来分析总计聚合;机器人学——用来进展运动轨迹规划(在设有障碍物的情形下);格局识别——作为寻找物体骨架点的工具;生历史学——用来分析毛细功用的天地;气象学——用来打量区域平均降水量;市镇学——用来确立城市的市场辐射范围;以及在遥感图像处理、化学、地农学、地质学、冶金学、数学等科目的应用等。 

正文只对OpenCascade中的三角剖分举行不难介绍,希望对三角剖分在三维几何样子方面有趣味的对象可以对其深入研商。水平很简单,文中不当之处欢迎批评指正、指导,联系邮箱:eryar@163.com。 

习题

1.哪些叫像元、灰度值、栅格数据?

2.举例表达栅格数据层的概念。

3.栅格数据怎样以数组的款式举办仓储?

4.栅格数码有哪二种协会章程?各自有啥优缺点?

5.栅格数量怎么样进展取值?

6.栅格数额存储压缩编码方法主要有哪三种?每一种办法是怎样开展削减的?

7.什么叫矢量数据?点、线、面实体数据编码的基本内容是哪些?

8.怎么着叫拓扑关系?举例表明拓扑关系有哪几体系型?

9.举例表明实体式数据结构。它有什么缺点?

10.举例表明索引式数据结构、DIME数据结构、链状双重独立式数据结构。

11.地理数据的显式和隐式表示有什么差异?

12.在事实上工作中应如何对矢量和栅格数据结构举办实用的选取?

13.三维空间数据模型有怎样?其对应空间数据结构有何特点?

2.1 网格数量

二、 Voronoi图

Dirichlet于1850年切磋了平面点的邻域难题,Voronoi于1910年将其结果扩张到高维空间。半空间定义Voronoi图:给定平面上n个点集S,S={p1,
p2, …, pn}。定义: 

710官方网站 9

PiPj连线的垂直平分面将空间分为两半,V(Pi)表示比其余点更就像Pi的点的轨迹是n-二个半平面的交,它是三个不多于n-1条边的凸多边形域,称为关联于Pi的Voronoi多边形或关系于Pi的Voronoi域。如下图所示为涉及于P1的Voronoi多边形,它是1个四边形,而n=6. 

710官方网站 10

Figure 2.1 n=6时的一种V(p1) 

对此点集S中的各个点都足以做壹个Voronoi多边形,那样的n个Voronoi多边形组成的图称为Voronoi图,记为Vor(S)。如下图所示: 

710官方网站 11

Figure 2.2 Voronoi diagram for 10 randomly points (Generated by MATLAB) 

图中的顶点和边分别名为Voronoi顶点和Voronoi边。显明,|S|=n时,Vor(S)划分平面成n个多边形域,每种多边形域V(Pi)包蕴S中的二个点同时只包涵S中的一个点,Vor(S)的边是S中某点对的垂直平分线上的一条线条或半直线,从而为该点对所在的三个多边形域所共有。Vor(S)中一些多边形域是无界的。 

710官方网站 12

Figure 2.3 Ten shops in a flat city and their Voronoi cells 

(http://en.wikipedia.org/wiki/Voronoi\_diagram

710官方网站 13

Figure 2.4 Voronoi tessellation in a cylinder (Voro++ library:
http://math.lbl.gov/voro++/

Voronoi图有如下性质: 

l n个点的点集S的Voronoi图至多有2n-陆个极点和3n-6条边; 

l 各个Voronoi点恰好是三条Voronoi边的交点; 

l 设v是Vor(S)的巅峰,则圆C(v)内不含S的其他点; 

l 点集S中点Pi的每二个多年来接近点显然V(Pi)的一条边; 

l Voronoi图的直线对偶图是S的二个三角形剖分; 

l
假若Pi,Pj属于S,并且经过Pi,Pj有二个不含有S中其余点的圆,那么线段PiPj是点集S三角剖分的一条边,反之亦建立。 

网格数量平昔影响总结精度和计量时耗,网格数量净增会升高统计精度,但同时总括时耗也会大增。当网格数量较少时增添网格,计算精度可显著增强,但统计时耗不会有显然增多;当网格数量增多到自然水平后,再持续追加网格时精度升高就很小,而计量时耗却极大增多。所以在规定网格数量时应权衡那八个因素综合考虑。

三、 Delaunay三角剖分 

2.2 网格密度

1. 二维实数域上的三角形剖分

假如V是二维实数域上的有限点集,边e是由点集中的点作端点构成的查封线段,E为e的集结,那么该点集V的一个三角剖分T=(V,E)是1个平面图: 

l 除了端点,平面图中的边不带有点集中的任何点; 

l 没有相交边; 

l 平面图中保有的面都以三角面,且独具三角面的合集是点集V的凸包。 

为了适应应力等总括数据的遍布特点,在构造不一部位必要选拔尺寸不等的网格。在孔的附近有集中应力,因此网格须要加密;周边应力梯度相对较小,网格划分较稀。因而反映了疏密差距的网格划分标准:在总结数据变化梯度较大的位置,为了较好地反映数据变化规律,要求利用相比密集的网格;而在测算数据变动梯度较小的地点,为减小模型规模,网格则应相对稀疏。

2. Delaunay边

借使E中的一条边(两端点a,b),e满意下列条件,则称为Delaunay边:存在3个圆经过a,b两点,圆内不带有点集V中的任何的点。这一特征又称作空圆天性。 

2.3  单元阶次

3. Delaunay三角剖分

纵然点集V的2个三角形剖分T中只含有Delaunay边,那么该三角剖分称为Delaunay剖分。 

前不久点意思下的Voronoi图的双双图实际上是点集的一种三角剖分,该三角剖分就是Delaunay剖分(表示为DT(S)),其中每一个三角形的外接圆不包罗点集中的别样任何点。因而,在社团点集的Voronoi图之后,再作其对偶图,即对每条Voronoi边作通过点集中某两点的垂直平分线,即取得Delaunay三角剖分。 

710官方网站 14

Figure 3.1 Delaunay Triangulation (Generated by MATLAB) 

再看多少个图片,加深对Delaunay三角剖分的精通: 

710官方网站 15

Figure 3.2 Delaunay Edge  

710官方网站 16

Figure 3.3 Illustrate Delaunay Edge 

710官方网站 17

Figure 3.4 Delaunay Edge 

单元阶次与有限元的一个钱打二拾伍个结精度有着密切的涉嫌,单元一般装有线性、贰回和三回等情势,其中贰次和一次方式的单元称为高阶单元。高阶单元的曲线或曲面边界可以更好地逼近结构的曲线和曲面边界,且高次插值函数可更高精度地逼近复杂场函数,所以增添单元阶次可拉长计算精度。但净增单元阶次的还要网格的节点数也会跟着增多,在网格数量一样的意况下由高阶单元构成的模型规模相对较大,由此在运用时应权衡考虑计算精度和时耗。

4. Delaunay三角剖分的性状

l
一九七八年Sibson注明了在二维的情事下,在点集的具备三角剖分中,Delaunay三角剖分使得生成的三角的最小角达到最大(max-min
angle)。因为这一天性,对于给定点集的Delaunay三角剖分总是尽只怕防止“瘦长”三角形,自动向等边三角形逼近; 

l 局地优化与全体优化(locally optimal and globally optimal); 

l Delaunay空洞(cavity)与局地重连(local reconnection); 

  1. 经文的Delaunay三角剖分算法 

当前常用的算法分为三种,有扫描线法(Sweepline)、随机增量法(Incremental)、分治法(Divide
and Conquer)等。 

经文的Delaunay三角剖分算法紧要有两类:Bowyer/沃特son算法和有个别变换法。 

l
Bowyer/沃特son算法又称之为Delaunay空洞算法或加点法,以Bowyer和沃特son算法为表示。从贰个三角形先导,每一回加二个点,保障每一步得到的眼下三角形是有个别优化的。以United KingdomBath高校数学分校Bowyer,格林,Sibson为代表的估计Dirichlet图的形式属于加点法,是较早成名的算法之一;以澳大伊丽莎白港华沙高校地学系沃特son为代表的空外接球法也属于加点法。加点法算法简明,是时下采取最多的算法,该措施应用了Delaunay空洞性质。Bowyer/沃特son算法的助益是与上空的维数毫不相关,并且算法在完结上比部分变换算法不难。该算法在新点进入到Delaunay网格时,部极度接球包蕴新点的三角形单元不再符合Delaunay属性,则那个三角形单元被删去,形成Delaunay空洞,然后算法将新点与组合空洞的每3个巅峰相连生成一个新边,依照空球属质量够阐明那一个新边都以有的Delaunay的,因而新生成的三角形网格仍是Delaunay的。 

710官方网站 18

Figure 3.5 Illustration of 2D Bowyer/Watson algorithm for Delaunay
Triangulation 

l
局地变换法又称为换边、换面法。当使用部分变换法落成增量式点集的Delaunay三角剖分时,首先定位新参加点所在的三角,然后在网格中参预两个新的总是该三角形顶点与新顶点的边,若该新点位于某条边上,则该边被去除,四条连接该新点的边被投入。最终,在经过换边方法对该新点的片段区域内的边进行检测和转移,重新维护网格的Delaunay性质。局部变换法的另1个优点是其可以对已存在的三角形网格进行优化,使其转移成为Delaunay三角网格,该形式的弱点则是当算法增加到高维空间时变得较为复杂。 

2.4 单元形状

四、 Delaunay三角剖分在OpenCascade的选择

OpenCascade中网格剖分的包主要有BRepMesh、MeshAlgo、MeshVS,其中,类MeshAlgo_Delaunay使用算法沃特son来进展Delaunay三角剖分。从类StlTransfer中的注释The
triangulation is computed with the Delaunay algorithm implemented in
package
BRepMesh.可以观察包BRepMesh就是Delaunay三角剖分的有血有肉落到实处。使用方法如下: 

BRepMesh::Mesh (aShape, Deflection); 

以此函数重借使用来对拓扑形状进行三角剖分。以下通过将三个圆柱三角剖分为例表达什么将三个拓扑形状进行三角剖分并将结果开展可视化。 

/**
*    Copyright (c) 2013 eryar All Rights Reserved.
*
*        File    : Main.cpp
*        Author  : eryar@163.com
*        Date    : 2013-05-26
*        Version : 0.1
*
*    Description : Use BRepMesh_Delaun class to learn 
*                  Delaunay's triangulation algorithm.
*
*/
// Open Cascade library.
#include <gp_Pnt.hxx>
#include <gp_Pln.hxx>
#include <BRep_Tool.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Wire.hxx>
#include <TopoDS_Face.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <BRepBuilderAPI_MakeWire.hxx>
#include <BRepBuilderAPI_MakeFace.hxx>

#include <BRepPrimAPI_MakeBox.hxx>
#include <BRepPrimAPI_MakeCone.hxx>
#include <BRepPrimAPI_MakeCylinder.hxx>
#include <BRepPrimApI_MakeSphere.hxx>

#include <BRepMesh.hxx>
#include <TopExp_Explorer.hxx>
#include <Poly_Triangulation.hxx>
#include <TShort_Array1OfShortReal.hxx>

#pragma comment(lib, "TKernel.lib")
#pragma comment(lib, "TKMath.lib")
#pragma comment(lib, "TKBRep.lib")
#pragma comment(lib, "TKPrim.lib")
#pragma comment(lib, "TKMesh.lib")
#pragma comment(lib, "TKTopAlgo.lib")

// OpenSceneGraph library.
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osgViewer/ViewerEventHandlers>
#include <osgGA/StateSetManipulator>

#pragma comment(lib, "osgd.lib")
#pragma comment(lib, "osgDbd.lib")
#pragma comment(lib, "osgGAd.lib")
#pragma comment(lib, "osgViewerd.lib")

osg::Node* BuildShapeMesh(const TopoDS_Shape& aShape)
{
    osg::ref_ptr<osg::Group> root = new osg::Group();
    osg::ref_ptr<osg::Geode> geode = new osg::Geode();
    osg::ref_ptr<osg::Geometry> triGeom = new osg::Geometry();
    osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array();
    osg::ref_ptr<osg::Vec3Array> normals = new osg::Vec3Array();

    BRepMesh::Mesh(aShape, 1);

    TopExp_Explorer faceExplorer;

    for (faceExplorer.Init(aShape, TopAbs_FACE); faceExplorer.More(); faceExplorer.Next())
    {
        TopLoc_Location loc;
        TopoDS_Face aFace = TopoDS::Face(faceExplorer.Current());

        Handle_Poly_Triangulation triFace = BRep_Tool::Triangulation(aFace, loc);
        Standard_Integer nTriangles = triFace->NbTriangles();

        gp_Pnt vertex1;
        gp_Pnt vertex2;
        gp_Pnt vertex3;

        Standard_Integer nVertexIndex1 = 0;
        Standard_Integer nVertexIndex2 = 0;
        Standard_Integer nVertexIndex3 = 0;

        TColgp_Array1OfPnt nodes(1, triFace->NbNodes());
        Poly_Array1OfTriangle triangles(1, triFace->NbTriangles());

        nodes = triFace->Nodes();
        triangles = triFace->Triangles();       

        for (Standard_Integer i = 1; i <= nTriangles; i++)
        {
            Poly_Triangle aTriangle = triangles.Value(i);

            aTriangle.Get(nVertexIndex1, nVertexIndex2, nVertexIndex3);

            vertex1 = nodes.Value(nVertexIndex1);
            vertex2 = nodes.Value(nVertexIndex2);
            vertex3 = nodes.Value(nVertexIndex3);

            gp_XYZ vector12(vertex2.XYZ() - vertex1.XYZ());
            gp_XYZ vector13(vertex3.XYZ() - vertex1.XYZ());
            gp_XYZ normal = vector12.Crossed(vector13);
            Standard_Real rModulus = normal.Modulus();

            if (rModulus > gp::Resolution())
            {
                normal.Normalize();
            }
            else
            {
                normal.SetCoord(0., 0., 0.);
            }

            vertices->push_back(osg::Vec3(vertex1.X(), vertex1.Y(), vertex1.Z()));
            vertices->push_back(osg::Vec3(vertex2.X(), vertex2.Y(), vertex2.Z()));
            vertices->push_back(osg::Vec3(vertex3.X(), vertex3.Y(), vertex3.Z()));

            normals->push_back(osg::Vec3(normal.X(), normal.Y(), normal.Z()));
        }    
    }

    triGeom->setVertexArray(vertices.get());
    triGeom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::TRIANGLES, 0, vertices->size()));

    triGeom->setNormalArray(normals);
    triGeom->setNormalBinding(osg::Geometry::BIND_PER_PRIMITIVE);

    geode->addDrawable(triGeom);

    root->addChild(geode);

    return root.release();
}

int main(int argc, char* argv[])
{
    osgViewer::Viewer myViewer;
    osg::ref_ptr<osg::Group> root = new osg::Group();

    root->addChild(BuildShapeMesh(BRepPrimAPI_MakeCylinder(.6, 1)));

    myViewer.setSceneData(root);

    myViewer.addEventHandler(new osgGA::StateSetManipulator(myViewer.getCamera()->getOrCreateStateSet()));
    myViewer.addEventHandler(new osgViewer::StatsHandler);
    myViewer.addEventHandler(new osgViewer::WindowSizeHandler);

    return myViewer.run();
}

结果如下图所示: 

710官方网站 19

Figure 4.1 Cylinder mesh generated by BRepMesh::Mesh 

BRepMesh::Mesh是透过包装的,便于对拓扑形状进行三角剖分。以下通过一个回顾的例子来评释直接行使BRepMesh_Delaun的方法: 

/**
*    Copyright (c) 2013 eryar All Rights Reserved.
*
*        File    : Main.cpp
*        Author  : eryar@163.com
*        Date    : 2013-05-26
*        Version : 0.1
*
*    Description : Use BRepMesh_Delaun class to learn 
*                  Delaunay's triangulation algorithm.
*
*/

#include <BRepMesh_Edge.hxx>
#include <BRepMesh_Delaun.hxx>
#include <BRepMesh_Array1OfVertexOfDelaun.hxx>
#include <TColStd_MapIteratorOfMapOfInteger.hxx>

#pragma comment(lib, "TKernel.lib")
#pragma comment(lib, "TKMesh.lib")

int main(int argc, char* argv[])
{
    BRepMesh_Array1OfVertexOfDelaun vertices(1, 4);

    vertices.SetValue(1, BRepMesh_Vertex(0, 0, MeshDS_Free));
    vertices.SetValue(2, BRepMesh_Vertex(1, 0, MeshDS_Free));
    vertices.SetValue(3, BRepMesh_Vertex(1, 1, MeshDS_Free));
    vertices.SetValue(4, BRepMesh_Vertex(0, 1, MeshDS_Free));

    BRepMesh_Delaun triangulation(vertices);
    //triangulation.AddVertex(BRepMesh_Vertex(0.5, 0.5, MeshDS_OnSurface));
    Handle_BRepMesh_DataStructureOfDelaun meshData = triangulation.Result();

    std::cout<<"Iterate Mesh Triangles:"<<std::endl;

    MeshDS_MapOfInteger::Iterator triDom;
    for (triDom.Initialize(meshData->ElemOfDomain()); triDom.More(); triDom.Next())
    {
        Standard_Integer triId = triDom.Key();
        const BRepMesh_Triangle& curTri = meshData->GetElement(triId);

        Standard_Integer vertexIndex1 = 0;
        Standard_Integer vertexIndex2 = 0;
        Standard_Integer vertexIndex3 = 0;

        Standard_Integer edgeIndex1 = 0;
        Standard_Integer edgeIndex2 = 0;
        Standard_Integer edgeIndex3 = 0;

        Standard_Boolean o1 = Standard_False;
        Standard_Boolean o2 = Standard_False;
        Standard_Boolean o3 = Standard_False;

        curTri.Edges(edgeIndex1, edgeIndex2, edgeIndex3, o1, o2, o3);

        const BRepMesh_Edge& edge1 = meshData->GetLink(edgeIndex1);
        const BRepMesh_Edge& edge2 = meshData->GetLink(edgeIndex2);
        const BRepMesh_Edge& edge3 = meshData->GetLink(edgeIndex3);

        vertexIndex1 = (o1? edge1.FirstNode(): edge1.LastNode());
        vertexIndex2 = (o1? edge1.LastNode() : edge1.FirstNode());
        vertexIndex3 = (o2? edge2.LastNode() : edge2.FirstNode());

        const BRepMesh_Vertex& vertex1 = meshData->GetNode(vertexIndex1);
        const BRepMesh_Vertex& vertex2 = meshData->GetNode(vertexIndex2);
        const BRepMesh_Vertex& vertex3 = meshData->GetNode(vertexIndex3);

        const gp_XY& p1 = vertex1.Coord();
        const gp_XY& p2 = vertex2.Coord();
        const gp_XY& p3 = vertex3.Coord();

        std::cout<<"--------"<<std::endl;
        std::cout<<p1.X()<<" , "<<p1.Y()<<std::endl;
        std::cout<<p2.X()<<" , "<<p2.Y()<<std::endl;
        std::cout<<p3.X()<<" , "<<p3.Y()<<std::endl;
        std::cout<<"========"<<std::endl;
    }

    return 0;
}

上述顺序是以2个正方形为例,使用BRepMesh_Delaun三角剖分的结果为多少个三角,如下所示: 

Iterate Mesh Triangles: 
——– 
1 , 1 
0 , 0 
1 , 0 
======== 
——– 
1 , 1 
0 , 1 
0 , 0 
======== 

 以上结果都是二维空间上的,三维空间中的使用办法可以参考类:BRepMesh_法斯特DiscretFace。这一个类表明了哪些将三个面进行网格划分。 

网格单元形状的高低对计量精度有着很大的震慑,单元形状太差的网格甚至会半途而废总括。单元形状评价一般有以下多少个目的:

五、 结论

Delaunay三角剖分理论在三维几何样子中依然相比首要的,通过对造型的三角形剖分,不仅可以对其进展可视化,还有利于对造型做越发的拍卖,如消隐、光照处理等。通过对OpenCascade中三角剖分算法的采用,以更为询问三角剖分理论应用及其算法达成。 

(1)单元的边长比、面积比或容积比以正三角形、正四面体、正六面体为参考标准。

六、 参考资料

  1. 周培德. 总计几何—算法设计与分析. 武大高校出版社, 贰零壹壹 

  2. 李海生. Delaunay三角剖分理论及可视化应用探究. 奇瓦瓦工业高校出版社,
    二零零六 

  3. 何援军. 统计机图形学. 机械工业出版社, 二零零六 

  4. 周元峰, 孙峰, 王文平, 汪嘉业, 张彩明.
    基于局部修复的位移数据点Delaunay三角化火速翻新方法.
    总结机协理设计与图片学学报, 二〇一一, 12: 二〇〇五-1012 

  5. http://en.wikipedia.org/wiki/Voronoi_diagram

 

PDF Version: Delaunay Triangulation in
OpenCascade

(2)扭曲度:单元面内的挽回和面外的翘曲程度。

(3)节点编号:节点编号对于求解进程中总刚矩阵的带宽和波前因数有较大的影响,从而影响计算时耗和仓储容积的轻重缓急

2.5 单魏敬宗调性

单元宏调是指单元上的力和力矩可以透过节点传递给相邻单元。为力保单魏明宣宗调,必须满足的标准化是:

(1)二个单元的节点必须同时也是相邻点,而不应是内点或边界点。

(2)相邻单元的共有节点有所相同的自由度性质。其余,有一样自由度的单元网格也并非一定协调。

3网格生成通用方法

有限元网格划分方法难以规范分类,分类方法有成百上千,可以按产生的单元类型、生成单元的维数、自动化水平等进行分类。

3.1 映射法

映射法的宗旨境维是事实上图形与业内图形的双向映射,具体有两个步骤:

(1)依照形体边界的参数方程,利用恰当的映射函数,将待划分的物理域映射到参数空间,形成规则参数域;

(2)对参数域举行网格划分;

(3)将参数空间内单元的网格反向映射到欧氏空间,从而生成实际的网格。

那种网格控制机理有以下多少个毛病:

(1)映射法不是全然面向几何特征的,所以很难成功自动化,尤其是对此3D区域;

(2)网情势部控制能力差;

(3)各映射块之间的网格密度相互影响程度很大,改变某一映射块的网格密度,其余映射块的网格都要做相应的调整;

(4)对于形状较为复杂的躯壳适应性差,需求先行依据所要发生的网格类型将目标域分割成一多如牛毛可映射的子区域。子域分解繁琐,所需人工交互多,难以完成网格自动的生成。

3.2  基于栅格法

据悉栅格法也叫空间分解法。该算法的主题流程:首先用一组不相交的栅格覆盖在物体之上,既可在栅格的规则点处陈设节点,也可在栅格单元中任意布署节点;再对栅格和物体进行交接检测,保留完全或一些落在对象区域之内的栅格,删除完全落在对象区域之外的栅格;然后对与实体边界相交的栅格举行调整、剪裁、再解释等操作,使其更确切地逼近目的区域;最终对其中栅格和边界栅格实行栅格级的网格剖分,进而获取全方位目的区域的有限元网格。

3.3  节点连元法

节点连元法一般分为两步:(1)在实体的边际和有效性区域内依据网格密度的渴求均匀布点;(2)依据早晚的清规戒律将那么些节点连接成三角形或四面体网格。

3.4  拓扑分解法

拓扑分解法它首先是由United Kingdom加州戴维斯分校高校的Wordenwaber指出来的。拓扑分解法是从形体的拓扑因素起初开展分割,而不干涉成分的切实可行形象。首先若是网格顶点全部由目标边界顶点组成,那么能够用一种三角化算法将对象用尽量少的三角完全分开覆盖。

3.5  几何分解法

几何分解法最大的风味是节点和单元同步变化。该格局较多地考虑了待分域的几何特点,确保生成品质较好的网格单元

3.6  扫描法

扫描法是将离散化的主导单元形体举行旋转、扫描、拉伸等操作,得到高维网格的一种艺术。那种办法难度较低,简单达成,在当今多数商用CAD软件和有限元前置处理软件中均有那种效应。可是那种方法只适合于造型简单的三维物体,且紧要靠人机交互来落到实处,自动化水平低。

4探究热点

方今有限元分析在各类工程领域中获取了普遍的使用,网格划分技术的说理功底已日趋成熟。近几年有限元网格划分的切磋领域已由二维平面难题转移到三维实体,讨论重大已经由三角形(四面体)网格转变为四边形(六面体)网格,重视网格的全自动生成、网格自适应等探究。

4.1  六面体网格划分

脚下,六面体单元网格生成算法主要有炫耀单元法、单元转换法、基于栅格法、多子区域法、扫描法和投影法等。

炫耀单元法:先把三维实体分成多少个大的20节点六面体区,然后使用形函数映射技术把各种六面体区域映射为广大细小的8节点六面体单元。

单元转换法:通过其他单元转化为六面体单元。

据悉栅格法:首头阵出六面体网格模板,将其覆盖到必要网格化的三维实体上。

多子区域法:分为八个重大步骤:首先将复杂目的域分解为自然数量的简单子区域,然后对每一个子区域拓展六面体网格划分,最后将种种子区域的网格组合成全局网格,从而形成目的域的完好网格

扫描法:是由二维四边形有限元网格通过旋转、扫描、拉伸等操作而形成六面体网格的一种艺术。

投影法:是采纳出色的四面体网格作为投影网格,通过沙盘网格节点与待分实体表面关键点的附和关系决定影子的门道与比例缩放意况。

4.2  曲面网格划分

工程结构中常用的薄壳结构都是由随机曲面组合而成的。三维曲面是三维实体的倒退,是一种特殊方式,三维曲面的有限元网格划分的运用范围很广。近期的曲面网格生成方法可粗略地分为直接法和映射法两种。

直接法的曲面网格划分是平昔在曲面的物理空间进行,网格划分进程平昔以曲面的一部分几何样子为参考,并依据曲面的一对处境采用差其余剖分策略

映射法首先将曲面边界映射到二维参数空间,在二维参数空间中展开网格划分,然后将分开结果反向映射到大体空间形成曲面网格。

相关文章