代码之家  ›  专栏  ›  技术社区  ›  Will

用cgal创建和相交六面体

  •  1
  • Will  · 技术社区  · 14 年前

    使用 python bindings for cgal ,i can't work out how create a hexahedran,nor how to calculate its intersection with another hexahedraon.

    我有8个输入点,这是六面体的角:

    我的代码执行以下操作:

    p=polyhedran_3())
    底部=P.make_四面体(P[0]、P[1]、P[2]、P[3])
    顶部=P.make_四面体(P[4],P[5],P[6],P[7])
    左=P.make_四面体(P[0]、P[1]、P[5]、P[4])
    右=P.make_四面体(P[3]、P[2]、P[6]、P[7])
    前=P.make_四面体(P[4]、P[7]、P[3]、P[0])
    back=p.make_四面体(p[1]、p[2]、p[6]、p[5])
    < /代码> 
    
    

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

    如何使用python 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 回复  |  直到 14 年前
        1
  •  1
  •   Justin L.    14 年前

    你将要创建一个初始四面体,然后使用 split_edge 三次,并将新创建的顶点移动到它们应该所在的位置。然后再结合使用 split_facet 裂边 把六面体“塑造”到位。

    Section 25.3.7 of CGAL Documentation 要看到这一点,对于一个有顶点的特殊情况六面体,要进行明确的详细说明。 [0,0,0] , [1,0,0] , [0,1,0] , [0,0,1] , [1,1,0] , [1,0,1] , [0,1,1] [1,1,1] 在不丧失一般性的情况下。