globalToLocal method

Vector2 globalToLocal(
  1. Vector2 point
)

Implementation

Vector2 globalToLocal(Vector2 point) {
  final transform = matrix.clone();
  final det = transform.invert(); // side effect

  if (det == 0.0) {
    return Vector2.zero();
  }

  final Vector3 n = Vector3(0.0, 0.0, 1.0);
  final Vector3 i = transform.perspectiveTransform(Vector3(0.0, 0.0, 0.0));
  final Vector3 d = transform.perspectiveTransform(Vector3(0.0, 0.0, 1.0)) - i;
  final Vector3 s = transform.perspectiveTransform(Vector3(point.x, point.y, 0.0));
  final Vector3 p = s - d * (n.dot(s) / n.dot(d));

  return Vector2(p.x, p.y);
}