Download node_modules/chroma-js/src/interpolate.coffee from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 1.21 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/node_modules/chroma-js/src/interpolate.coffee
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/node_modules/chroma-js/src/interpolate.coffee
-
curl -L -o interpolate.coffee https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/node_modules/chroma-js/src/interpolate.coffee
1.21 kB
| ### | |
| interpolates between a set of colors uzing a bezier spline | |
| ### | |
| bezier = (colors) -> | |
| colors = (chroma(c) for c in colors) | |
| if colors.length == 2 | |
| # linear interpolation | |
| [lab0, lab1] = (c.lab() for c in colors) | |
| I = (t) -> | |
| lab = (lab0[i] + t * (lab1[i] - lab0[i]) for i in [0..2]) | |
| chroma.lab lab... | |
| else if colors.length == 3 | |
| # quadratic bezier interpolation | |
| [lab0, lab1, lab2] = (c.lab() for c in colors) | |
| I = (t) -> | |
| lab = ((1-t)*(1-t) * lab0[i] + 2 * (1-t) * t * lab1[i] + t * t * lab2[i] for i in [0..2]) | |
| chroma.lab lab... | |
| else if colors.length == 4 | |
| # cubic bezier interpolation | |
| [lab0, lab1, lab2, lab3] = (c.lab() for c in colors) | |
| I = (t) -> | |
| lab = ((1-t)*(1-t)*(1-t) * lab0[i] + 3 * (1-t) * (1-t) * t * lab1[i] + 3 * (1-t) * t * t * lab2[i] + t*t*t * lab3[i] for i in [0..2]) | |
| chroma.lab lab... | |
| else if colors.length == 5 | |
| I0 = bezier colors[0..2] | |
| I1 = bezier colors[2..4] | |
| I = (t) -> | |
| if t < 0.5 | |
| I0 t*2 | |
| else | |
| I1 (t-0.5)*2 | |
| I | |
| chroma.interpolate.bezier = bezier |