Further cleanup and optimize spiro expansion.
This commit is contained in:
parent
e86890e16a
commit
e1e8144f1c
12 changed files with 234 additions and 224 deletions
49
support/utils.js
Normal file
49
support/utils.js
Normal file
|
@ -0,0 +1,49 @@
|
|||
"use strict";
|
||||
|
||||
function mix(a, b, p) {
|
||||
return a + (b - a) * p;
|
||||
}
|
||||
function ratio(l, r, m) {
|
||||
return l === r ? 0 : (m - l) / (r - l);
|
||||
}
|
||||
function barmixL(l, r, b, p) {
|
||||
return l > r ? barmixL(r, l, b, p) : l + b + p * (r - l - b * 3);
|
||||
}
|
||||
function barmixM(l, r, b, p) {
|
||||
return barmixL(l, r, b, p) + b / 2;
|
||||
}
|
||||
function barMixR(l, r, b, p) {
|
||||
return barMixR(l, r, b, p) + b;
|
||||
}
|
||||
function linreg(x0, y0, x1, y1, x) {
|
||||
return y0 + ((x - x0) * (y1 - y0)) / (x1 - x0);
|
||||
}
|
||||
function clamp(l, h, x) {
|
||||
return x < l ? l : x > h ? h : x;
|
||||
}
|
||||
function fallback(...args) {
|
||||
for (const item of args) if (item !== void 0) return item;
|
||||
return void 0;
|
||||
}
|
||||
function bez2(a, b, c, t) {
|
||||
return (1 - t) * (1 - t) * a + 2 * (1 - t) * t * b + t * t * c;
|
||||
}
|
||||
function bez3(a, b, c, d, t) {
|
||||
return (
|
||||
(1 - t) * (1 - t) * (1 - t) * a +
|
||||
3 * (1 - t) * (1 - t) * t * b +
|
||||
3 * t * t * (1 - t) * c +
|
||||
t * t * t * d
|
||||
);
|
||||
}
|
||||
|
||||
exports.mix = mix;
|
||||
exports.ratio = ratio;
|
||||
exports.barmixL = barmixL;
|
||||
exports.barmixM = barmixM;
|
||||
exports.barmixR = barMixR;
|
||||
exports.linreg = linreg;
|
||||
exports.clamp = clamp;
|
||||
exports.fallback = fallback;
|
||||
exports.bez2 = bez2;
|
||||
exports.bez3 = bez3;
|
Loading…
Add table
Add a link
Reference in a new issue