UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

23 lines (17 loc) 764 B
/** * Determine whether the given matrix is only translate and/or scale. * This code returns true for TAU / 2 rotation as it can be interpreted as scale. * * @param {mat4} matrix - the matrix * @returns {Boolean} true if matrix is for translate and/or scale * @alias module:modeling/maths/mat4.isOnlyTransformScale */ const isOnlyTransformScale = (matrix) => ( // TODO check if it is worth the effort to add recognition of 90 deg rotations isZero(matrix[1]) && isZero(matrix[2]) && isZero(matrix[3]) && isZero(matrix[4]) && isZero(matrix[6]) && isZero(matrix[7]) && isZero(matrix[8]) && isZero(matrix[9]) && isZero(matrix[11]) && matrix[15] === 1 ) const isZero = (num) => Math.abs(num) < Number.EPSILON module.exports = isOnlyTransformScale