多边形建模
文章来自于翻译,有删减。来源是:https://isicad.ru/ru/articles.php?article_num=22791
对于大多数算法来说,仅仅把网格看作一组三角形是不够的,比如从STL格式转换得到的结果。对于这样的网格,你唯一能做的就是绘制它并计算面积。对于其他所有事情,我们需要有一种拓扑结构可供使用,这是多边形建模的基础。
这个结构有两个主要的组成部分。第一部分是网格拓扑,它描述了顶点、边和多边形之间的关系。它不仅支持三角形,也支持具有任意边数的多边形,或者说是面片。此外,它负责提供一些基本的基元操作,比如,有序遍历与选定面片相邻的面片,有序遍历某个顶点的扇区,进行边的折叠,插入顶点,扔掉边,等等。
通常,网格本身并不那么有趣,但与之相结合的是一种将面片划分为组的逻辑。这引出了拓扑的第二个组成部分:划分。它有着与标准B-rep模型相同的结构:相同的面、环和边,但是面是链接面片组的,边是由网格边的序列组成的。它也需要一组类似于网格拓扑的基本操作,如遍历相邻段,创建一个新的划分或使用给定的边或面片拆分现有的一个,合并一个或多个段,将边界面片从一个段转移到另一个段,等等。
插图显示了已有划分的分解。不同的片段以不同的颜色高亮,由一组边指定,这由黄色的折线指示。第二幅图是这次切割的结果。此外,每个拓扑元素必须被赋予一个抽象属性——它可以是一个数字,一个向量,一个表面,或者一个任意结构。