| 227 | } |
| 228 | |
| 229 | void SimpleInflator::finalize() { |
| 230 | const size_t dim = m_wire_network->get_dim(); |
| 231 | size_t num_vertices = 0; |
| 232 | size_t num_faces = 0; |
| 233 | for (auto itr : m_vertex_list) num_vertices += itr.rows(); |
| 234 | for (auto itr : m_face_list) num_faces += itr.rows(); |
| 235 | |
| 236 | m_vertices.resize(num_vertices, dim); |
| 237 | m_faces.resize(num_faces, 3); |
| 238 | m_face_sources.resize(num_faces); |
| 239 | |
| 240 | size_t vertex_count=0; |
| 241 | for (auto itr : m_vertex_list) { |
| 242 | size_t size = itr.rows(); |
| 243 | m_vertices.block(vertex_count, 0, size, dim) = itr; |
| 244 | vertex_count += size; |
| 245 | } |
| 246 | |
| 247 | size_t face_count=0; |
| 248 | auto source_itr = m_face_source_list.begin(); |
| 249 | for (auto itr : m_face_list) { |
| 250 | size_t size = itr.rows(); |
| 251 | m_faces.block(face_count, 0, size, 3) = itr; |
| 252 | m_face_sources.segment(face_count, size) = |
| 253 | VectorI::Ones(size) * (*source_itr); |
| 254 | face_count += size; |
| 255 | source_itr++; |
| 256 | } |
| 257 | |
| 258 | clean_up(); |
| 259 | } |
| 260 | |
| 261 | void SimpleInflator::refine() { |
| 262 | if (!m_refiner) return; |
no test coverage detected