2012-03-07 3 views
1

私はDelaunay三角測量を計算するために使用できるクワッドエッジデータ構造を記述するGuibas-Stolfi論文を調べていました。私は、Javaを使ってQuadEdgeのデータ構造を実装しています。クワッドエッジデータ構造makeEdgeロジック

私はこのウェブサイトQuad Edge data Structure Javaに記載されている実装に従っていました。

要するに要約すると、クワッドエッジ構造が2つの動作を含む即ち

  1. makeEdge - >スプライス(B)
  2. サブ分割に存在するエッジEのクワッドエッジを返し - >クワッドエッジaおよびbに関連するトポロジを変更するために使用される関数。

ここで、Quad Edgeのデータ構造は、DataとNext pointerという2つのフィールドで構成されています。

次のフィールドは、式 e [r] .Next = e(Rot^r)Onextを使用して計算されます。 Onextについての考えについては

、私は今Guibas-Stolfi紙

Edge Functions

からの図を添付しています、サンプルコードは、クワッドエッジのすべての4つの部分については、次のポインタを設定します。 1

q0 = new QuadEdge(); 
q1 = new QuadEdge(); 
q2 = new QuadEdge(); 
q3 = new QuadEdge(); 

q0.Onext = q0; 
q1.Onext = q3; //on the sphere, left=right (How?? or Why??) 
q2.Onext = q2; 
q3.Onext = q1; 

を次のように彼らはOnextつまりは(次の反時計回りのエッジはeと同じ起源を持つ)エッジ自体であれば、デュアルエッジが取られたときに私の質問は、なぜそれが他のエッジであるた設定されています。

この質問を間違った場所に置いた可能性があります。私はそれとそれによって引き起こされる不便をお詫びします。 Q1とQ3の両方が同じポイント(無限遠ダミーポイント)で、原点を持っているよう

おかげで、 Chaitanya

答えて

1

は、それは見えます。だからこそq1.oNext == q3q3.oNext == q1です。