我有一个内部孔洞。我的实力是B-rep。更确切地说,我的实体是一个点列表的多边形列表。我想区分内部表面和外部表面。我的多边形列表有一个随机顺序。
我希望能够将外部表面与内部表面区分开来。它确实存在于文献中,但我找不到它。
我认为BSP树可以帮助我解决这个问题,但我找不到如何。
编辑:
我知道如何做到这一点。我的算法似乎很健壮,但有点愚蠢,我确信在文献中有更聪明的东西:
首先,我需要在对象中找到一个点
找到一个外部面孔
将我的多边形列表拆分为较小的列表
让我们调用P我的多边形列表,L调用多边形列表,然后l i 包含在L中的多边形列表
l i 应仅包含相互接触的多边形
让我们来定义彼此接触的东西:
我们将多边形定义为边列表
一般定义是两个多边形(polygon 1 ,polygon 2 )如果∃(edge 1 ,edge 2)相互接触)∈alultigon 1 x polygon 2
对于我的简化案例:我的多边形是点列表,我知道两个相互接触的多边形意味着它们有一个共同的顶点。我将在实践中使用这个简化的定义,但它不会改变方法。
只有一个子列表包含外部l i 我在上面找到的外部多边形。其他是内部的 何时检查哪些子列表包含外部多边形可能取决于数据结构,但这是优化问题,而不是鲁棒性。