“ 图形几何库提供丰富的几何工具算法,如基础的仿射变换、向量运算、关系计算及高阶的布尔运算、网格剖分、实体造型、曲线曲面等,这离不开基础的三维实体结构表达,而三维实体结构表达的方式有多种,各具特点。”
1.背景简述
当前工业软件发展较快,数字化相关平台和软件百家争鸣,***云化***是当前工业软件热门的发展方向之一,而有关采用哪种方式进行实体结构表达似乎讨论非常多,如果不理解原理特点和应用框架逻辑,再多的讨论也可能不着要点。
2.介绍
实体结构的表达由多种方式,如分解表示、构造表示**CSG**(Constructive Solid Geometry)、边界表示**BRep**(Boundary Representation)、网格表示等。
常见的分解表示法有四叉树、八叉树、BSP树等方式。
CSG方式出现较早,后来出现了BRep普及比较快,现在大部分领先的几何内核(ACIS、PS、OCC等)采用BRep方式,有关两者的优缺点和适用场景比较的讨论已有很多,本文不再赘述。
采用某种表达方式之后,如BRep方式,实体相关的计算大多也基于此结构进行。
不同的实体结构表达方式特点不同,在几何内核范畴内尤为关注,比如布尔运算的实现方案和实体结构表达方式密切相关,有CSG布尔运算、BRep布尔运算、网格布尔运算等多种方式;再比如关系判断也离不开实体结构表达方式,点/线/面/实体与实体关系等计算。实体结构表达是几何库基础数据结构表达的重要部分,也是几何库的基础。
3.影响和关注
图形几何库可以采用某种实体结构表达方式,然后结合和基于此方式实现各类几何工具算法,对外提供能力,支撑诸如CAD/CAE/CAM等相关领域平台和产品的开发,似乎这种方式的选择带来的影响被封装在了图形几何库层面?
为了便于应用,一般需要在平台层对图形几何库接口进行封装和应用实现,提供便于使用的接口,支撑应用侧的开发,这样应用侧不必过多的关注底层的基础概念和算法。
3.1 减少对应用侧的影响:提供模块化的能力
平台层一般会封装不便于理解的实体结构表达,以参数化数据结构的方式,比如立方体具有长宽高(Length/Width/Height)参数,而圆具有圆心(Center)和半径(Radius)参数。
如下面封装接口,
bool CreateCube(double length, double width, double height, Body& cube);
3.2 应用开发仍需关注
值得注意的是这并不意味着平台和应用层不关系实体结构表达方式,一些情况下需要获取这些数据结构(如拾取面),更重要的是根据需求场景特点进行几何库的选用,作为几何库重要基础,实体结构表达方式仍然是重要考虑的方面,毕竟在关注轻量级使用的场景,没有多少人愿意在CSG方式的基础上进行几何计算。
4.写在后面
图形几何、数据处理、并行计算相关研究和研发,公众号:geometrylib,欢迎交流。
_________哈市雪花__________