modeling/src/maths/vec4/transform.js

  1. /**
  2. * Transform the given vector using the given matrix.
  3. *
  4. * @param {vec4} out - receiving vector
  5. * @param {vec4} vector - vector to transform
  6. * @param {mat4} matrix - matrix to transform with
  7. * @returns {vec4} out
  8. * @alias module:modeling/maths/vec4.transform
  9. */
  10. const transform = (out, vector, matrix) => {
  11. const [x, y, z, w] = vector
  12. out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12] * w
  13. out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13] * w
  14. out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14] * w
  15. out[3] = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15] * w
  16. return out
  17. }
  18. module.exports = transform