transformPoint static method
Takes a 4-by-4 matrix and a vector with 3 entries,
- interprets the vector as a point, transforms that point by the matrix, and
- returns the result as a vector with 3 entries.
- @param {Matrix4} m The matrix.
- @param {Vector3} v The point.
- @param {Vector4} dst optional vector4 to store result
- @return {Vector4} dst or new Vector4 if not provided
- @memberOf module:webgl-3d-math
Implementation
static transformPoint(List<double> m, List<double> v, [dst]) {
dst ??= List<double>.filled(4, 0, growable: false);
var v0 = v[0];
var v1 = v[1];
var v2 = v[2];
var d = v0 * m[0 * 4 + 3] + v1 * m[1 * 4 + 3] + v2 * m[2 * 4 + 3] + m[3 * 4 + 3];
dst[0] = (v0 * m[0 * 4 + 0] + v1 * m[1 * 4 + 0] + v2 * m[2 * 4 + 0] + m[3 * 4 + 0]) / d;
dst[1] = (v0 * m[0 * 4 + 1] + v1 * m[1 * 4 + 1] + v2 * m[2 * 4 + 1] + m[3 * 4 + 1]) / d;
dst[2] = (v0 * m[0 * 4 + 2] + v1 * m[1 * 4 + 2] + v2 * m[2 * 4 + 2] + m[3 * 4 + 2]) / d;
return dst;
}