export const clamp = (
    num: number,
    min: number,
    max: number
) => Math.min(Math.max(num, min), max)

export const lerp = (
    x: number,
    y: number,
    z: number
) => (x * (1 - z)) + (y * z)

export const invlerp = (
    x: number,
    y: number,
    z: number
) => clamp((z - x) / (y - x), 0, 1)

export const interpolate = (
    value: number,
    input: [x: number, y: number],
    output: [x: number, y: number]
) => lerp(output[0], output[1], invlerp(input[0], input[1], value))
