Я пытаюсь преобразовать существующее приложение из C# в C++/Qt. Существующий код использует библиотеку MIConvexHull для вычисления выпуклой оболочки набора точек в трехмерном пространстве. Он использует функцию Faces для получения списка лиц, а затем пересекает их, чтобы получить отдельные вершины для каждой грани. Я хочу сделать это с помощью библиотеки CGAL, но, похоже, нет очевидного способа сделать это. Создание выпуклой оболочки с помощью функции convex_hull_ 3, но оттуда не очевидно, что делать.CGAL Convex Hull, с Qt
Мне нужно выполнить итерацию по граням получаемого объекта многогранника. Для каждого аспекта мне нужно итерации по вершинам. Для каждой вершины мне нужно извлечь координаты x, y и z, чтобы сформировать объект QVector3D.
Вот фрагмент кода существующего кода C#. В этом случае baseContour представляет собой список трехмерных вершин.
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. Я прочитал немало документации, но, похоже, у вас уже есть высшее знание вычислительной геометрии, чего у меня нет. Любое, что бы указать мне в правильном направлении, было бы оценено