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

Method apply

tools/Wires/Parameters/VertexOffsetParameter.cpp:13–40  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11}
12
13void VertexOffsetParameter::apply(VectorF& results,
14 const PatternParameter::Variables& vars) {
15 const VectorF bbox_min = m_wire_network->get_bbox_min();
16 const VectorF bbox_max = m_wire_network->get_bbox_max();
17 const VectorF center = 0.5 * (bbox_min + bbox_max);
18 const VectorF half_bbox_size = bbox_max - center;
19
20 const size_t dim = m_wire_network->get_dim();
21 const size_t num_vertices = m_wire_network->get_num_vertices();
22 const size_t roi_size = m_roi.size();
23 assert(m_axis < dim);
24 assert(results.size() == dim * num_vertices);
25
26 if (m_formula != "") evaluate_formula(vars);
27
28 const MatrixFr& vertices = m_wire_network->get_vertices();
29
30 for (size_t i=0; i<roi_size; i++) {
31 size_t v_idx = m_roi[i];
32 assert(v_idx < num_vertices);
33 const VectorF& v = vertices.row(v_idx);
34 assert(fabs(v[m_axis] - center[m_axis]) > 1e-12);
35 Float sign = v[m_axis] - center[m_axis] > 0.0 ? 1.0 : -1.0;
36
37 results[v_idx * dim + m_axis] =
38 sign * half_bbox_size[m_axis] * m_value;
39 }
40}
41
42MatrixFr VertexOffsetParameter::compute_derivative() const {
43 const VectorF bbox_min = m_wire_network->get_bbox_min();

Callers 2

evaluateMethod · 0.45
evaluateMethod · 0.45

Calls 6

get_bbox_minMethod · 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