二次元空間における三角測量 - (与えられた例エッジ頂点)

  三角測量の多くの異なる種類が、さまざまなニーズに基づいて様々なアルゴリズムがある、我々は順序が三角測量の頂点のか、このセットは、エッジの頂点が与えられた後に話しました。

そのような次の図のように:

図I

  エッジ点が順序に従って配置されている与えるいくつかの方法があるが、それは、三角形に分割されますが、私達はちょうどPouchengどのようにそれを気にしない、ライン上の直角三角形を取得する必要があります。

ちょうど図のように凸多角形(凸多角形)のためのような、ライン上の三角点を有する組成物を取るために、出発点及び開始点を見つけることは非常に簡単である。コードを記述するのが面倒。

  元のポリゴンの範囲を超えてしまうよう凹多角形(凹多角形)のために、単に、三角形に分割することができません。

図II

  トライアングルACD組成物は大幅に単純に分割しない、境界を超えています。

  PS:ドロネー行い、これとドロネー三角形分割を混同しないでくださいこれらの離散点で構成される凸多角形で取得した三角測量離散的な点、です。

  私は最近、この機能を行って、その関連する実装方法を見て、>>多くの人々はずっと前に、三角測量の論文でのモデルの<<凹ポリゴンベースの3次元再構成を実現することを見出した:PLA測量の研究所とのマッピングをジャーナル1999年9月の問題。

そして、基本的に......紙がいくつかの定義、いくつかの性質を考えると、また、非常に問題があった基本的には、この細分化ロジックを実装していませんでした、、、コピーするために多くのミスを多くのコードをコピーして見て、そしてそれは私がでしょう、やっていないアルゴリズムの正しさの証明として、アルゴリズムを与えます

それを信じるためにそれを指示。

  したがって、いくつかあるうちのアルゴリズムを合理化の論文(例えば頂点リストとしては順序がリストの順序で、リスト<のVector3>点です)。

  A.は、頂点の投影を探します

    1.1定義:頂点を一時リストと新規ポリゴンの残りの頂点のリストから除去され、Aがポリゴン内部除去頂点は新しいものではないが、それは、図II、B、C、Dに例えば凸頂点(あります)Eは、凸頂点点、F点AEは、パッケージ内のポリゴンで構成されているので、凸頂点ではありません

    1.2機能:いない場合は、凸頂点、バックリスト内の元の位置に、この頂点は、頂点が凸である場合、頂点を見つける頂点は分割することができるかどうかをテストします。

  II。頂点は、凸頂点分割されていると判断し

    2.1定義:図IIにおけるようなABCとして三角形の左に隣接して右の点が除去されると元のリストのドットリストは、他の頂点が含まれていない場合、ポイントを分割する(他の点が存在しない、B点が利用可能です分割点。ACD)は、Fが分割されていない点に点Cを有しています

    2.2機能:それは割り切れ頂点でない場合は、戻って、リスト内の元の位置に、この頂点が頂点を見つけます。

  III。頂点がリストから削除分けることができます置きます

    3.1機能:前三角形リストへの戻り値に記録された三角形のドットは、それが削除され等しい再度差し込み、スプリットの外ではありません。

  フォー、最後の3つの頂点、三角形の最後の3つの頂点の最後になるまで繰り返します。

    4.1機能:戻り値はリストに追加される三角形の最後の3つの頂点は、分割が完了しています。

  

  頂点の元のリストは、メッシュの頂点の数と一致する必要通常のメッシュの数、使用している場合ので、私は、むしろインデックスの組成物よりも、三角形をUnity3D、入力として頂点の元のリストを使用して、出力の値は、三角形の頂点の後に分割される戻り説明次に頂点として(例えば、わずか8立方体の頂点)

次いでMesh.triangles三角形によって設定された、自動的に補間エラーが点灯し、共有された頂点におけるそれぞれのベクトルを言うことで、わずか8通常計算されます。

 

  ダウン達成するためのコードがあります

 

おすすめ

転載: www.cnblogs.com/tiancaiwrk/p/11052699.html