void Path::stitch(Sequence::iterator first_replaced, Sequence::iterator last_replaced, Sequence &source) { if (!source.empty()) { if ( first_replaced != get_curves().begin() ) { if ( (*first_replaced)->initialPoint() != source.front()->initialPoint() ) { Curve *stitch = new StitchSegment((*first_replaced)->initialPoint(), source.front()->initialPoint()); source.insert(source.begin(), boost::shared_ptr<Curve>(stitch)); } } if ( last_replaced != (get_curves().end()-1) ) { if ( (*last_replaced)->finalPoint() != source.back()->finalPoint() ) { Curve *stitch = new StitchSegment(source.back()->finalPoint(), (*last_replaced)->finalPoint()); source.insert(source.end(), boost::shared_ptr<Curve>(stitch)); } } } else if ( first_replaced != last_replaced && first_replaced != get_curves().begin() && last_replaced != get_curves().end()-1) { if ( (*first_replaced)->initialPoint() != (*(last_replaced-1))->finalPoint() ) { Curve *stitch = new StitchSegment((*(last_replaced-1))->finalPoint(), (*first_replaced)->initialPoint()); source.insert(source.begin(), boost::shared_ptr<Curve>(stitch)); } } }
double DeterminatorInterpolated::getPercentile(const Sequence &sequence, int percentile) const { size_t size = sequence.size(); double coeff = 100.0 / size; double calcIdx = percentile / coeff - .5; if (calcIdx <= 0) return sequence.front(); if (calcIdx >= size - 1) return sequence.back(); size_t idx0 = (size_t) floor(calcIdx); int v0 = sequence.at(idx0); int v1 = sequence.at(idx0 + 1); double p0 = 100.0 / size * (idx0); double slope = size / 100.0 * (percentile - p0); return v0 + (v1 - v0) * slope; }
void const_constraints(const Sequence& c) { const_reference r = c.front(); ignore_unused_variable_warning(r); }