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

Method compute_derivative

tools/Wires/Parameters/VertexOffsetParameter.cpp:42–65  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40}
41
42MatrixFr VertexOffsetParameter::compute_derivative() const {
43 const VectorF bbox_min = m_wire_network->get_bbox_min();
44 const VectorF bbox_max = m_wire_network->get_bbox_max();
45 const VectorF center = 0.5 * (bbox_min + bbox_max);
46 const VectorF half_bbox_size = bbox_max - center;
47
48 const size_t dim = m_wire_network->get_dim();
49 const size_t num_vertices = m_wire_network->get_num_vertices();
50 const size_t roi_size = m_roi.size();
51 const MatrixFr& vertices = m_wire_network->get_vertices();
52 assert(m_axis < dim);
53
54 MatrixFr derivative = MatrixFr::Zero(num_vertices, dim);
55
56 for (size_t i=0; i<roi_size; i++) {
57 size_t v_idx = m_roi[i];
58 assert(v_idx < num_vertices);
59 const VectorF& v = vertices.row(v_idx);
60 Float sign = v[m_axis] - center[m_axis] > 0.0 ? 1.0 : -1.0;
61 derivative(m_roi[i], m_axis) = sign * half_bbox_size[m_axis];
62 }
63
64 return derivative;
65}

Callers 4

computeMethod · 0.45
compute_wire_gradientMethod · 0.45
TEST_FFunction · 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 1

TEST_FFunction · 0.36