下面是一些代码:

struct K : CGAL::Exact_predicates_inexact_constructions_kernel {};

typedef CGAL::Triangulation_vertex_base_2<K>               Vb;
typedef CGAL::Constrained_triangulation_face_base_2<K>     Fb;
typedef CGAL::Triangulation_data_structure_2<Vb,Fb>        TDS;
typedef CGAL::Exact_predicates_tag                         Itag;
typedef CGAL::Constrained_triangulation_2<K, TDS, Itag>    CT;
typedef CT::Point                                          Point;

for (CT::Finite_edges_iterator eit = ct.finite_edges_begin();
    eit != ct.finite_edges_end(); ++eit){
    // TODO: list vertex co-ordinates here
}

手册

“边缘不显式地表示,它们只是隐含通过两个面的邻接关系中表示的每个边缘具有两个隐式表示:其相对的顶点变址I,可以表示为一个面f的边缘以及f的邻居(I)的边缘“。

这很好的我......但我怎么使用上面给出的代码CT::Finite_edges_iterator得到边缘结束顶点?

<强>更新 我设法想出此解决方案:

Segment s = ct.segment(eit);
const Point& p1 = s.point(0);
const Point& p2 = s.point(1);

我仍然在寻找一个更好的方式来做到这一点。

有帮助吗?

解决方案

我设法想出此解决方案:

Segment s = ct.segment(eit);
const Point& p1 = s.point(0);
const Point& p2 = s.point(1);

我仍然在寻找一个更好的方式来做到这一点。

其他提示

我已经使用类似

三角:: Vertex_handle fVertex = eit->一阶>顶点(三角:: CCW(eit->第二));

三角:: Vertex_handle sVertex = eit->一阶>顶点(三角:: CW(eit->第二));

在边缘提供在脸上的顶点的索引。三角面对只有3 CGAL顶点。边缘是一个三重峰; (脸,I,J)。您可以获得第i个(无论是0,1 ,或2)使用所述顶点(ⅰ)方法一个面的顶点。。因此,要获得顶点,使用:

v1 = eit->first->vertex(eit->second);
v2 = eit->first->vertex(eit->third);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top