21 lines
522 B
TypeScript
21 lines
522 B
TypeScript
export type ScaleFunction = Function & {
|
|
inverse: Function
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param domain example: [0, 100]
|
|
* @param range examaple: [0, width]
|
|
*/
|
|
export function Scale(domain: number[], range: number[]): ScaleFunction {
|
|
function Fn(value: number): number {
|
|
return ((value - domain[0]) * (range[1] - range[0])) / (domain[1] - domain[0]) + range[0]
|
|
}
|
|
|
|
Fn.inverse = function (value: number): number {
|
|
return ((value - range[0]) * (domain[1] - domain[0])) / (range[1] - range[0]) + domain[0]
|
|
}
|
|
|
|
return Fn
|
|
}
|