В моем примере я получаю несколько точек, которые образуют куб и хранятся в контейнере Eigen::MatrixXd
, например:
// Inline mesh of a cube
const Eigen::MatrixXd cubeV= (Eigen::MatrixXd(8,3)<<
0.0,0.0,0.0,
0.0,0.0,1.0,
0.0,1.0,0.0,
0.0,1.0,1.0,
1.0,0.0,0.0,
1.0,0.0,1.0,
1.0,1.0,0.0,
1.0,1.0,1.0).finished();
Теперь я хотел бы обработать эти точки в библиотеке cgal на основенапример на этот урок .Однако вы можете видеть, что точки ввода в функции cgal имеют вид:
std::vector<Pwn> points;
, где Pwn
соответствует:
// Types
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef Kernel::Point_3 Point;
typedef Kernel::Vector_3 Vector;
typedef std::pair<Point, Vector> Pwn;
или во втором примере формы:
PointList points;
, где снова PointList
соответствует:
// Types
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef Kernel::FT FT;
typedef Kernel::Point_3 Point;
typedef CGAL::Point_with_normal_3<Kernel> Point_with_normal;
typedef Kernel::Sphere_3 Sphere;
typedef std::vector<Point_with_normal> PointList;
Таким образом, я хотел спросить, как я могу привести свою структуру Eigen::MatrixXd
к Pwn
или PointList
так что я могу использовать их с функциями Cgal.Я знаю, что мог бы сделать цикл и отодвинуть каждую точку по отдельности, но я думаю, что вместо этого должен быть более эффективный или более точный способ сделать это.