simplify-path
Version:
simplify 2D polyline
31 lines (24 loc) • 767 B
JavaScript
function getSqDist(p1, p2) {
var dx = p1[0] - p2[0],
dy = p1[1] - p2[1];
return dx * dx + dy * dy;
}
// basic distance-based simplification
module.exports = function simplifyRadialDist(points, tolerance) {
if (points.length<=1)
return points;
tolerance = typeof tolerance === 'number' ? tolerance : 1;
var sqTolerance = tolerance * tolerance;
var prevPoint = points[0],
newPoints = [prevPoint],
point;
for (var i = 1, len = points.length; i < len; i++) {
point = points[i];
if (getSqDist(point, prevPoint) > sqTolerance) {
newPoints.push(point);
prevPoint = point;
}
}
if (prevPoint !== point) newPoints.push(point);
return newPoints;
}