如何在约束delaunay三角剖分中获取三角形的顶点



我用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指向的三角形的顶点。

例如在循环的第一次迭代中,我得到了第一个三角形的顶点,在循环的第二次迭代中我得到了第1+第二个三角形的顶部,在第三次迭代中得到了第一+第二+第三个三角的顶点,依此类推。我怎样才能做到这一点?

如果在第i次迭代中只希望面的三个顶点使用for(inti=0;i<3;++i){t->vertex(i);}t->vertex(i)->point()

如果不希望获得已从上一个面获得的顶点,则必须使用在循环外声明的std::set<Vertex_handle>

最新更新