2010-08-20 3 views
2

J'utilise la classe wrapper triangle ++ de http://www.compgeom.com/~piyush/scripts/triangle/ pour trianguler un nuage de points pour une visualisation avec OpenGL. J'ai été capable de mettre mes points et de caluculer la triangulation. Après cela, j'ai également été en mesure d'accéder aux sommets sur un itérateur de vertex, comment il est montré dans l'exemple main.cpp inclus dans le paquet. Maintenant, je veux accéder aux sommets sur l'itérateur de face (il y a aussi un exemple dans le main.cpp). Je veux parcourir tous les visages et obtenir les trois sommets pour chaque visage. Est-ce que quelqu'un l'a déjà fait? J'ai essayé de modifier la classe d'emballage pour ~ 2 jours déjà sans succès.Accès aux vertex dans le triangle ++ (triangulation delaunay/voronoi) Wrapper class

merci beaucoup à l'avance! Sebastian

+0

L'exemple de programme fonctionne pour vous? Le même code ne fonctionne-t-il pas dans votre cas? Pourquoi avez-vous besoin de modifier le wrapper? –

Répondre

0

l'exemple de code fonctionne, mais ne contient pas ce que je veux. Je veux prendre une face et obtenir les trois sommets séparément, par exemple:

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();

ou quelque chose comme ça. Bien sûr, ces fonctions n'existent pas, mais je ne sais même pas comment accéder aux sommets d'un visage concret en général.

0

J'ai une solution au problème. Juste pour l'exhaustivité, qui fonctionne comme ceci:

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]; 
...