三角形モデル/メッシュのエッジを蓄積したい。たとえば、三角形の立方体には18個のエッジがあります。
見た目はとてもシンプルで簡単ですが、文字通り複雑すぎます。私は三角形のすべての隣接する情報を持っています。たとえば、隣接する頂点と三角形があり、どの三角形に共通のエッジがあるかはわかっていますが、問題は2つの三角形の間の共通のエッジをどのように抽出するかです。
考慮する必要があることの1つは、エッジのポイント/頂点の重複するインデックスがあってはならないということです。
まず、エッジの総数を数える方法です。立方体には18個のエッジがあることを忘れないでください。
たくさん試しましたが、今は諦めました。:) 何か案が?。
アップデート1:
わかりました。三角形T[i](インデックスv1、インデックスv2、インデックスv3)があり、3つのエッジv1v2、v2v3、v3v1があります。
そして、私はすべてのエッジの隣接する三角形を持っています。
T[i].index_of_sharedTri1_with_edge_v1v2,
T[i].index_of_sharedTri2_with_edge_v2v3,
T[i].index_of_sharedTri3_with_edge_v3v1;
ユニークなエッジを抽出できるループを作成する必要がありますか?比較する必要のある情報は何ですか?エッジの頂点、共有トライインデックス、または何を比較する必要がありますか?私は多くの方法で試しましたが、それはとても複雑でした。
アップデート2:
GLTris *e = new GLTris[nb_Tris*3];
int n = getTotalEdges_Sorted(indices, nb_Tris, e);
cout<<n<<endl;
int ne = RemoveDublicatesFromAnSortedEdgeArray(e, n);
for(int i=0; i<ne; i++)
e[i].Cout();
私はこれを試しましたが、完璧に機能しますが、すべてのタイプのメッシュで機能するかどうかを判断する必要があり、効率的な方法ですか?