module.exports = rotateZ /** * Rotates a quaternion by the given angle about the Z axis * * @param {quat} out quat receiving operation result * @param {quat} a quat to rotate * @param {number} rad angle (in radians) to rotate * @returns {quat} out */ function rotateZ (out, a, rad) { rad *= 0.5 var ax = a[0], ay = a[1], az = a[2], aw = a[3], bz = Math.sin(rad), bw = Math.cos(rad) out[0] = ax * bw + ay * bz out[1] = ay * bw - ax * bz out[2] = az * bw + aw * bz out[3] = aw * bw - az * bz return out }