| 28 | } |
| 29 | |
| 30 | void DegeneratedTriangleRemoval::run(size_t num_iterations) { |
| 31 | size_t num_removed = 0; |
| 32 | size_t count = 0; |
| 33 | do { |
| 34 | num_removed = 0; |
| 35 | size_t e_removed = remove_zero_edges(); |
| 36 | size_t e_flipped = remove_line_faces(); |
| 37 | remove_isolated_vertices(); |
| 38 | count++; |
| 39 | num_removed += (e_removed + e_flipped); |
| 40 | } while (num_removed != 0 && count < num_iterations); |
| 41 | |
| 42 | if (num_removed != 0) { |
| 43 | std::cerr << "Warning: Max number of iterations reached. "; |
| 44 | std::cerr << "Not all degenerated faces are removed." << std::endl; |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | void DegeneratedTriangleRemoval::init_ori_face_indices() { |
| 49 | const size_t num_faces = m_faces.rows(); |
no test coverage detected