2025-03-24 22:56:10 +01:00

24 lines
764 B
JavaScript

export const snap = (points) => {
if (typeof points === 'number') {
return (v) => Math.round(v / points) * points;
}
else {
let i = 0;
const numPoints = points.length;
return (v) => {
let lastDistance = Math.abs(points[0] - v);
for (i = 1; i < numPoints; i++) {
const point = points[i];
const distance = Math.abs(point - v);
if (distance === 0)
return point;
if (distance > lastDistance)
return points[i - 1];
if (i === numPoints - 1)
return point;
lastDistance = distance;
}
};
}
};
//# sourceMappingURL=snap.js.map