用CGAL创建和交叉六面体

时间:2010-06-30 23:57:53

标签: python geometry cgal

Python bindings使用CGAL,我无法弄清楚如何创建六面体,也不知道如何计算它与另一个六面体的交集。

我有8个输入点,它们是六面体的角落:

a hexahedron - a shape with six faces, eight corners

我的代码执行此操作:

P = Polyhedron_3()
bottom = P.make_tetrahedron(p[0],p[1],p[2],p[3])
top = P.make_tetrahedron(p[4],p[5],p[6],p[7])
left = P.make_tetrahedron(p[0],p[1],p[5],p[4])
right = P.make_tetrahedron(p[3],p[2],p[6],p[7])
front = P.make_tetrahedron(p[4],p[7],p[3],p[0])
back = P.make_tetrahedron(p[1],p[2],p[6],p[5])

但是当我计算得到的多面体中的点时,有24个 - 每个面都与其邻居没有连接。

如何使用Python CGAL构建实体六面体?

最后,成功构建了两个这样的多面体,我该如何计算它们的交集?

1 个答案:

答案 0 :(得分:1)

您将要创建一个初始四面体,然后使用split_edge三次并将新创建的顶点移动到它们应该的位置。然后使用split_facetsplit_edge的另一种组合将六面体“塑造”到位。

请参阅Section 25.3.7 of CGAL Documentation,了解具有顶点[0,0,0][1,0,0][0,1,0][0,0,1],{{的特殊情况六面体的详细信息。 1}},[1,1,0][1,0,1][0,1,1],没有(我相信)失去一般性。