访问三角形中的顶点++(delaunay / voronoi triangulation)Wrapper类

时间:2010-08-20 15:33:45

标签: c++ geometry computational-geometry delaunay

我正在使用来自http://www.compgeom.com/~piyush/scripts/triangle/的三角形++包装类来对点云进行三角测量,以便用OpenGL进行可视化。 我能够提出我的观点并计算三角测量。之后我还能够通过顶点迭代器访问顶点,它是如何在包中包含的main.cpp示例中显示的。现在我想访问face迭代器上的顶点(theres也是main.cpp中的一个例子)。我想迭代所有面并获得每个面的三个顶点。有没有人这样做过?我一直试图修改包装器类约2天但没有成功。

提前多多感谢! 塞巴斯蒂安

2 个答案:

答案 0 :(得分:0)

示例代码有效,但不包含我想要的内容。我想让一个面分别得到所有三个顶点,例如:

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

或类似的东西。当然这些功能不存在,但我甚至不知道如何通常访问混凝土面的顶点。

答案 1 :(得分:0)

我找到了问题的解决方案。只是为了完整性,它的工作原理如下:

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