| 483 | } |
| 484 | |
| 485 | void PeriodicBoundaryRemesher::add_interior_geometry( |
| 486 | std::vector<MatrixFr>& remeshed_vertices, |
| 487 | std::vector<MatrixIr>& remeshed_faces, |
| 488 | size_t& vertex_count, |
| 489 | size_t& face_count) { |
| 490 | |
| 491 | std::vector<size_t> interior_faces; |
| 492 | const size_t num_faces = m_faces.rows(); |
| 493 | for (size_t i=0; i<num_faces; i++) { |
| 494 | if (m_bd_face_markers[i] == 0) { |
| 495 | const Vector3I& f = m_faces.row(i); |
| 496 | interior_faces.push_back(f[0]); |
| 497 | interior_faces.push_back(f[1]); |
| 498 | interior_faces.push_back(f[2]); |
| 499 | } |
| 500 | } |
| 501 | |
| 502 | remeshed_faces.emplace_back(MatrixIr(interior_faces.size() / 3, 3)); |
| 503 | std::copy(interior_faces.begin(), interior_faces.end(), |
| 504 | remeshed_faces[0].data()); |
| 505 | remeshed_vertices.emplace_back(m_vertices); |
| 506 | |
| 507 | vertex_count += m_vertices.rows(); |
| 508 | face_count += interior_faces.size() / 3; |
| 509 | } |
| 510 | |
| 511 | void PeriodicBoundaryRemesher::triangulate_bd_loops(Float max_area, short axis, |
| 512 | std::vector<MatrixFr>& remeshed_vertices, |