2017-01-26 3 views
-1

BenDiによってthis libraryが見つかったので、一連のポイントからボロノイエッジを作成できます。次のコードを使って、私のボロノイセルのエッジを計算することができます。ボロノイエッジからポリゴンを取得する

using System; 
using System.Collections.Generic; 
using BenTools.Mathematics; 
namespace Voronoi 
{ 
    class MainClass 
    { 
     public static void Main(string[] args) 
     { 
      Vector[] V = new Vector[4]; 
      V[0] = new Vector(1.3, 2.8); 
      V[1] = new Vector(0.5, 2.8); 
      V[2] = new Vector(2, 1.8); 
      V[3] = new Vector(1, 3); 

      List<Vector> VoronoiSource = new List<Vector>(); 
      VoronoiSource.AddRange(V); 

      VoronoiGraph Graph = Fortune.ComputeVoronoiGraph(VoronoiSource); 
      Console.WriteLine("Graph has {0} edges", Graph.Edges.Count); 

      foreach (var Edge in Graph.Edges) 
      { 
       Console.WriteLine("Edge: {0}", Edge.DirectionVector); 
      } 
     } 
    } 
} 

出力:

Graph has 5 edges 
Edge: (-0,5547;-0,8321) 
Edge: (0,8192;0,5735) 
Edge: (0;1) 
Edge: (0,5547;0,8321) 
Edge: (-0,3714;0,9285) 

どのように私はこれらのエッジからポリゴンとしてボロノイ・セルを計算することができますか?

答えて

1

各エッジの中間点と各サイトまでの距離を選び、結果を並べ替えて1番目と2番目のものを選び(それらが等しい場合)、ポリゴンに保存します。ボーダーにはもちろん、エッジが1つしかありません。

関連する問題