From 8fab150bdc69009313f100091af384b21768f556 Mon Sep 17 00:00:00 2001 From: Bob Carmichael Date: Mon, 10 Jun 2024 08:14:29 -0400 Subject: [PATCH] cap max segments --- src/common/geometry.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/common/geometry.js b/src/common/geometry.js index 2b97665..5d54d5d 100644 --- a/src/common/geometry.js +++ b/src/common/geometry.js @@ -295,6 +295,7 @@ export const subsample = (vertices, maxLength) => { let subsampledVertices = [] let previous = undefined let next + const maxSegments = 1000 for (next = 0; next < vertices.length; next++) { if (previous !== undefined) { @@ -309,7 +310,13 @@ export const subsample = (vertices, maxLength) => { .multiply(Victor(maxLength, maxLength)) // This loads up (start, end]. - for (let step = 0; step < delta.magnitude() / maxLength; step++) { + const magnitude = delta.magnitude() + + // If the magnitude is unreasonably large, cap the number of segments + // to prevent the creation of too many points + const segmentMaxLength = Math.max(magnitude / maxSegments, maxLength) + + for (let step = 0; step < magnitude / segmentMaxLength; step++) { subsampledVertices.push( new Victor( start.x + step * deltaSegment.x,