transformMat4 function
Transforms the vec3 with a mat4. 4th vector component is implicitly '1'
@param {vec3} out the receiving vector @param {ReadonlyVec3} a the vector to transform @param {ReadonlyMat4} m matrix to transform with @returns {vec3} out
Implementation
List<double> transformMat4(List<double> out, List<double> a, List<double> m) {
final x = a[0], y = a[1], z = a[2];
double w = m[3] * x + m[7] * y + m[11] * z + m[15];
// w ??= 1.0;
out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;
out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;
out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;
return out;
}