2010-06-30 65 views
1

使用Python bindings代替CGAL,我無法弄清楚如何創建六面體,也不知道如何計算與另一個六面體的交點。用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

您將要創建一個初始四面體,然後使用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,0][1,0,1][0,1,1]特例六面體,和[1,1,1],沒有(我相信)一般性的任何損失。