Loading src/MeshImprovement.cpp +18 −21 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ #include <igl/Timer.h> #include <igl/winding_number.h> #define USE_FWN true //#define USE_FWN true void floatTetWild::init(Mesh &mesh, AABBWrapper& tree) { cout << "initializing..." << endl; Loading Loading @@ -1228,11 +1228,10 @@ void floatTetWild::boolean_operation(Mesh& mesh, const json &csg_tree_with_ids){ for(int i = 0; i <= max_id; ++i){ get_tracked_surface(mesh, vs, fs, i); #if USE_FWN if(!mesh.params.use_general_wn) floatTetWild::fast_winding_number(Eigen::MatrixXd(vs.cast<double>()), Eigen::MatrixXi(fs), C, w[i]); #else else igl::winding_number(Eigen::MatrixXd(vs.cast<double>()), Eigen::MatrixXi(fs), C, w[i]); #endif } int cnt = 0; Loading Loading @@ -1275,13 +1274,13 @@ void floatTetWild::boolean_operation(Mesh& mesh, int op){ } Eigen::VectorXd w1, w2; #if USE_FWN if(!mesh.params.use_general_wn) { floatTetWild::fast_winding_number(Eigen::MatrixXd(v1.cast<double>()), Eigen::MatrixXi(f1), C, w1); floatTetWild::fast_winding_number(Eigen::MatrixXd(v2.cast<double>()), Eigen::MatrixXi(f2), C, w2); #else }else { igl::winding_number(Eigen::MatrixXd(v1.cast<double>()), Eigen::MatrixXi(f1), C, w1); igl::winding_number(Eigen::MatrixXd(v2.cast<double>()), Eigen::MatrixXi(f2), C, w2); #endif } int cnt = 0; Loading Loading @@ -1332,11 +1331,10 @@ void floatTetWild::filter_outside(Mesh& mesh, bool invert_faces) { F.col(1) = F.col(2).eval(); F.col(2) = tmp; } #if USE_FWN if(!mesh.params.use_general_wn) floatTetWild::fast_winding_number(Eigen::MatrixXd(V.cast<double>()), Eigen::MatrixXi(F), C, W); #else else igl::winding_number(Eigen::MatrixXd(V.cast<double>()), Eigen::MatrixXi(F), C, W); #endif index = 0; int n_tets = 0; Loading Loading @@ -1447,11 +1445,10 @@ void floatTetWild::mark_outside(Mesh& mesh, bool invert_faces){ F.col(2) = tmp; } Eigen::VectorXd W; #if USE_FWN if(!mesh.params.use_general_wn) floatTetWild::fast_winding_number(Eigen::MatrixXd(V.cast<double>()), Eigen::MatrixXi(F), C, W); #else else igl::winding_number(Eigen::MatrixXd(V.cast<double>()), Eigen::MatrixXi(F), C, W); #endif index = 0; int n_tets = 0; Loading src/Parameters.h +2 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ class Parameters Scalar eps_2_simplification; Scalar dd_simplification; bool use_general_wn = true; bool init(Scalar bbox_diag_l) { if(stage > 5) Loading src/main.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,7 @@ int main(int argc, char **argv) { command_line.add_flag("--disable-wn", disable_wn, "Disable winding number."); bool use_floodfill = false; command_line.add_flag("--use-floodfill", use_floodfill, "Use flood-fill to extract interior volume."); command_line.add_flag("--use-general-wn", params.use_general_wn, "Use general winding number."); #ifdef LIBIGL_WITH_TETGEN Loading Loading
src/MeshImprovement.cpp +18 −21 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ #include <igl/Timer.h> #include <igl/winding_number.h> #define USE_FWN true //#define USE_FWN true void floatTetWild::init(Mesh &mesh, AABBWrapper& tree) { cout << "initializing..." << endl; Loading Loading @@ -1228,11 +1228,10 @@ void floatTetWild::boolean_operation(Mesh& mesh, const json &csg_tree_with_ids){ for(int i = 0; i <= max_id; ++i){ get_tracked_surface(mesh, vs, fs, i); #if USE_FWN if(!mesh.params.use_general_wn) floatTetWild::fast_winding_number(Eigen::MatrixXd(vs.cast<double>()), Eigen::MatrixXi(fs), C, w[i]); #else else igl::winding_number(Eigen::MatrixXd(vs.cast<double>()), Eigen::MatrixXi(fs), C, w[i]); #endif } int cnt = 0; Loading Loading @@ -1275,13 +1274,13 @@ void floatTetWild::boolean_operation(Mesh& mesh, int op){ } Eigen::VectorXd w1, w2; #if USE_FWN if(!mesh.params.use_general_wn) { floatTetWild::fast_winding_number(Eigen::MatrixXd(v1.cast<double>()), Eigen::MatrixXi(f1), C, w1); floatTetWild::fast_winding_number(Eigen::MatrixXd(v2.cast<double>()), Eigen::MatrixXi(f2), C, w2); #else }else { igl::winding_number(Eigen::MatrixXd(v1.cast<double>()), Eigen::MatrixXi(f1), C, w1); igl::winding_number(Eigen::MatrixXd(v2.cast<double>()), Eigen::MatrixXi(f2), C, w2); #endif } int cnt = 0; Loading Loading @@ -1332,11 +1331,10 @@ void floatTetWild::filter_outside(Mesh& mesh, bool invert_faces) { F.col(1) = F.col(2).eval(); F.col(2) = tmp; } #if USE_FWN if(!mesh.params.use_general_wn) floatTetWild::fast_winding_number(Eigen::MatrixXd(V.cast<double>()), Eigen::MatrixXi(F), C, W); #else else igl::winding_number(Eigen::MatrixXd(V.cast<double>()), Eigen::MatrixXi(F), C, W); #endif index = 0; int n_tets = 0; Loading Loading @@ -1447,11 +1445,10 @@ void floatTetWild::mark_outside(Mesh& mesh, bool invert_faces){ F.col(2) = tmp; } Eigen::VectorXd W; #if USE_FWN if(!mesh.params.use_general_wn) floatTetWild::fast_winding_number(Eigen::MatrixXd(V.cast<double>()), Eigen::MatrixXi(F), C, W); #else else igl::winding_number(Eigen::MatrixXd(V.cast<double>()), Eigen::MatrixXi(F), C, W); #endif index = 0; int n_tets = 0; Loading
src/Parameters.h +2 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ class Parameters Scalar eps_2_simplification; Scalar dd_simplification; bool use_general_wn = true; bool init(Scalar bbox_diag_l) { if(stage > 5) Loading
src/main.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,7 @@ int main(int argc, char **argv) { command_line.add_flag("--disable-wn", disable_wn, "Disable winding number."); bool use_floodfill = false; command_line.add_flag("--use-floodfill", use_floodfill, "Use flood-fill to extract interior volume."); command_line.add_flag("--use-general-wn", params.use_general_wn, "Use general winding number."); #ifdef LIBIGL_WITH_TETGEN Loading