transformPoint static method

dynamic transformPoint(
  1. List<double> m,
  2. List<double> v, [
  3. dynamic dst
])

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;
}