создание и пересечение шестигранников с CGAL - PullRequest
1 голос
/ 01 июля 2010

Используя привязки Python для CGAL , я не могу понять, как создать шестигранник или как рассчитать его пересечение с другим шестигранником.

Iимеют 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 Ответ

1 голос
/ 01 июля 2010

Вы захотите создать начальный тетраэдр, затем трижды используйте split_edge и переместите вновь созданные вершины туда, где они должны быть. Затем используйте другую комбинацию split_facet и split_edge, чтобы «сформировать» шестигранник на место.

См. Раздел 25.3.7 Документация CGAL , чтобы увидеть, как это делается в явных деталях для особого случая шестигранника с вершинами [0,0,0], [1,0,0], [0,1,0] [0,0,1], [1,1,0], [1,0,1], [0,1,1] и [1,1,1], без (я считаю) какой-либо потери общности.

...