Доступ к вершинам треугольника++ (триангуляция Делоне/Вороного) Класс-оболочка

Я использую класс-оболочку треугольника++ из http://www.compgeom.com/~piyush/scripts/triangle/ для триангуляции облака точек для визуализации с помощью OpenGL. Я смог ввести свои точки и рассчитать триангуляцию. После этого я также смог получить доступ к вершинам через итератор вершин, как это показано в примере main.cpp, включенном в пакет. Теперь я хочу получить доступ к вершинам через итератор граней (также есть пример в main.cpp). Я хочу перебрать все грани и получить три вершины для каждой грани. Кто-нибудь сделал это уже? Я пытался изменить класс-оболочку уже ~ 2 дня, но безуспешно.

Заранее большое спасибо! Себастьян


person Sebastian    schedule 20.08.2010    source источник
comment
Работает ли пример программы для вас? В вашем случае не работает тот же код? Зачем нужно модифицировать обертку?   -  person Tom Sirgedas    schedule 20.08.2010


Ответы (2)


пример кода работает, но не содержит того, что я хочу. Я хочу взять одну грань и получить все три вершины отдельно, например:

Delaunay::fIterator fit = delobject.fbegin(); двойной x0 = подходит.GetVertex(0).x(); двойной y0 = подходит.GetVertex(0).y(); двойной z0 = подходит.GetVertex(0).z(); двойной x1 = подходит.GetVertex(1).x(); двойной y1 = fit.GetVertex(1).y(); двойной z1 = fit.GetVertex(1).z();

или что-то подобное. Конечно, этих функций не существует, но я даже не знаю, как вообще получить доступ к вершинам конкретной грани.

person Sebastian    schedule 20.08.2010

Я получил решение проблемы. Просто для полноты, которая работает следующим образом:

double x0 = delobject.point_at_vertex_id(delobject.Org(fit))[0];
double y0 = delobject.point_at_vertex_id(delobject.Org(fit))[1]; 
double x1 = delobject.point_at_vertex_id(delobject.Dest(fit))[0];
double y1 = delobject.point_at_vertex_id(delobject.Dest(fit))[1];
double x2 = delobject.point_at_vertex_id(delobject.Apex(fit))[0];
double y2 = delobject.point_at_vertex_id(delobject.Apex(fit))[1];
...
person Sebastian    schedule 24.08.2010