summaryrefslogtreecommitdiffstats
path: root/src/2geom/piecewise.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/2geom/piecewise.cpp')
-rw-r--r--src/2geom/piecewise.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/2geom/piecewise.cpp b/src/2geom/piecewise.cpp
index dc91ab4a9..222152aa3 100644
--- a/src/2geom/piecewise.cpp
+++ b/src/2geom/piecewise.cpp
@@ -167,6 +167,22 @@ std::vector<double> roots(Piecewise<SBasis> const &f){
return result;
}
+Piecewise<SBasis> reverse(Piecewise<SBasis> const &f) {
+ Piecewise<SBasis> ret = Piecewise<SBasis>();
+ ret.cuts.resize(f.cuts.size());
+ ret.segs.resize(f.segs.size());
+ double start = f.cuts[0];
+ double end = f.cuts.back();
+ for (unsigned i = 0; i < f.cuts.size(); i++) {
+ double x = f.cuts[f.cuts.size() - 1 - i];
+ ret.cuts[i] = end - (x - start);
+ }
+ for (unsigned i = 0; i < f.segs.size(); i++)
+ ret.segs[i] = reverse(f[f.segs.size() - i - 1]);
+ return ret;
+}
+
+
}
/*
Local Variables: