기존 응용 프로그램을 C#에서 C++/Qt로 변환하려고합니다. 기존 코드는 MIConvexHull 라이브러리를 사용하여 3 차원 공간에서 점 집합의 볼록 선체를 계산합니다. Faces 함수를 사용하여면의 목록을 가져온 다음 각면의 개별 정점을 얻기 위해 반복합니다. CGAL 라이브러리를 사용하여이 작업을 수행하려고하지만이 작업을 수행하는 분명한 방법이없는 것 같습니다. convex_hull_ 3 함수를 사용하여 convex hull을 생성하지만 거기에서 무엇을 해야할지 명확하지 않습니다.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 라이브러리로이를 수행하는 방법을 놓치고 있습니다. 저는 꽤 많은 문서를 읽었습니다. 그러나 당신이 이미 전산 기하학에 대한 대학원 수준의 지식을 가지고 있다고 가정하는 것으로 보입니다. 올바른 방향으로 나를 가리켜 줄만한 것이라면 감사하겠습니다.