2017-08-11 8 views
-1

私の問題は、このライブラリは、三角形を構成する線の配列だけを返すことができ、三角形自体は返すことができないということです。 誰もが三角形をすべて取得する方法を知っていますか?メッシュライブラリを使用して点の配列に基づいて三角形のグリッドを作成する処理で、線の配列(Delaunay図)からすべての三角形を見つけます(Delaunay図)

ライブラリはここにある:http://leebyron.com/mesh/

and here's a picture for refrence

+0

あなたに役立つかもしれないアルゴリズムを見つけるために、グーグルで「線のセットを三角形に変換」しようとしましたか?あなたがそれらを試したとき何が起こったのですか? –

+0

私は永遠に取ることができないものは見つけられません... –

+0

おそらく別のライブラリが好きです –

答えて

0

良い質問。まず解決策は、あなたに望みのフォーマットで結果を与えることができるライブラリを取ることです。 Delaunay三角形分割はDelaunay図ではなく、このライブラリが提供するものが必要です。

非常に簡単な結果ライブラリから三角形を得ることは可能です。内側の図の点がn の辺(getLinked()メソッド)の場合、それはnの三角形の一部です。三角形の他の辺は、辺を角度でソートすることによって計算されます( )。点が外側(凸包上)で、1対の辺の間の角度が180度より大きい より大きい場合、その対の三角形は存在しません。

アルゴリズムのようである:

for each point p1: 
    neighbours = delaunay.getLinked(p1) 
    sort neighbours by angle to point p1 
    for i=0 to size(neighbours) 
    p2 = neighbours[i] 
    p3 = neighbours[(i+1) % size(neighbours)] 
    if (angle(p3, p1) - angle(p2, p1)) % 360deg > 180deg: 
     continue # Outer triangle 
    if p2 > p1 and p3 > p1: 
     continue # Already processed 
    print result triangle (p1, p2, p3) 

チェック(P2、P3> P1)各三角形は、3回生成されているので、同じtrinaglesを除去することです。

関連する問題