@macrostrat/column-components
Version:
React rendering primitives for stratigraphic columns
37 lines (36 loc) • 1.06 kB
JavaScript
;
const index = require("../../utils/index.cjs");
const unpack = require("../../utils/unpack.cjs");
const limit = require("../../utils/limit.cjs");
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(index.TWOPI * h) / cos(index.PITHIRD - index.TWOPI * h)) / 3;
g = 1 - (b + r);
} else if (h < 2 / 3) {
h -= 1 / 3;
r = (1 - s) / 3;
g = (1 + s * cos(index.TWOPI * h) / cos(index.PITHIRD - index.TWOPI * h)) / 3;
b = 1 - (r + g);
} else {
h -= 2 / 3;
g = (1 - s) / 3;
b = (1 + s * cos(index.TWOPI * h) / cos(index.PITHIRD - index.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];
};
module.exports = hsi2rgb;
//# sourceMappingURL=hsi2rgb.cjs.map