From ea95b6c3b64a25bfdfdcb592e34d7e30b645e96e Mon Sep 17 00:00:00 2001 From: Julian Stahl Date: Tue, 2 Jan 2024 19:46:12 +0100 Subject: [PATCH] Use eigen wrapper --- .../internal/dual_contouring_functors.h | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/Isosurfacing_3/include/CGAL/Isosurfacing_3/internal/dual_contouring_functors.h b/Isosurfacing_3/include/CGAL/Isosurfacing_3/internal/dual_contouring_functors.h index 90c36f17278..fbfbd9e3ac1 100644 --- a/Isosurfacing_3/include/CGAL/Isosurfacing_3/internal/dual_contouring_functors.h +++ b/Isosurfacing_3/include/CGAL/Isosurfacing_3/internal/dual_contouring_functors.h @@ -19,7 +19,12 @@ #include #include +#ifdef CGAL_EIGEN3_ENABLED +#include +#include + #include +#endif #include #include @@ -66,10 +71,10 @@ public: using Point_3 = typename Geom_traits::Point_3; using Vector_3 = typename Geom_traits::Vector_3; - using Eigen_vector_3 = Eigen::Vector; - using Eigen_vector_x = Eigen::Vector; - using Eigen_matrix_3 = Eigen::Matrix; - using Eigen_matrix_x = Eigen::Matrix; + using Eigen_vector_3 = Eigen_vector; + using Eigen_vector_x = Eigen_vector; + using Eigen_matrix_3 = Eigen_matrix; + using Eigen_matrix_x = Eigen_matrix; using Vertex_descriptor = typename Domain::Vertex_descriptor; @@ -127,21 +132,26 @@ public: rhs.setZero(); for(std::size_t i=0; i svd(A, Eigen::ComputeThinU | Eigen::ComputeThinV); + Eigen::JacobiSVD svd(A, Eigen::ComputeThinU | Eigen::ComputeThinV); // set threshold as in Peter Lindstrom's paper, "Out-of-Core Simplification of Large Polygonal Models" svd.setThreshold(1e-3); @@ -151,7 +161,8 @@ public: x_hat << x_coord(p), y_coord(p), z_coord(p); // Lindstrom formula for QEM new position for singular matrices - Eigen_vector_x v_svd = x_hat + svd.solve(rhs - A * x_hat); + Eigen_vector_x v_svd; + v_svd = x_hat + svd.solve(rhs - A * x_hat); p = point(v_svd[0], v_svd[1], v_svd[2]); // bounding box