perspectiveTransform method

Vector3 perspectiveTransform (Vector3 arg)

Transform arg of type Vector3 using the perspective transformation defined by this.

Implementation

Vector3 perspectiveTransform(Vector3 arg) {
  final Float32List argStorage = arg._v3storage;
  final double x_ = (_m4storage[0] * argStorage[0]) +
      (_m4storage[4] * argStorage[1]) +
      (_m4storage[8] * argStorage[2]) +
      _m4storage[12];
  final double y_ = (_m4storage[1] * argStorage[0]) +
      (_m4storage[5] * argStorage[1]) +
      (_m4storage[9] * argStorage[2]) +
      _m4storage[13];
  final double z_ = (_m4storage[2] * argStorage[0]) +
      (_m4storage[6] * argStorage[1]) +
      (_m4storage[10] * argStorage[2]) +
      _m4storage[14];
  final double w_ = 1.0 /
      ((_m4storage[3] * argStorage[0]) +
          (_m4storage[7] * argStorage[1]) +
          (_m4storage[11] * argStorage[2]) +
          _m4storage[15]);
  argStorage[0] = x_ * w_;
  argStorage[1] = y_ * w_;
  argStorage[2] = z_ * w_;
  return arg;
}