index 222152aa36fd8209c39f7f9fb2bbc56ca22a9ca1..fcecc13c19b61d96690e5ef2b80e39cb042492fe 100644 (file)
--- a/src/2geom/piecewise.cpp
+++ b/src/2geom/piecewise.cpp
*
*/
-#include "piecewise.h"
+#include <2geom/piecewise.h>
#include <iterator>
#include <map>
std::vector<double> result;
for (unsigned i=0; i<f.size(); i++){
std::vector<double> rts=roots(f.segs[i]);
- rts=roots(f.segs[i]);
for (unsigned r=0; r<rts.size(); r++){
result.push_back(f.mapToDomain(rts[r], i));
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);
+std::vector<std::vector<double> > multi_roots(Piecewise<SBasis> const &f, std::vector<double> const &values) {
+ std::vector<std::vector<double> > result(values.size());
+ for (unsigned i=0; i<f.size(); i++) {
+ std::vector<std::vector<double> > rts = multi_roots(f.segs[i], values);
+ for(unsigned j=0; j<rts.size(); j++) {
+ for(unsigned r=0; r<rts[j].size(); r++){
+ result[j].push_back(f.mapToDomain(rts[j][r], i));
+ }
+ }
}
- for (unsigned i = 0; i < f.segs.size(); i++)
- ret.segs[i] = reverse(f[f.segs.size() - i - 1]);
- return ret;
+ return result;
}
-
}
/*
Local Variables:
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :