重複しない三角形で構成される2Dメッシュと、点のセット。各ポイントがどの三角形にあるかを判断する最良の方法は何ですか? { P I } M iは= 1 ⊂ ∪ NのK = 1 T K
たとえば、次の画像には、、があるため、リストを返す関数が。P 2 ∈ T 4 P 3 ∈ T 2 F F (P 1、P 2、P 3)= [ 2 、4 、2 ]
Matlabには、Delaunayメッシュに必要なことを行う関数pointlocationがありますが、一般的なメッシュでは失敗します。
私の最初の(愚かな)考えは、すべてのノード、すべての三角形をループして、どの三角形が入っているかを見つけることです。しかし、これは非常に非効率的です。取るの作品を。
私の次の考えは、すべての点について、最近傍検索を介して最も近いメッシュノードを見つけ、その最も近いノードに接続された三角形を調べることです。この場合、作業はになります。ここではメッシュ内のノードに接続された三角形の最大数です。このアプローチには、解決できるが厄介な問題がいくつかあり、
- 効率的な最近傍検索を実装する(またはそれを含むライブラリを見つける)必要がありますが、これは簡単な作業ではありません。
- 各ノードに接続されている三角形のリストを保存する必要がありますが、私のコードは現在設定されていません-現在、ノード座標のリストと要素のリストがあります。
全体としてはエレガントではないように思えますが、もっと良い方法があるはずです。これは多くの問題であるに違いないので、理論上または利用可能なライブラリの観点から、ノードがどの三角形にあるのかを見つけるための最善の方法を誰かがお勧めできるかどうか疑問に思っていました。
ありがとう!