mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-03 19:45:44 -05:00
Further simplify checks of crossing vs touching in getWinding()
Relates to #890
This commit is contained in:
parent
231dba83b2
commit
5e01774c91
1 changed files with 7 additions and 11 deletions
|
@ -402,17 +402,13 @@ PathItem.inject(new function() {
|
|||
|| t < tMin && prevT > tMax)) {
|
||||
var x = Curve.getPoint(values, t).x,
|
||||
counted = false;
|
||||
// Take care of cases where the curve and the
|
||||
// preceding curve merely touches the ray towards
|
||||
// +-x direction, but proceeds to the same side of
|
||||
// the ray. This essentially is not a crossing.
|
||||
if (Numerical.isZero(Curve.getTangent(values, t).y)
|
||||
&& !Curve.isStraight(values)
|
||||
// Does the winding over the edges change?
|
||||
|| t < tMin && prevCurve
|
||||
&& winding * prevCurve.winding < 0
|
||||
|| t > tMax && nextCurve
|
||||
&& winding * nextCurve.winding < 0) {
|
||||
// Take care of cases where the ray merely touches
|
||||
// the connecting point between two neighboring mono
|
||||
// curves, but does not cross either of them.
|
||||
if (t < tMin && prevCurve
|
||||
&& winding * prevCurve.winding < 0
|
||||
|| t > tMax && nextCurve
|
||||
&& winding * nextCurve.winding < 0) {
|
||||
if (x > xBefore && x < xAfter) {
|
||||
++windLeft;
|
||||
++windRight;
|
||||
|
|
Loading…
Reference in a new issue