aboutsummaryrefslogtreecommitdiff
path: root/internal/ceres/parameter_block_ordering.cc
diff options
context:
space:
mode:
Diffstat (limited to 'internal/ceres/parameter_block_ordering.cc')
-rw-r--r--internal/ceres/parameter_block_ordering.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/internal/ceres/parameter_block_ordering.cc b/internal/ceres/parameter_block_ordering.cc
index 190715b..3032329 100644
--- a/internal/ceres/parameter_block_ordering.cc
+++ b/internal/ceres/parameter_block_ordering.cc
@@ -144,5 +144,21 @@ CreateHessianGraph(const Program& program) {
return graph;
}
+void OrderingToGroupSizes(const ParameterBlockOrdering* ordering,
+ vector<int>* group_sizes) {
+ CHECK_NOTNULL(group_sizes)->clear();
+ if (ordering == NULL) {
+ return;
+ }
+
+ const map<int, set<double*> >& group_to_elements =
+ ordering->group_to_elements();
+ for (map<int, set<double*> >::const_iterator it = group_to_elements.begin();
+ it != group_to_elements.end();
+ ++it) {
+ group_sizes->push_back(it->second.size());
+ }
+}
+
} // namespace internal
} // namespace ceres