summaryrefslogtreecommitdiff
path: root/src/Simplex_tree/include/gudhi/Simplex_tree.h
diff options
context:
space:
mode:
authorROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-08-18 14:38:31 +0200
committerROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-08-18 14:38:31 +0200
commitddb2118f0af865588d7c14b88171dc04bb27c529 (patch)
tree74825f2f0c4e353511bbe09979ff8ae9aabe431d /src/Simplex_tree/include/gudhi/Simplex_tree.h
parenta1cd7e9ead030654a1fdb6cfd50408103c458529 (diff)
reset_filtration from a dimension (instead of 'until')
Diffstat (limited to 'src/Simplex_tree/include/gudhi/Simplex_tree.h')
-rw-r--r--src/Simplex_tree/include/gudhi/Simplex_tree.h31
1 files changed, 18 insertions, 13 deletions
diff --git a/src/Simplex_tree/include/gudhi/Simplex_tree.h b/src/Simplex_tree/include/gudhi/Simplex_tree.h
index adc8e801..89b4a5df 100644
--- a/src/Simplex_tree/include/gudhi/Simplex_tree.h
+++ b/src/Simplex_tree/include/gudhi/Simplex_tree.h
@@ -1668,31 +1668,36 @@ class Simplex_tree {
}
public:
- /** \brief This function resets filtration value until a given dimension.
+ /** \brief This function resets filtration value from a given dimension. Resets all the Simplex_tree when
+ * `min_dim = 0`.
* @param[in] filt_value The new filtration value.
- * @param[in] max_dim The maximal dimension.
+ * @param[in] min_dim The minimal dimension.
*/
- void reset_filtration(Filtration_value filt_value, int max_dim) {
+ void reset_filtration(Filtration_value filt_value, int min_dim) {
for (auto& simplex : root_.members()) {
- simplex.second.assign_filtration(filt_value);
- if (has_children(&simplex) && max_dim > 0) {
- rec_reset_filtration(simplex.second.children(), filt_value, (max_dim - 1));
+ if (min_dim <= 0) {
+ simplex.second.assign_filtration(filt_value);
+ }
+ if (has_children(&simplex)) {
+ rec_reset_filtration(simplex.second.children(), filt_value, min_dim);
}
}
clear_filtration(); // Drop the cache.
}
private:
- /** \brief Recursively resets filtration value until a given dimension.
+ /** \brief Recursively resets filtration value from a given dimension.
* @param[in] sib Siblings to be parsed.
* @param[in] filt_value The new filtration value.
- * @param[in] max_dim The maximal dimension.
+ * @param[in] min_dim The maximal dimension.
*/
- void rec_reset_filtration(Siblings * sib, Filtration_value filt_value, int max_dim) {
- for (auto& simplex : sib->members()) {
- simplex.second.assign_filtration(filt_value);
- if (has_children(&simplex) && max_dim > 0) {
- rec_reset_filtration(simplex.second.children(), filt_value, (max_dim - 1));
+ void rec_reset_filtration(Siblings * sib, Filtration_value filt_value, int min_dim) {
+ for (auto sh = sib->members().begin(); sh != sib->members().end(); ++sh) {
+ if (min_dim <= dimension(sh)) {
+ sh->second.assign_filtration(filt_value);
+ }
+ if (has_children(sh)) {
+ rec_reset_filtration(sh->second.children(), filt_value, min_dim);
}
}
}