diff --git a/packages/element/src/collision.ts b/packages/element/src/collision.ts index 891af7d3cc..14c9145a16 100644 --- a/packages/element/src/collision.ts +++ b/packages/element/src/collision.ts @@ -234,7 +234,8 @@ const intersectRectanguloidWithLineSegment = ( ) // Remove duplicates .filter( - (p, idx, points) => points.findIndex((d) => pointsEqual(p, d)) === idx, + (p, idx, points) => + points.findIndex((d) => pointsEqual(p, d, 1e-3)) === idx, ) ); }; @@ -282,7 +283,8 @@ const intersectDiamondWithLineSegment = ( ) // Remove duplicates .filter( - (p, idx, points) => points.findIndex((d) => pointsEqual(p, d)) === idx, + (p, idx, points) => + points.findIndex((d) => pointsEqual(p, d, 1e-3)) === idx, ) ); }; diff --git a/packages/math/src/point.ts b/packages/math/src/point.ts index b6054a10a3..bedffbf037 100644 --- a/packages/math/src/point.ts +++ b/packages/math/src/point.ts @@ -91,9 +91,10 @@ export function isPoint(p: unknown): p is LocalPoint | GlobalPoint { export function pointsEqual( a: Point, b: Point, + precision = PRECISION, ): boolean { const abs = Math.abs; - return abs(a[0] - b[0]) < PRECISION && abs(a[1] - b[1]) < PRECISION; + return abs(a[0] - b[0]) < precision && abs(a[1] - b[1]) < precision; } /**