Skip to content

Can't convert CGAL::Polyhedron_3 to mesh #1795

@szobov

Description

@szobov

Describe the bug

Hi there,
Thanks a lot for such a wonderful project.
I'm trying to use it together with CGAL, but when I tried to convert Polyhedron to the mesh I got:

typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;

int main(int argc, char * argv[])
{
            Polyhedron P;
            Eigen::MatrixXi convex_part_faces;
            Eigen::MatrixXd convex_part_vertices;
            igl::copyleft::cgal::polyhedron_to_mesh(P, convex_part_vertices, convex_part_faces);
}
In file included from /.../libigl/include/igl/copyleft/cgal/polyhedron_to_mesh.h:40,
                 from /.../libigl-example-project/src/test/src/igl.cpp:19:
/.../libigl/include/igl/copyleft/cgal/polyhedron_to_mesh.cpp: In instantiation of ‘void igl::copyleft::cgal::polyhedron_to_mesh(const Polyhedron&, Eigen::PlainObjectBase<DerivedD>&, Eigen::PlainObjectBase<DerivedVC>&) [with Polyhedron = CGAL::Polyhedron_3<CGAL::Epeck>; DerivedV = Eigen::Matrix<double, -1, -1>; DerivedF = Eigen::Matrix<int, -1, -1>]’:
/.../libigl-example-project/src/test/src/igl.cpp:256:95:   required from here
/.../libigl/include/igl/copyleft/cgal/polyhedron_to_mesh.cpp:32:14: error: cannot convert ‘CGAL::cpp11::result_of<CGAL::Lazy_construction_nt<CGAL::Epeck, CGAL::CartesianKernelFunctors::Compute_x_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CartesianKernelFunctors::Compute_x_3<CGAL::Simple_cartesian<CGAL::Gmpq> > >(CGAL::Point_3<CGAL::Epeck>)>::type’ {aka ‘CGAL::Lazy_exact_nt<CGAL::Gmpq>’} to ‘Eigen::DenseCoeffsBase<Eigen::Matrix<double, -1, -1>, 1>::Scalar’ {aka ‘double’} in assignment
   32 |       V(v,0) = p->point().x();
/.../libigl/include/igl/copyleft/cgal/polyhedron_to_mesh.cpp:33:14: error: cannot convert ‘CGAL::cpp11::result_of<CGAL::Lazy_construction_nt<CGAL::Epeck, CGAL::CartesianKernelFunctors::Compute_y_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CartesianKernelFunctors::Compute_y_3<CGAL::Simple_cartesian<CGAL::Gmpq> > >(CGAL::Point_3<CGAL::Epeck>)>::type’ {aka ‘CGAL::Lazy_exact_nt<CGAL::Gmpq>’} to ‘Eigen::DenseCoeffsBase<Eigen::Matrix<double, -1, -1>, 1>::Scalar’ {aka ‘double’} in assignment
   33 |       V(v,1) = p->point().y();
/.../libigl/include/igl/copyleft/cgal/polyhedron_to_mesh.cpp:34:14: error: cannot convert ‘CGAL::cpp11::result_of<CGAL::Lazy_construction_nt<CGAL::Epeck, CGAL::CartesianKernelFunctors::Compute_z_3<CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, CGAL::CartesianKernelFunctors::Compute_z_3<CGAL::Simple_cartesian<CGAL::Gmpq> > >(CGAL::Point_3<CGAL::Epeck>)>::type’ {aka ‘CGAL::Lazy_exact_nt<CGAL::Gmpq>’} to ‘Eigen::DenseCoeffsBase<Eigen::Matrix<double, -1, -1>, 1>::Scalar’ {aka ‘double’} in assignment
   34 |       V(v,2) = p->point().z();
 2make[2]: *** [src/test/CMakeFiles/decompose_exe.dir/build.make:63: src/test/CMakeFiles/decompose_exe.dir/src/igl.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1060: src/test/CMakeFiles/decompose_exe.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

I suppose I did something wrong, but I found no clue in docs how to fix it.

Thanks in advance.
Cheers

Platform

  • Windows
  • macOS
  • [ X] Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions