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

Method apply

tools/Wires/Parameters/VertexIsotropicOffsetParameter.cpp:13–37  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11}
12
13void VertexIsotropicOffsetParameter::apply(VectorF& results,
14 const PatternParameter::Variables& vars) {
15 const size_t dim = m_wire_network->get_dim();
16 const size_t num_vertices = m_wire_network->get_num_vertices();
17 const size_t roi_size = m_roi.size();
18 const VectorF center = m_wire_network->center();
19 const VectorF bbox_max = m_wire_network->get_bbox_max();
20 assert(results.size() == dim * num_vertices);
21 assert(roi_size == m_transforms.size());
22
23 if (m_formula != "") evaluate_formula(vars);
24
25 const MatrixFr& vertices = m_wire_network->get_vertices();
26 size_t seed_vertex_index = m_roi.minCoeff();
27 VectorF seed_vertex = vertices.row(seed_vertex_index);
28 VectorF seed_offset = VectorF::Zero(dim);
29 seed_offset = (bbox_max - center).cwiseProduct(m_dof_dir) * m_value;
30
31 for (size_t i=0; i<roi_size; i++) {
32 size_t v_idx = m_roi[i];
33 assert(v_idx < num_vertices);
34 const MatrixF& trans = m_transforms[i];
35 results.segment(v_idx*dim, dim) += trans * seed_offset;
36 }
37}
38
39MatrixFr VertexIsotropicOffsetParameter::compute_derivative() const {
40 const VectorF center = m_wire_network->center();

Callers

nothing calls this directly

Calls 6

centerMethod · 0.80
get_bbox_maxMethod · 0.80
get_dimMethod · 0.45
get_num_verticesMethod · 0.45
sizeMethod · 0.45
get_verticesMethod · 0.45

Tested by

no test coverage detected