Create a new {@link FrustumRayBuilder} from the given {@link Matrix4d matrix} by extracing the matrix's frustum.
Obtain the normalized direction of a ray starting at the center of the coordinate system and going through the near frustum plane. <p> The parameters <code>x</code> and <code>y</code> are used to interpolate the generated ray direction from the bottom-left to the top-right frustum corners.
Store the eye/origin of the perspective frustum in the given <code>origin</code>.
Update the stored frustum corner rays and origin of <code>this</code> {@link FrustumRayBuilder} with the given {@link Matrix4d matrix}. <p> Reference: <a href="http://gamedevs.org/uploads/fast-extraction-viewing-frustum-planes-from-world-view-projection-matrix.pdf"> Fast Extraction of Viewing Frustum Planes from the World-View-Projection Matrix</a> <p> Reference: <a href="http://geomalgorithms.com/a05-_intersect-1.html">http://geomalgorithms.com</a>
Provides methods to compute rays through an arbitrary perspective transformation defined by a {@link Matrix4d}. <p> This can be used to compute the eye-rays in simple software-based raycasting/raytracing. <p> To obtain the origin of the rays call {@link #origin(Vector3d)}. Then to compute the directions of subsequent rays use {@link #dir(double, double, Vector3d)}.
@author Kai Burjack