# transformPoint static method

Applies the given matrix as a perspective transform to the given point.

This function assumes the given point has a z-coordinate of 0.0. The z-coordinate of the result is ignored.

While not common, this method may return (NaN, NaN), iff the given `point`

results in a "point at infinity" in homogeneous coordinates after applying
the `transform`

. For example, a RenderObject may set its transform to
the zero matrix to indicate its content is currently not visible. Trying
to convert an `Offset`

to its coordinate space always results in
(NaN, NaN).

## Implementation

```
static Offset transformPoint(Matrix4 transform, Offset point) {
final Float64List storage = transform.storage;
final double x = point.dx;
final double y = point.dy;
// Directly simulate the transform of the vector (x, y, 0, 1),
// dropping the resulting Z coordinate, and normalizing only
// if needed.
final double rx = storage[0] * x + storage[4] * y + storage[12];
final double ry = storage[1] * x + storage[5] * y + storage[13];
final double rw = storage[3] * x + storage[7] * y + storage[15];
if (rw == 1.0) {
return Offset(rx, ry);
} else {
return Offset(rx / rw, ry / rw);
}
}
```