| 70 | } |
| 71 | |
| 72 | void EdgeSplitter::run(IndicatorFunc split_indicator, Float max_length) { |
| 73 | clear_intermediate_data(); |
| 74 | generate_edge_map(); |
| 75 | set_all_faces_as_valid(); |
| 76 | for (const auto itr : m_edge_adj_faces) { |
| 77 | const auto& edge = itr.first; |
| 78 | const auto& adj_faces = itr.second; |
| 79 | const auto& e = edge.get_ori_data().segment<2>(0); |
| 80 | const auto v0 = m_vertices.row(e[0]); |
| 81 | const auto v1 = m_vertices.row(e[1]); |
| 82 | if (split_indicator(v0, v1)) { |
| 83 | split_edge(e, adj_faces, max_length); |
| 84 | } |
| 85 | } |
| 86 | finalize_geometry(); |
| 87 | } |
| 88 | |
| 89 | void EdgeSplitter::clear_intermediate_data() { |
| 90 | m_edge_adj_faces.clear(); |
no outgoing calls
no test coverage detected