Commit b777e91a authored by Yixin Hu's avatar Yixin Hu
Browse files

add --use-general-wn

parent 7ec02d19
Loading
Loading
Loading
Loading
+18 −21
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
+2 −0
Original line number Diff line number Diff line
@@ -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)
+1 −0
Original line number Diff line number Diff line
@@ -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