【发布时间】:2013-09-02 17:58:11
【问题描述】:
我用cgal写了一个程序如下:
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Triangulation_vertex_base_2<K> Vb;
typedef CGAL::Triangulation_face_base_with_info_2<FaceInfo2,K> Fbb;
typedef CGAL::Constrained_triangulation_face_base_2<K,Fbb> Fb;
typedef CGAL::Triangulation_data_structure_2<Vb,Fb> TDS;
typedef CGAL::Exact_predicates_tag Itag;
typedef CGAL::Constrained_Delaunay_triangulation_2<K, TDS, Itag> CDT;
typedef CDT::Point Point;
typedef CGAL::Polygon_2<K> Polygon_2;
int main( )
{
//construct two non-intersecting nested polygons
Polygon_2 polygon1;
polygon1.push_back(Point(0,0));
polygon1.push_back(Point(2,0));
polygon1.push_back(Point(2,2));
polygon1.push_back(Point(0,2));
CDT cdt;
insert_polygon(cdt,polygon1);
CDT::Finite_faces_iterator t=cdt.faces_begin();
for (t = cdt.finite_faces_begin(); t != cdt.finite_faces_end(); t++)
{
//how can i achieve that?
}
}
我想在 for 循环的每次迭代中获取从 cdt.finite_faces_begin() 到 t 指向的三角形的顶点。
例如在循环的第一次迭代中,我得到第一个三角形的顶点,在循环的第二次迭代中,我得到第一个+第二个三角形的顶点,在第三个中,我得到第一个顶点+第二个+第三个三角形等等。 我怎样才能做到这一点?
【问题讨论】:
-
你应该明确你想要获得什么。当你遍历面时,在循环体中你可以对第 i 个面做一些事情。如果你想为 first+second+..+i 做点什么,你应该把它收集在一个容器中。
标签: c++ triangulation cgal delaunay