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

Method compute_batch_symmetric_3x3

tools/EigenUtils/EigenSolver.cpp:45–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43}
44
45void EigenSolver::compute_batch_symmetric_3x3(const VectorF& matrices) {
46 const size_t dim = 3;
47 const size_t flatten_size = 6;
48 const size_t num_matrices = matrices.size() / flatten_size;
49 m_eigen_values = VectorF(num_matrices * dim);
50 m_eigen_vectors = MatrixF(num_matrices * dim, dim);
51 for (size_t i=0; i<num_matrices; i++) {
52 const VectorF& entries = matrices.segment(i*flatten_size, flatten_size);
53 MatrixF M(dim, dim);
54 size_t base_idx = i*flatten_size;
55 M << matrices[base_idx ], matrices[base_idx+5], matrices[base_idx+4],
56 matrices[base_idx+5], matrices[base_idx+1], matrices[base_idx+3],
57 matrices[base_idx+4], matrices[base_idx+3], matrices[base_idx+2];
58 m_solver.compute(M);
59 m_eigen_values.segment(i*dim, dim) = m_solver.eigenvalues().real();
60 m_eigen_vectors.block(i*dim, 0, dim, dim) =
61 m_solver.eigenvectors().real();
62 }
63}
64

Callers

nothing calls this directly

Calls 2

sizeMethod · 0.45
computeMethod · 0.45

Tested by

no test coverage detected