| 27 | const short max_axis_marker[3] = { 1, 2, 3}; |
| 28 | |
| 29 | void triangulate(MatrixFr vertices, MatrixIr edges, |
| 30 | MatrixFr& output_vertices, MatrixIr& output_faces, Float max_area) { |
| 31 | assert(edges.rows() >= 3); |
| 32 | MeshCleaner cleaner; |
| 33 | cleaner.remove_isolated_vertices(vertices, edges); |
| 34 | cleaner.remove_duplicated_vertices(vertices, edges, 1e-12); |
| 35 | assert(vertices.rows() >= 3); |
| 36 | |
| 37 | TriangleWrapper triangle; |
| 38 | triangle.set_points(vertices); |
| 39 | triangle.set_segments(edges); |
| 40 | triangle.set_max_area(max_area); |
| 41 | triangle.set_split_boundary(false); |
| 42 | triangle.set_auto_hole_detection(true); |
| 43 | triangle.set_verbosity(0); |
| 44 | triangle.run(); |
| 45 | |
| 46 | output_vertices = triangle.get_vertices(); |
| 47 | output_faces = triangle.get_faces(); |
| 48 | } |
| 49 | |
| 50 | void reorientate_triangles(const MatrixFr& vertices, MatrixIr& faces, |
| 51 | const VectorF& n) { |
no test coverage detected