@macrostrat/column-components
Version:
React rendering primitives for stratigraphic columns
38 lines (37 loc) • 995 B
JavaScript
import { TWOPI, PITHIRD } from "../../utils/index.js";
import unpack from "../../utils/unpack.js";
import limit from "../../utils/limit.js";
const { cos } = Math;
const hsi2rgb = (...args) => {
args = unpack(args, "hsi");
let [h, s, i] = args;
let r, g, b;
if (isNaN(h)) h = 0;
if (isNaN(s)) s = 0;
if (h > 360) h -= 360;
if (h < 0) h += 360;
h /= 360;
if (h < 1 / 3) {
b = (1 - s) / 3;
r = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;
g = 1 - (b + r);
} else if (h < 2 / 3) {
h -= 1 / 3;
r = (1 - s) / 3;
g = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;
b = 1 - (r + g);
} else {
h -= 2 / 3;
g = (1 - s) / 3;
b = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;
r = 1 - (g + b);
}
r = limit(i * r * 3);
g = limit(i * g * 3);
b = limit(i * b * 3);
return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1];
};
export {
hsi2rgb as default
};
//# sourceMappingURL=hsi2rgb.js.map