2016-11-04 7 views
0

私は穴のある凹ポリゴンの中心軸を見つける必要があります。私はCGALを使用しています。私の現在のアプローチがある:どのように私はCGALにおけるセグメントドロネーグラフからエッジを抽出していますか?

  1. ポリゴンの2D segment delaunay graph
  2. それはポリゴン
  3. 内側セグメントの得られたセットの場合見つけるために、結果として得られる出力セグメント(二等分線)
  4. テストを各セグメントを抽出し構築しますポリゴンの内側軸を形成する

私はSDGを構築することができますし、テストエッジはまっすぐになるはずですが、私はSDGのエッジを抽出するのに苦労しています。 gボロノイグラフ。点、線と放物線:私が期待するエッジの数の種類があるはずです。

どうすればよいですか?私は正しい軌道にいますか?

また私が供給される方法のいずれかを使用して、グラフのエッジを反復することができる知っていると私はこのエッジの面と反対側の頂点を返し理解します。しかし、どのように私は、たとえば、二等分ラインのエンドポイントを取得するためにこれを使用するのですか?

答えて

1

あなたは機能draw_dual()またはdraw_skeleton()を使用することができます。放物線はセグメントで近似されます。出力をより詳細に制御する必要がある場合は、メソッドの実装を見ることができます。

あなたは、オブジェクトを収集するために、このようなクラスを使用することができます。

struct Collector 
{ 
    std::vector<Ray_2> rays; 
    std::vector<Line_2> lines; 
    std::vector<Segment_2> segs; 

    void operator<<(const Ray_2& p){rays.push_back(p);} 
    void operator<<(const Line_2& p){lines.push_back(p);} 
    void operator<<(const Segment_2& p){segs.push_back(p);} 
}; 
+0

これは私がまさに必要です。ありがとうございました。 – Frank

関連する問題