From 9b6f9df6cc251d352e76f9d5a46612d11b4f78c8 Mon Sep 17 00:00:00 2001 From: nico Date: Wed, 25 Nov 2020 17:51:02 +1000 Subject: [PATCH] added the possibility to work on any kind of scalar for mesh --- wrap/igl/smooth_field.h | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/wrap/igl/smooth_field.h b/wrap/igl/smooth_field.h index 8c17e4a1..6a3a6674 100644 --- a/wrap/igl/smooth_field.h +++ b/wrap/igl/smooth_field.h @@ -235,9 +235,10 @@ class FieldSmoother #ifdef COMISO_FIELD assert((Ndir==2)||(Ndir==4)); Eigen::MatrixXi F; - Eigen::MatrixXd V; + typename vcg::tri::MeshToMatrix::MatrixXm Vf; - MeshToMatrix::GetTriMeshData(mesh,F,V); + MeshToMatrix::GetTriMeshData(mesh,F,Vf); + Eigen::MatrixXd V = Vf.template cast(); Eigen::MatrixXd output_field; Eigen::VectorXd output_sing; @@ -275,12 +276,14 @@ class FieldSmoother assert((Ndir==2)||(Ndir==4)); Eigen::MatrixXi F; - Eigen::MatrixXd V; - - MeshToMatrix::GetTriMeshData(mesh,F,V); + typename vcg::tri::MeshToMatrix::MatrixXm Vf; + //Eigen::MatrixXd V; + MeshToMatrix::GetTriMeshData(mesh,F,Vf); + //then cast + Eigen::MatrixXd V = Vf.template cast(); Eigen::MatrixXd output_field; - Eigen::VectorXd output_sing; + //Eigen::VectorXd output_sing; igl::n_polyvector(V,F,HardI,HardD,output_field); @@ -402,10 +405,11 @@ public: tri::RequirePerVertexCurvatureDir(mesh); Eigen::MatrixXi F; - Eigen::MatrixXd V; + typename vcg::tri::MeshToMatrix::MatrixXm Vf; Eigen::MatrixXd PD1,PD2,PV1,PV2; - MeshToMatrix::GetTriMeshData(mesh,F,V); + MeshToMatrix::GetTriMeshData(mesh,F,Vf); + Eigen::MatrixXd V = Vf.template cast(); igl::principal_curvature(V,F,PD1,PD2,PV1,PV2,Nring,true);