我正在从常规多面体转换的Nef多面体上做一些布尔运算。在进行布尔运算后,我想将生成的Nef多面体转换为正多面体。然而,如果结果是单个体积,似乎Nef多面体仅支持。但是,一些布尔操作会导致多个卷。有没有办法将Nef多面体分成它包含的离散体积并将它们分别转换回常规多面体?或者有一些更合适的方法吗?
我找到了Nef_polyhedron_3 :: Volume和相应的迭代器,但是我无法找到利用这些来分割Nef多面体的方法。
修改:
我终于好好看看这个。提供的代码几乎开箱即用。我遇到了一些很容易解决的问题。首先,我在Nef_polyhedron类之外实现了BuildPolyhedronFromShell,因为我希望尽可能保持我的CGAl实现尽可能干净。但是必须公开Nef_polyhedron_3 :: Triangulation_handler2,因为它在BuildPolyhedronFromShell中使用。
此外,代码最初创建具有向内法线的壳。这是通过将Halffacet_const_handle f = opposite_facet->twin();
更改为Halffacet_const_handle f = opposite_facet;
来解决的。我不知道这是否解决了一般情况下的问题,但我适用于我尝试过的案例。
感谢您的帮助。