2

我有一个由二进制空间分区树给出的 3d 卷。通常这些是由多边形模型制成的,并且分割的多边形已经存储在树节点中。

但我的不是,所以我没有多边形。每个节点都只有一个剖切面(例如,由法线和原点距离给出)。因此,树仍然代表一个实体的 3d 体积,由所有切割定义。但是,为了可视化,我需要这个体积的多边形网格。如何有效地重建它?

粗略的方法是将叶子的无限半空间转换为足够大的多面体(例如立方体)并将它们中的每一个向上推到树上,通过它通过的每个节点的平面切割它。这似乎非常昂贵,因为树可能是不平衡的(例如,如果愚蠢地由凸多面体制成)。有没有经典的解决方案?

4

1 回答 1

1

为了恢复多边形表面,您需要与平面相交。其中多边形的每个顶点由三个平面的交点生成,每个边由两个平面的交点生成。但是,使这种高效且数值稳定的任务并非易事。所以我建议使用qhalf它是qhull的一部分。qhalf可以在此处找到输入和输出的文档。当然,您可以将qhull(以及来自 的功能qhalf)用作

于 2012-10-23T18:15:40.627 回答