summaryrefslogtreecommitdiff
path: root/src/Toplex_map/include/gudhi/Toplex_map.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Toplex_map/include/gudhi/Toplex_map.h')
-rw-r--r--src/Toplex_map/include/gudhi/Toplex_map.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/Toplex_map/include/gudhi/Toplex_map.h b/src/Toplex_map/include/gudhi/Toplex_map.h
index 00127baf..ccea34d5 100644
--- a/src/Toplex_map/include/gudhi/Toplex_map.h
+++ b/src/Toplex_map/include/gudhi/Toplex_map.h
@@ -69,7 +69,7 @@ public:
* The edge has to verify the link condition if you want to preserve topology.
* Returns the remaining vertex.
* \ingroup toplex_map */
- Toplex_map::Vertex contraction(const Toplex_map::Vertex x, const Toplex_map::Vertex y);
+ Toplex_map::Vertex contraction(const Toplex_map::Vertex x, const Toplex_map::Vertex y, bool force=false);
/** Adds the given simplex to the complex.
* The simplex must not have neither maximal face nor coface in the complex.
@@ -196,17 +196,18 @@ Toplex_map::Simplex_ptr_set Toplex_map::maximal_cofaces(const Input_vertex_range
return cofaces;
}
-Toplex_map::Vertex Toplex_map::contraction(const Toplex_map::Vertex x, const Toplex_map::Vertex y){
+Toplex_map::Vertex Toplex_map::contraction(const Toplex_map::Vertex x, const Toplex_map::Vertex y, bool force){
if(!t0.count(x)) return y;
if(!t0.count(y)) return x;
int k, d;
- if(t0.at(x).size() > t0.at(y).size())
+ if(force || (t0.at(x).size() > t0.at(y).size()))
k=x, d=y;
else
k=y, d=x;
for(const Toplex_map::Simplex_ptr& sptr : Simplex_ptr_set(t0.at(d))){
//Copy constructor needed because the set is modified
Simplex sigma(*sptr);
+ Simplex s; s.insert(2);
erase_maximal(sptr);
sigma.erase(d);
sigma.insert(k);