2016-10-07 10 views
0

Я решил использовать CGAL для достижения трехмерной триангуляции треугольника Delaunay файла ландшафта (.xyz). Триангуляция завершена, но теперь мне нужен метод для извлечения контуров при желаемых значениях z-height. Метод, который я рассматриваю, заключается в том, чтобы получить дерево AABB из граней триангуляции, а затем взять пересечение плоскости (при желаемом значении z-высоты) против дерева.Триангуляция рельефа местности CGAL и извлечение изо-контуров

Вопросы:

  1. Я не знаю, как принять триангуляции граней и получить дерево AABB из них. Я читал документацию и другие форумы, но процесс все еще не ясен.

  2. Когда пересечение плоскости и дерева возвращается, я подозреваю, что пересечение дает набор сегментов, мне нужно, чтобы эти сегменты упорядочивались из замкнутого множества. Можно ли привести или определить порядок?

  3. Как обнаружить, что существует множество замкнутых множеств, например, если пересечение плоскости разрезает две отдельные/отдельные горные вершины, мне нужны два отдельных контура вокруг горных вершин. Может ли это быть идентифицировано через возвращенные сегменты пересечения?

ответ

1

Вы можете конвертировать триангуляции в Surface_mesh и использовать функцию Polygon_mesh_slicer для извлечения изоконтуры.

+0

Есть ли «лучший» или «самый быстрый» способ перехода от триангуляции Делоне в поверхностную сетку? Имеет ли смысл принимать триангуляцию, перебирать все конечные грани и добавлять каждую грань в виде лица к сетке? –

+0

Самый быстрый способ - это итератор над конечными гранями, предварительно добавив вершины триангуляции в Surface_mesh и установив вершины DT вершин -> SM вершин. (Если у вас есть индексы в вершинах триангуляции, это еще проще). – sloriot

+0

Итак, я взял 2D-триангуляцию (с проекционными свойствами для 3D-точек) файла .xyz, представляющего ландшафт. Затем я перебираю конечные грани, добавляя каждую грань к сетке. (Я выводю сетку в .off-файл и проверяю, что это правильно). Однако, когда я использую polygon_mesh_splicer, пересекая сетку с плоскостью, результат не так быстр, как хотелось бы. Кроме того, на выходе имеется много пар одинаковой или двух точек. Нет ни одного сплошного контура, ни 2 или 3 контура. (обратите внимание, что точки изо-контура верны, но мне нужен один контур) Есть ли способ ускорить его? –