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,