svg-path-d
Version:
SVG path data (path[d] attribute content) manipulation library.
36 lines • 1.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.bezier3 = exports.bezier2 = exports.clamp = exports.lerp = void 0;
/**
* Linear interpolation.
* @param a start point
* @param b stop point
* @param t blend factor in the interval [0, 1]
*/
function lerp(a, b, t) {
return a * (1 - t) + b * t;
}
exports.lerp = lerp;
function clamp(a, b, c) {
return Math.min(Math.max(a, b), c);
}
exports.clamp = clamp;
/**
* Quadratic Bezier Curve
*/
function bezier2(p0, p1, p2, t) {
// p(t) = (1-t)^2 * p0 + 2 * (1-t) * t * p1 + t^2 * p2
var s = 1 - t;
return s * s * p0 + 2 * s * t * p1 + t * t * p2;
}
exports.bezier2 = bezier2;
/**
* Cubic Bezier Curve
*/
function bezier3(p0, p1, p2, p3, t) {
// p(t) = (1-t)^3 * p0 + 3 * (1-t)^2 * t * p1 + 3 * (1-t) * t^2 * p2 + t^3 * p3
var s = 1 - t;
return s * s * s * p0 + 3 * s * s * t * p1 + 3 * s * t * t * p2 + t * t * t * p3;
}
exports.bezier3 = bezier3;
//# sourceMappingURL=math1d.js.map