munsell
Version:
Library for Munsell Color System
39 lines (35 loc) • 956 B
text/typescript
// This is a script file to generate y-to-value-table.ts
import { munsellValueToY } from './convert';
import fs from 'fs';
const findRoot = (
func: (x: number) => number,
rhs: number,
min: number,
max: number,
eps: number,
): number => {
// bisection method
const mid = (min + max) * 0.5;
const lhs = func(mid);
if (Math.abs(lhs - rhs) <= eps) {
return mid;
} else {
return lhs > rhs ? findRoot(func, rhs, min, mid, eps) : findRoot(func, rhs, mid, max, eps);
}
};
const partitions = 2000;
const yToMunsellValueTable = Array(1 + partitions)
.fill(0)
.map((_, i) => {
return findRoot(munsellValueToY, i / partitions, 0, 10, 1e-8);
});
yToMunsellValueTable[0] = 0;
yToMunsellValueTable[partitions] = 10;
fs.writeFileSync(
`${__dirname}/y-to-value-table.ts`,
`export const yToMunsellValueTable =
${JSON.stringify(yToMunsellValueTable, (_, val) => {
return val.toFixed ? Number(val.toFixed(6)) : val;
})};
`,
);