isSelfIntersecting

true if this Shape crosses or touches itself anywhere: either one of its ShapeContours is self-intersecting on its own (ShapeContour.isSelfIntersecting), or two distinct contours cross or touch each other.

Distinct contours are compared with intersections, which is reliable for that case -- the gap it has (comparing a segment against itself) only matters when checking a contour against itself, which ShapeContour.isSelfIntersecting handles correctly instead.


true if this ShapeContour crosses or touches itself anywhere: either a single segment that loops back on itself, or two (not necessarily adjacent) segments that cross or touch.

This goes directly to kartifex's curve-intersection finder (Intersections.intersections) on every pair of segments, rather than reusing intersections: that function explicitly skips comparing a segment against itself (a === b), so it can never detect a single BΓ©zier segment looping back on itself -- only crossings between distinct segments.