void FastMassSpring::fillJMatrix(TripletList& triplets, Edges& edges, int edge_counts) { for (decltype(edges.size()) i = 0; i != edges.size(); ++i) { for (int j = 0; j < 3; ++j) { triplets.push_back(Triplet(3 * edges[i].first + j, 3 * (i + edge_counts) + j, 1)); triplets.push_back(Triplet(3 * edges[i].second + j, 3 * (i + edge_counts) + j, -1)); } } }
void FastMassSpring::fillLMatrix(TripletList& triplets, Edges& edges) { for (auto& i : edges) { for (int j = 0; j < 3; ++j) { triplets.push_back(Triplet(3 * i.first + j, 3 * i.first + j, 1)); triplets.push_back(Triplet(3 * i.first + j, 3 * i.second + j, -1)); triplets.push_back(Triplet(3 * i.second + j, 3 * i.first + j, -1)); triplets.push_back(Triplet(3 * i.second + j, 3 * i.second + j, 1)); } } }
BLI_INLINE void triplets_m3fl(TripletList &tlist, float m[3][3], int i, int j, float factor) { i *= 3; j *= 3; for (int l = 0; l < 3; ++l) { for (int k = 0; k < 3; ++k) { tlist.push_back(Triplet(i + k, j + l, m[k][l] * factor)); } } }