| 85 | using namespace PeriodicInflator2DHelper; |
| 86 | |
| 87 | void PeriodicInflator2D::clip_to_center_cell() { |
| 88 | assert(m_phantom_faces.rows() > 0); |
| 89 | std::list<Float> vertices; |
| 90 | std::list<size_t> faces; |
| 91 | std::list<int> face_sources; |
| 92 | |
| 93 | append(m_phantom_vertices, vertices); |
| 94 | clip_phantom_mesh(vertices, faces, face_sources); |
| 95 | |
| 96 | assert(vertices.size() % 2 == 0); |
| 97 | assert(faces.size() % 3 == 0); |
| 98 | size_t num_vertices = vertices.size() / 2; |
| 99 | size_t num_faces = faces.size() / 3; |
| 100 | assert(face_sources.size() == num_faces); |
| 101 | |
| 102 | m_vertices.resize(num_vertices, 2); |
| 103 | m_faces.resize(num_faces, 3); |
| 104 | m_face_sources.resize(num_faces); |
| 105 | std::copy(vertices.begin(), vertices.end(), m_vertices.data()); |
| 106 | std::copy(faces.begin(), faces.end(), m_faces.data()); |
| 107 | std::copy(face_sources.begin(), face_sources.end(), m_face_sources.data()); |
| 108 | } |
| 109 | |
| 110 | void PeriodicInflator2D::clip_phantom_mesh( |
| 111 | std::list<Float>& vertices, std::list<size_t>& faces, |