1
我試圖將現有的應用程序從C#轉換爲C++/Qt。現有的代碼使用MIConvexHull庫來計算三維空間中一組點的凸包。它使用Faces函數來獲取面的列表,然後遍歷它們以獲取每個面的單個頂點。我想用CGAL庫來做到這一點,但似乎沒有一個明顯的方法來做到這一點。使用convex_hull_ 3函數創建凸包,但從那裏開始並不明顯。CGAL凸包與Qt
我需要遍歷生成的多面體對象的構面。對於每個方面,我需要遍歷頂點。對於每個頂點,我需要提取x,y和z座標,以形成一個QVector3D對象。
這是現有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庫做到這一點。我已經閱讀了相當多的文檔,但似乎認爲你已經擁有研究生級別的計算幾何知識,但我沒有。任何東西指向我在正確的方向,將不勝感激