Доступ к вершинам в треугольнике ++ (триангуляция Делоне / Вороного) класс Wrapper - PullRequest
2 голосов
/ 20 августа 2010

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

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

Ответы [ 2 ]

0 голосов
/ 24 августа 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];
...
0 голосов
/ 20 августа 2010

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

Delaunay :: fIterator fit = delobject.fbegin (); double x0 = fit.GetVertex (0) .x (); double y0 = fit.GetVertex (0) .y (); double z0 = fit.GetVertex (0) .z (); double x1 = fit.GetVertex (1) .x (); double y1 = fit.GetVertex (1) .y (); double z1 = fit.GetVertex (1) .z ();

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

...