| 217 | } |
| 218 | |
| 219 | void IsotropicPeriodicInflator::merge_boundary() { |
| 220 | auto bd = Boundary::extract_surface_boundary_raw(m_vertices, m_faces); |
| 221 | VectorI bd_vertices = bd->get_boundary_nodes(); |
| 222 | const size_t num_bd_vertices = bd_vertices.size(); |
| 223 | const size_t num_vertices = m_vertices.rows(); |
| 224 | VectorI importance = VectorI::Ones(num_vertices) * -1; |
| 225 | for (size_t i=0; i < num_bd_vertices; i++) { |
| 226 | importance[bd_vertices[i]] = 0; |
| 227 | } |
| 228 | |
| 229 | const Float tol = get_distance_threshold(); |
| 230 | DuplicatedVertexRemoval remover(m_vertices, m_faces); |
| 231 | remover.set_importance_level(importance); |
| 232 | remover.run(tol); |
| 233 | |
| 234 | m_vertices = remover.get_vertices(); |
| 235 | m_faces = remover.get_faces(); |
| 236 | } |
| 237 | |
| 238 | void IsotropicPeriodicInflator::ensure_periodicity() { |
| 239 | const size_t dim = m_vertices.cols(); |
nothing calls this directly
no test coverage detected