UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

34 lines (28 loc) 855 B
/** * Rotate the given vector around the given origin, X axis only. * * @param {vec3} out - receiving vector * @param {vec3} vector - vector to rotate * @param {vec3} origin - origin of the rotation * @param {Number} radians - angle of rotation * @returns {vec3} out * @alias module:modeling/maths/vec3.rotateX */ const rotateX = (out, vector, origin, radians) => { const p = [] const r = [] // translate point to the origin p[0] = vector[0] - origin[0] p[1] = vector[1] - origin[1] p[2] = vector[2] - origin[2] // perform rotation r[0] = p[0] r[1] = p[1] * Math.cos(radians) - p[2] * Math.sin(radians) r[2] = p[1] * Math.sin(radians) + p[2] * Math.cos(radians) // translate to correct position out[0] = r[0] + origin[0] out[1] = r[1] + origin[1] out[2] = r[2] + origin[2] return out } module.exports = rotateX