Я новичок в библиотеке CGAL. и я хочу вычислить PCA объекта Surface_mesh.
CGAL::Surface_mesh<Kernel::Point_3> mesh;
std::ifstream cactus("cat.off");
cactus >> mesh;
Как я уже упоминал в документах CGAL для вычисления PCA, обсуждается просто вычисление PCA для набора точек или треугольников здесь .
Я пробовал приведенный ниже код для размещения строки, но возникла ошибка:
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Surface_mesh.h>
#include <CGAL/linear_least_squares_fitting_3.h>
#include <iostream>
#include <fstream>
#include <sstream>
typedef double FT;
typedef CGAL::Simple_cartesian<FT> K;
typedef K::Line_3 Line;
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef CGAL::Surface_mesh<Kernel::Point_3> SM;
int main(void)
{
Line line;
SM mesh;
std::ifstream cat("cat.off");
cat >> mesh;
linear_least_squares_fitting_3(mesh.faces_begin(),mesh.faces_end(),line, CGAL::Dimension_tag<0>());
return 0;
}