CGAL 3D メッシュ生成のいくつかの概念を理解しようとしています。私の特定のケースでは、多面体メッシュを指定して四面体メッシュを生成しようとしています。例として使用している多面体メッシュには、2 つの接続されていない凸領域があります。
CGAL ドキュメンテーションを正しく理解していれば、3D メッシュ生成によって三角形分割が作成されます。これは、いくつかの点 (この場合は、入力多面体メッシュ内の点) の凸包の四面体メッシュです。
三角形分割の四面体の一部は多面体メッシュの外側にある可能性があるため、3D 四面体メッシュを生成するときに CGAL が実際に返すのは、CGAL ドキュメントでは C3T3 と呼ばれるオブジェクトであり、四面体、ファセット、セグメント、またはポイントが内部にあるかどうかを照会できます。私の多面体メッシュ。これは正しいですか?
小さなチェックを行ったところ、次の出力が得られました。
std::cout << "Number of cells in triangulation " << visualMesh.triangulation().number_of_cells() << "\n";
std::cout << "Number of finite cells in triangulation " << visualMesh.triangulation().number_of_finite_cells()
<< "\n";
std::cout << "Number of cells in complex " << visualMesh.number_of_cells_in_complex() << "\n";
std::cout << "Number of cells in c3t3 " << visualMesh.number_of_cells() << "\n";
std::cout << "Number of facets in complex " << visualMesh.number_of_facets_in_complex() << "\n";
std::cout << "Number of facets in c3t3 " << visualMesh.number_of_facets() << "\n";
std::cout << "Number of vertices in complex " << visualMesh.number_of_vertices_in_complex() << "\n";
std::cout << "Number of coners " << visualMesh.number_of_corners() << "\n";
Number of cells in triangulation 67258
Number of finite cells in triangulation 61266
Number of cells in complex 57433
Number of cells in c3t3 57433
Number of facets in complex 8304
Number of facets in c3t3 8304
Number of vertices in complex 20
Number of coners 20
これらの結果のいくつかは理解できません。まず、 と の違いがよくわかりませnumber_of_facets/cells
んnumber_of_facets/cells_in_complex
。なぜ同じ値を返し、どの場合に異なる値を返すのか。
と についても疑問がnumber_of_vertices_in_complex
ありnumber_of_corners
ます。これは明らかに、元の入力メッシュにある頂点の量を返しています。この場合、number_of_facets/cells[_in_complex]` も元の入力メッシュに関するデータを返しますか? 四面体メッシュにある頂点の数を取得するにはどうすればよいですか?
最後に、四面体メッシュのセル/ファセット/ポイントを反復したい場合、c3t3 イテレーターまたは三角形分割イテレーターを使用する必要がありますか? c3t3 を使用する必要があると思いますが、これは私には不明です。