fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
25 lines (23 loc) • 638 B
text/typescript
import type { TRadian } from '../../typedefs';
import { halfPI } from '../../constants';
/**
* Calculate the cos of an angle, avoiding returning floats for known results
* This function is here just to avoid getting 0.999999999999999 when dealing
* with numbers that are really 1 or 0.
* @param {TRadian} angle the angle
* @return {Number} the cosin value for angle.
*/
export const cos = (angle: TRadian): number => {
if (angle === 0) {
return 1;
}
const angleSlice = Math.abs(angle) / halfPI;
switch (angleSlice) {
case 1:
case 3:
return 0;
case 2:
return -1;
}
return Math.cos(angle);
};