Loading src/MeshImprovement.cpp +31 −9 Original line number Diff line number Diff line Loading @@ -1782,13 +1782,9 @@ void floatTetWild::manifold_edges(Mesh& mesh) { if (n_t_ids.empty()) continue; cout<<e[0]<<" "<<e[1]<<endl; std::map<int, bool> is_visited; for (int t_id: n_t_ids) { is_visited[t_id] = false; cout<<t_id<<": "; tets[t_id].print(); } std::vector<std::vector<int>> tet_groups; Loading @@ -1815,7 +1811,7 @@ void floatTetWild::manifold_edges(Mesh& mesh) { tet_queue.push(opp_t_id); is_visited[opp_t_id] = true; } else { cout<<t0_id<<" "<<opp_t_id<<endl; // cout<<t0_id<<" "<<opp_t_id<<endl; } } } Loading @@ -1825,7 +1821,12 @@ void floatTetWild::manifold_edges(Mesh& mesh) { cout<<"find non-manifold edge "<<e[0]<<" "<<e[1]<<endl; cout<<tet_groups.size()<<"/"<<n_t_ids.size()<<endl; pausee(); cout<<e[0]<<" "<<e[1]<<endl; for (int t_id: n_t_ids) { cout<<t_id<<": "; tets[t_id].print(); } // pausee(); //split std::vector<int> new_t_ids; Loading @@ -1839,9 +1840,12 @@ void floatTetWild::manifold_edges(Mesh& mesh) { } //duplicate v_id for (int i = 1; i < tet_groups.size(); i++) { for (int i = 0; i < tet_groups.size(); i++) { int dup_v_id = v_id; if(i > 0) { tet_vertices.push_back(tet_vertices[v_id]); int dup_v_id = tet_vertices.size() - 1; dup_v_id = tet_vertices.size() - 1; } tet_vertices[dup_v_id].conn_tets.clear(); for (int old_t_id: tet_groups[i]) { int new_t_id = new_t_ids[old_t_ids_map[old_t_id]]; Loading @@ -1854,6 +1858,22 @@ void floatTetWild::manifold_edges(Mesh& mesh) { } } // for (int i = 0; i < old_t_ids.size(); i++) { // cout<<"old_t "<<old_t_ids[i]<<":"; // tets[old_t_ids[i]].print(); // for(int j=0;j<4;j++) { // cout << "\tv"<<tets[old_t_ids[i]][j]<<":"; // vector_print(tet_vertices[tets[old_t_ids[i]][j]].conn_tets); // } // cout<<"new_t "<<new_t_ids[i]<<":"; // tets[new_t_ids[i]].print(); // for(int j=0;j<4;j++) { // cout << "\tv"<<tets[new_t_ids[i]][j]<<":"; // vector_print(tet_vertices[tets[new_t_ids[i]][j]].conn_tets); // } // } // pausee(); //push new edges into the queue old_t_ids.insert(old_t_ids.end(), new_t_ids.begin(), new_t_ids.end()); std::vector<std::array<int, 2>> new_edges; Loading Loading @@ -1954,6 +1974,8 @@ void floatTetWild::manifold_vertices(Mesh& mesh){ if (tet_groups.size() < 2) continue; cout<<"find non-manifold vertex "<<b_v_id<<endl; for (int i = 1; i < tet_groups.size(); i++) { tet_vertices.push_back(tet_vertices[b_v_id]); for (int t_id: tet_groups[i]) { Loading src/Parameters.h +3 −1 Original line number Diff line number Diff line Loading @@ -82,11 +82,13 @@ class Parameters eps_input = bbox_diag_length * eps_rel; dd = eps_input / stage; dd /= 2; // dd /= 2; eps_delta = dd / std::sqrt(3); eps = eps_input - eps_delta * stage; eps_2 = eps * eps; dd /= 1.5;//tmp eps_coplanar = eps * 0.2; // better to set it as eps-related if (eps_coplanar > bbox_diag_length * 1e-6) eps_coplanar = bbox_diag_length * 1e-6; Loading src/main.cpp +1 −4 Original line number Diff line number Diff line Loading @@ -384,11 +384,8 @@ int main(int argc, char **argv) { } else boolean_operation(mesh, boolean_op); if(params.manifold_surface){ // MeshIO::write_mesh(params.output_path + "_" + params.postfix + "_non_manifold.msh", mesh, false); manifold_surface(mesh); // for (auto &t: mesh.tets) { // if (t.is_outside) // t.is_removed = true; // } } stats().record(StateInfo::wn_id, timer.getElapsedTimeInSec(), mesh.get_v_num(), mesh.get_t_num(), mesh.get_max_energy(), mesh.get_avg_energy()); Loading Loading
src/MeshImprovement.cpp +31 −9 Original line number Diff line number Diff line Loading @@ -1782,13 +1782,9 @@ void floatTetWild::manifold_edges(Mesh& mesh) { if (n_t_ids.empty()) continue; cout<<e[0]<<" "<<e[1]<<endl; std::map<int, bool> is_visited; for (int t_id: n_t_ids) { is_visited[t_id] = false; cout<<t_id<<": "; tets[t_id].print(); } std::vector<std::vector<int>> tet_groups; Loading @@ -1815,7 +1811,7 @@ void floatTetWild::manifold_edges(Mesh& mesh) { tet_queue.push(opp_t_id); is_visited[opp_t_id] = true; } else { cout<<t0_id<<" "<<opp_t_id<<endl; // cout<<t0_id<<" "<<opp_t_id<<endl; } } } Loading @@ -1825,7 +1821,12 @@ void floatTetWild::manifold_edges(Mesh& mesh) { cout<<"find non-manifold edge "<<e[0]<<" "<<e[1]<<endl; cout<<tet_groups.size()<<"/"<<n_t_ids.size()<<endl; pausee(); cout<<e[0]<<" "<<e[1]<<endl; for (int t_id: n_t_ids) { cout<<t_id<<": "; tets[t_id].print(); } // pausee(); //split std::vector<int> new_t_ids; Loading @@ -1839,9 +1840,12 @@ void floatTetWild::manifold_edges(Mesh& mesh) { } //duplicate v_id for (int i = 1; i < tet_groups.size(); i++) { for (int i = 0; i < tet_groups.size(); i++) { int dup_v_id = v_id; if(i > 0) { tet_vertices.push_back(tet_vertices[v_id]); int dup_v_id = tet_vertices.size() - 1; dup_v_id = tet_vertices.size() - 1; } tet_vertices[dup_v_id].conn_tets.clear(); for (int old_t_id: tet_groups[i]) { int new_t_id = new_t_ids[old_t_ids_map[old_t_id]]; Loading @@ -1854,6 +1858,22 @@ void floatTetWild::manifold_edges(Mesh& mesh) { } } // for (int i = 0; i < old_t_ids.size(); i++) { // cout<<"old_t "<<old_t_ids[i]<<":"; // tets[old_t_ids[i]].print(); // for(int j=0;j<4;j++) { // cout << "\tv"<<tets[old_t_ids[i]][j]<<":"; // vector_print(tet_vertices[tets[old_t_ids[i]][j]].conn_tets); // } // cout<<"new_t "<<new_t_ids[i]<<":"; // tets[new_t_ids[i]].print(); // for(int j=0;j<4;j++) { // cout << "\tv"<<tets[new_t_ids[i]][j]<<":"; // vector_print(tet_vertices[tets[new_t_ids[i]][j]].conn_tets); // } // } // pausee(); //push new edges into the queue old_t_ids.insert(old_t_ids.end(), new_t_ids.begin(), new_t_ids.end()); std::vector<std::array<int, 2>> new_edges; Loading Loading @@ -1954,6 +1974,8 @@ void floatTetWild::manifold_vertices(Mesh& mesh){ if (tet_groups.size() < 2) continue; cout<<"find non-manifold vertex "<<b_v_id<<endl; for (int i = 1; i < tet_groups.size(); i++) { tet_vertices.push_back(tet_vertices[b_v_id]); for (int t_id: tet_groups[i]) { Loading
src/Parameters.h +3 −1 Original line number Diff line number Diff line Loading @@ -82,11 +82,13 @@ class Parameters eps_input = bbox_diag_length * eps_rel; dd = eps_input / stage; dd /= 2; // dd /= 2; eps_delta = dd / std::sqrt(3); eps = eps_input - eps_delta * stage; eps_2 = eps * eps; dd /= 1.5;//tmp eps_coplanar = eps * 0.2; // better to set it as eps-related if (eps_coplanar > bbox_diag_length * 1e-6) eps_coplanar = bbox_diag_length * 1e-6; Loading
src/main.cpp +1 −4 Original line number Diff line number Diff line Loading @@ -384,11 +384,8 @@ int main(int argc, char **argv) { } else boolean_operation(mesh, boolean_op); if(params.manifold_surface){ // MeshIO::write_mesh(params.output_path + "_" + params.postfix + "_non_manifold.msh", mesh, false); manifold_surface(mesh); // for (auto &t: mesh.tets) { // if (t.is_outside) // t.is_removed = true; // } } stats().record(StateInfo::wn_id, timer.getElapsedTimeInSec(), mesh.get_v_num(), mesh.get_t_num(), mesh.get_max_energy(), mesh.get_avg_energy()); Loading