From 1819661828b312a303ed5a74178ff4514bcb39e8 Mon Sep 17 00:00:00 2001 From: Mark Tolmacs Date: Mon, 3 Mar 2025 15:06:20 +0100 Subject: [PATCH] Tune what's considered a duplicate intersection point --- packages/element/src/collision.ts | 6 ++++-- packages/math/src/point.ts | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) 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; } /**