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库做到这一点。我已经阅读了相当多的文档,但似乎认为你已经拥有研究生级别的计算几何知识,但我没有。任何东西指向我在正确的方向,将不胜感激