UNPKG

image-wife

Version:

A library for compile-time and runtime procedural modification of photographic images.

41 lines (32 loc) 889 B
type Rows = [ number[], number[] ]; // https://stackoverflow.com/a/10284006 const zip = (rows: Rows) => ( rows[0].map<[ number, number ]>((_, c) => ( rows.map((row) => row[c]) as [ number, number ] )) ); export const getRandomSlopeValues = () => { const total = 100; const tupleSize = 3; const dividersSize = tupleSize - 1; let dividers = new Array(dividersSize) as [ number, number, number ]; for (let ii = 0; ii < dividersSize; ii += 1) { dividers[ii] = Math.ceil(Math.random() * total); } dividers = dividers.sort(); let slopes = zip([ [ ...dividers, total, ], [ 0, ...dividers, ], ]).map(([ a, b ]) => a - b) as [ number, number, number ]; return { redSlope: slopes[0] * 3 / 100, greenSlope: slopes[1] * 3 / 100, blueSlope: slopes[2] * 3 / 100, }; };