diff --git a/src/path/Curve.js b/src/path/Curve.js index 04f671bc..265265ec 100644 --- a/src/path/Curve.js +++ b/src/path/Curve.js @@ -1264,13 +1264,20 @@ new function() { // Scope for methods that require numerical integration function addCurveIntersections(v1, v2, curve1, curve2, locations, tmin, tmax, umin, umax, oldTdiff, reverse, recursion) { + if(recursion === undefined){ + recursion |= 0; + tmin = tmin || 0; tmax = tmax || 1; + umin = umin || 0; umax = umax || 1; + oldTdiff = oldTdiff || 1; + reverse = false; + } // Avoid endless recursion. if (recursion > 20) return; // Let P be the first curve and Q be the second var q0x = v2[0], q0y = v2[1], q3x = v2[6], q3y = v2[7], getSignedDistance = Line.getSignedDistance, - // Calculate the fat-line L for P is the baseline l and two + // Calculate the fat-line L for Q is the baseline l and two // offsets which completely encloses the curve P. d1 = getSignedDistance(q0x, q0y, q3x, q3y, v2[2], v2[3]) || 0, d2 = getSignedDistance(q0x, q0y, q3x, q3y, v2[4], v2[5]) || 0, @@ -1278,7 +1285,7 @@ new function() { // Scope for methods that require numerical integration dmin = factor * Math.min(0, d1, d2), dmax = factor * Math.max(0, d1, d2), // Calculate non-parametric bezier curve D(ti, di(t)) - di(t) is the - // distance of Q from the baseline l of the fat-line, ti is equally + // distance of P from the baseline l of the fat-line, ti is equally // spaced in [0, 1] dp0 = getSignedDistance(q0x, q0y, q3x, q3y, v1[0], v1[1]), dp1 = getSignedDistance(q0x, q0y, q3x, q3y, v1[2], v1[3]), @@ -1287,11 +1294,11 @@ new function() { // Scope for methods that require numerical integration // Get the top and bottom parts of the convex-hull var hull = getConvexHull(dp0, dp1, dp2, dp3), top = hull[0], bottom = hull[1], clip_tmin, clip_tmax; - // Clip the convexhull - clip_tmin = clipCHull(top, bottom, dmin, dmax); + // Clip the convexhull with dmin and dmax + clip_tmin = clipConvexHull(top, bottom, dmin, dmax); top.reverse(); bottom.reverse(); - clip_tmax = clipCHull(top, bottom, dmin, dmax); + clip_tmax = clipConvexHull(top, bottom, dmin, dmax); // No intersections if one of the tvalues are null or 'undefined' if(clip_tmin == null || clip_tmax == null) return false;