public static void lookAt(Matrix4 m, Vector3 eye, Vector3 center, Vector3 up) {
        Vector3 f = center.copy().subtract(eye).normalize();
        Vector3 s = f.copy().crossProduct(up).normalize();
        Vector3 u = s.copy().crossProduct(f);

        m.m00 = s.x;
        m.m10 = s.y;
        m.m20 = s.z;

        m.m01 = u.x;
        m.m11 = u.y;
        m.m21 = u.z;

        m.m02 = -f.x;
        m.m12 = -f.y;
        m.m22 = -f.z;

        m.m30 = -s.dotProduct(eye);
        m.m31 = -u.dotProduct(eye);
        m.m32 = f.dotProduct(eye);
    }
Projects NDC coordinates [-1, 1] onto a target plane at some fixed distance
to the camera taking into account the FOV. This target plane is assumed to be
parallel to the near and far planes of the perspective view frustum.

@param ndcX X coordinate on the viewport in [-1, 1] range
@param ndcY Y coordinate on the viewport in [-1, 1] range
@param planeDist Distance of the projection
@return Projection of (ndcX, ndcY) into world-space
core/src/main/java/mrtjp/projectred/redui/PVMMatrix.java