3

ここにいくつかのコードがあります:

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
}

マニュアルから:

「エッジは明示的に表現されず、2 つの面の隣接関係を通じて暗黙的に表現されるだけです。各エッジには 2 つの暗黙的な表現があります。インデックス i の頂点に対向する面 f のエッジは、 f の隣接 (i) のエッジ。"

CT::Finite_edges_iteratorそれは私には問題ありません...しかし、上記のコードでa を使用してエッジの終了頂点を取得するにはどうすればよいですか?

更新: 私はこの解決策を思い付くことができました:

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

私はまだこれを行うためのより良い方法を探しています。

4

3 に答える 3

2

私はこの解決策を思い付くことができました:

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

私はまだこれを行うためのより良い方法を探しています。

于 2010-08-11T09:10:06.303 に答える
1

私は次のようなものを使用しています

Triangulation::Vertex_handle fVertex = eit->first->vertex(Triangulation::ccw(eit->second));

Triangulation::Vertex_handle sVertex = eit->first->vertex(Triangulation::cw(eit->second));

于 2013-10-09T17:27:05.440 に答える
0

エッジは、面上の頂点のインデックスを提供します。三角形分割の面は、CGAL では 3 つの頂点しかありません。エッジはトリプレットです。(顔、i、j)。vertex(i) メソッドを使用して、面の i 番目 (0、1、または 2) の頂点を取得できます。. したがって、頂点を取得するには、次を使用します。

v1 = eit->first->vertex(eit->second);
v2 = eit->first->vertex(eit->third);
于 2010-01-22T06:10:20.347 に答える