假设有一个非凸的 3D 多面体P,表示为网格。确定所有凹面的集合的最佳算法是什么?
我认为的第一个(可能是微不足道的)答案可能是计算多面体P的凸包C,然后将不合理的差异C - P划分为连通分量。我能走在正确的方向吗?如果是,您如何计算网格之间的“差异”?是否有一些 CGAL 函数可用于“减去”网格并获取连接的组件。
我认为的第一个(可能是微不足道的)答案可能是计算多面体P的凸包C,然后将不合理的差异C - P划分为连通分量。我能走在正确的方向吗?如果是,您如何计算网格之间的“差异”?是否有一些 CGAL 函数可用于“减去”网格并获取连接的组件。
是的,你可以,你应该看看 Nef_polyhedron_3 :https://doc.cgal.org/latest/Nef_3/classCGAL_1_1Nef__polyhedron__3.html
基本上你将你的网格和它的凸壳网格转换为 nef。从那里您可以访问布尔运算,包括差异。所以你可以得到你想要的,然后把它转换回多面体。