Lines Matching refs:tolerance
129 Coord BezierCurve::length(Coord tolerance) const
140 return bezier_length(pts[0], pts[1], pts[2], tolerance);
145 return bezier_length(pts[0], pts[1], pts[2], pts[3], tolerance);
148 return bezier_length(controlPoints(), tolerance);
362 static Coord bezier_length_internal(std::vector<Point> &v1, Coord tolerance, int level)
368 * error tolerance, we can be sure that the true value is no further than
369 * 0.5 * tolerance from their arithmetic mean. When it's larger, we recursively
379 if (upper - lower <= 2*tolerance || level >= 8) {
437 return bezier_length_internal(v1, 0.5 * tolerance, level + 1) +
438 bezier_length_internal(v2, 0.5 * tolerance, level + 1);
443 Coord bezier_length(std::vector<Point> const &points, Coord tolerance)
447 return bezier_length_internal(v1, tolerance, 0);
450 static Coord bezier_length_internal(Point a0, Point a1, Point a2, Coord tolerance, int level)
455 if (upper - lower <= 2*tolerance || level >= 8) {
465 return bezier_length_internal(a0, b1, b2, 0.5 * tolerance, level + 1) +
466 bezier_length_internal(b2, c1, a2, 0.5 * tolerance, level + 1);
471 Coord bezier_length(Point a0, Point a1, Point a2, Coord tolerance)
473 return bezier_length_internal(a0, a1, a2, tolerance, 0);
476 static Coord bezier_length_internal(Point a0, Point a1, Point a2, Point a3, Coord tolerance, int level)
481 if (upper - lower <= 2*tolerance || level >= 8) {
494 return bezier_length_internal(a0, b1, b2, b3, 0.5 * tolerance, level + 1) +
495 bezier_length_internal(b3, c2, c1, a3, 0.5 * tolerance, level + 1);
500 Coord bezier_length(Point a0, Point a1, Point a2, Point a3, Coord tolerance)
502 return bezier_length_internal(a0, a1, a2, a3, tolerance, 0);