mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-05 20:32:00 -05:00
Remove Curve. _getEdgeSum() again, and inline code in Path.isClockwise()
This commit is contained in:
parent
1fc9f882ca
commit
b91c8f93f8
2 changed files with 12 additions and 20 deletions
|
@ -642,10 +642,6 @@ statics: {
|
||||||
return new Rectangle(min[0], min[1], max[0] - min[0], max[1] - min[1]);
|
return new Rectangle(min[0], min[1], max[0] - min[0], max[1] - min[1]);
|
||||||
},
|
},
|
||||||
|
|
||||||
isClockwise: function(v) {
|
|
||||||
return Curve._getEdgeSum(v) > 0;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Private helper for both Curve.getBounds() and Path.getBounds(), which
|
* Private helper for both Curve.getBounds() and Path.getBounds(), which
|
||||||
* finds the 0-crossings of the derivative of a bezier curve polynomial, to
|
* finds the 0-crossings of the derivative of a bezier curve polynomial, to
|
||||||
|
@ -806,19 +802,6 @@ statics: {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return winding;
|
return winding;
|
||||||
},
|
|
||||||
|
|
||||||
_getEdgeSum: function(v) {
|
|
||||||
// Method derived from:
|
|
||||||
// http://stackoverflow.com/questions/1165647
|
|
||||||
// We treat the curve points and handles as the outline of a polygon of
|
|
||||||
// which we determine the orientation using the method of calculating
|
|
||||||
// the sum over the edges. This will work even with non-convex polygons,
|
|
||||||
// telling you whether it's mostly clockwise
|
|
||||||
var sum = 0;
|
|
||||||
for (var j = 2; j < 8; j += 2)
|
|
||||||
sum += (v[j - 2] - v[j]) * (v[j + 1] + v[j - 1]);
|
|
||||||
return sum;
|
|
||||||
}
|
}
|
||||||
}}, Base.each(['getBounds', 'getStrokeBounds', 'getHandleBounds', 'getRoughBounds'],
|
}}, Base.each(['getBounds', 'getStrokeBounds', 'getHandleBounds', 'getRoughBounds'],
|
||||||
// Note: Although Curve.getBounds() exists, we are using Path.getBounds() to
|
// Note: Although Curve.getBounds() exists, we are using Path.getBounds() to
|
||||||
|
|
|
@ -2417,10 +2417,19 @@ statics: {
|
||||||
*/
|
*/
|
||||||
isClockwise: function(segments) {
|
isClockwise: function(segments) {
|
||||||
var sum = 0;
|
var sum = 0;
|
||||||
|
// Method derived from:
|
||||||
|
// http://stackoverflow.com/questions/1165647
|
||||||
|
// We treat the curve points and handles as the outline of a polygon of
|
||||||
|
// which we determine the orientation using the method of calculating
|
||||||
|
// the sum over the edges. This will work even with non-convex polygons,
|
||||||
|
// telling you whether it's mostly clockwise
|
||||||
// TODO: Check if this works correctly for all open paths.
|
// TODO: Check if this works correctly for all open paths.
|
||||||
for (var i = 0, l = segments.length; i < l; i++)
|
for (var i = 0, l = segments.length; i < l; i++) {
|
||||||
sum += Curve._getEdgeSum(Curve.getValues(segments[i],
|
var v = Curve.getValues(
|
||||||
segments[i + 1 < l ? i + 1 : 0]));
|
segments[i], segments[i + 1 < l ? i + 1 : 0]);
|
||||||
|
for (var j = 2; j < 8; j += 2)
|
||||||
|
sum += (v[j - 2] - v[j]) * (v[j + 1] + v[j - 1]);
|
||||||
|
}
|
||||||
return sum > 0;
|
return sum > 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue