MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / refine_bd_loops

Method refine_bd_loops

tools/Wires/Inflator/PeriodicBoundaryRemesher.cpp:378–402  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

376}
377
378void 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
404void PeriodicBoundaryRemesher::refine_bd_loops(short label, Float ave_edge_len,
405 std::vector<Float>& refined_vertices) {

Callers

nothing calls this directly

Calls 6

is_on_boundaryMethod · 0.80
is_on_boundary_edgesMethod · 0.80
normMethod · 0.80
beginMethod · 0.45
sizeMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected