既存のアプリケーションをC#からC++/Qtに変換しようとしています。既存のコードは、MIConvexHullライブラリを使用して、3次元空間内の点集合の凸包を計算しています。 Faces関数を使用して面のリストを取得し、それらをループして各面の個々の頂点を取得します。私はこれをCGALライブラリで行いたいと思いますが、これを行うには明らかな方法はないようです。 convex_hull_3関数を使って凸包を作成しますが、そこからは何をすべきか分かりません。CGAL Convex Hull(Qt付き)
結果の多面体オブジェクトのファセットを反復処理する必要があります。各ファセットに対して、頂点を繰り返し処理する必要があります。各頂点について、QVector3Dオブジェクトを形成するためにx、y、z座標を抽出する必要があります。
ここには、既存のC#コードのコードスニペットがあります。この場合、baseContourは3D頂点のリストです。
var triangulationFaces = MIConvexHull.ConvexHull.Create(baseContour).Faces;
var triangulationPoints = new List<Point3D>();
var triangulationIndices = new List<int>();
int i = 0;
foreach (var f in triangulationFaces)
{
var x = f.Vertices.Select(p => new Point3D(p.Position[0], p.Position[1], p.Position[2])).ToList();
triangulationPoints.AddRange(x);
triangulationIndices.Add(3 * i);
triangulationIndices.Add(3 * i + 1);
triangulationIndices.Add(3 * i + 2);
i++;
}
私はCGALライブラリでこれを行う方法を忘れています。私はかなりのドキュメンテーションを読んだことがありますが、あなたはすでに計算幾何学の大学院レベルの知識を持っていると思われます。正しい方向に私を向ける何かが評価されるでしょう