2015-09-09 3 views
1

Я использую CGAL для выполнения триангуляции 3d delaunay для большого набора точек.Периодическая 3d триангуляция - индексирование ячеек

Моя цель состоит в том, чтобы сгенерировать выходной файл с форматом:

ICell Vertex1 Vertex2 Vertex3 Vertex4 NeigborCell1 NeighborCell2 .... 

Где все значения индексов, соответствующие конкретной ячейки и вершины.

Для этого я включил библиотеку «Карта» и использовал ее для обработки вершинных дескрипторов и ручек Cell для привязки их к индексу.
Этот метод отлично работает для вершин, но в случае ячеек он выводит все ячейки, которые были сгенерированы в триангуляции (включая все периодические изображения той же ячейки).
Кроме того, поскольку изображения ячеек имеют разные ячейки, им присваивается другой индекс (так много соседей тоже являются изображениями)

Есть ли способ перебора между ячейками один раз? Как я могу индексировать их таким образом, чтобы каждый из них получал уникальный индекс?

Заранее за вашу помощь.

ответ

1

Я боюсь, что вы не можете проходить так, как хотите, по крайней мере, в текущей версии пакета. Вы можете сделать это только на тетраэдрах (геометрическое вложение ячеек) с помощью Periodic_tetrahedron_iterator с соответствующим типом Iterator_type. Возможно, вы можете взломать код Periodic_tetrahedron_iterator, чтобы сделать то, что вам нужно ...

+0

Большое спасибо за информацию. Можете ли вы показать мне цикл по всем тетраэдрам и как я могу построить каждую уникальную ячейку? Есть ли способ получить соседние тетраэдры из класса тетраэдров? –

+0

Нет, вы не можете получить клетку из тетраэдра, так что вы тоже не можете получить ее соседа. Вот почему код должен быть взломан. «Цикл» над тетраэдрами реализуется в классе Periodic_3_triangulation_tetrahedron_iterator_3 в файле include/CGAL/Periodic_3_triangulation_iterators_3.h Это должно быть возможно взломать его для итерации по ячейкам вместо тетраэдров. –

Смежные вопросы