| 376 | } |
| 377 | |
| 378 | void PeriodicBoundaryRemesher::refine_bd_loops(Float ave_edge_len) { |
| 379 | // Only refine bd edges lying on the edge of the bbox. |
| 380 | // i.e. These bd edges and all their adjacent faces are all on the boundary. |
| 381 | |
| 382 | const size_t num_vertices = m_vertices.rows(); |
| 383 | assert(m_vertices.cols() == 3); |
| 384 | std::vector<Float> refined_vertices(num_vertices * 3); |
| 385 | std::copy(m_vertices.data(), m_vertices.data() + num_vertices * 3, |
| 386 | refined_vertices.begin()); |
| 387 | |
| 388 | refine_bd_loops(min_axis_marker[X], ave_edge_len, refined_vertices); |
| 389 | refine_bd_loops(max_axis_marker[X], ave_edge_len, refined_vertices); |
| 390 | refine_bd_loops(min_axis_marker[Y], ave_edge_len, refined_vertices); |
| 391 | refine_bd_loops(max_axis_marker[Y], ave_edge_len, refined_vertices); |
| 392 | refine_bd_loops(min_axis_marker[Z], ave_edge_len, refined_vertices); |
| 393 | refine_bd_loops(max_axis_marker[Z], ave_edge_len, refined_vertices); |
| 394 | |
| 395 | assert(refined_vertices.size() % 3 == 0); |
| 396 | const size_t num_refined_vertices = refined_vertices.size() / 3; |
| 397 | if (num_vertices != num_refined_vertices) { |
| 398 | m_vertices.resize(num_refined_vertices, 3); |
| 399 | std::copy(refined_vertices.begin(), refined_vertices.end(), |
| 400 | m_vertices.data()); |
| 401 | } |
| 402 | } |
| 403 | |
| 404 | void PeriodicBoundaryRemesher::refine_bd_loops(short label, Float ave_edge_len, |
| 405 | std::vector<Float>& refined_vertices) { |
nothing calls this directly
no test coverage detected