public FrustumRayBuilder set(Matrix4fc m) {
        float nxX = m.m03() + m.m00(), nxY = m.m13() + m.m10(), nxZ = m.m23() + m.m20(), d1 = m.m33() + m.m30();
        float pxX = m.m03() - m.m00(), pxY = m.m13() - m.m10(), pxZ = m.m23() - m.m20(), d2 = m.m33() - m.m30();
        float nyX = m.m03() + m.m01(), nyY = m.m13() + m.m11(), nyZ = m.m23() + m.m21();
        float pyX = m.m03() - m.m01(), pyY = m.m13() - m.m11(), pyZ = m.m23() - m.m21(), d3 = m.m33() - m.m31();
        // bottom left
        nxnyX = nyY * nxZ - nyZ * nxY;
        nxnyY = nyZ * nxX - nyX * nxZ;
        nxnyZ = nyX * nxY - nyY * nxX;
        // bottom right
        pxnyX = pxY * nyZ - pxZ * nyY;
        pxnyY = pxZ * nyX - pxX * nyZ;
        pxnyZ = pxX * nyY - pxY * nyX;
        // top left
        nxpyX = nxY * pyZ - nxZ * pyY;
        nxpyY = nxZ * pyX - nxX * pyZ;
        nxpyZ = nxX * pyY - nxY * pyX;
        // top right
        pxpyX = pyY * pxZ - pyZ * pxY;
        pxpyY = pyZ * pxX - pyX * pxZ;
        pxpyZ = pyX * pxY - pyY * pxX;
        // compute origin
        float pxnxX, pxnxY, pxnxZ;
        pxnxX = pxY * nxZ - pxZ * nxY;
        pxnxY = pxZ * nxX - pxX * nxZ;
        pxnxZ = pxX * nxY - pxY * nxX;
        float invDot = 1.0f / (nxX * pxpyX + nxY * pxpyY + nxZ * pxpyZ);
        cx = (-pxpyX * d1 - nxpyX * d2 - pxnxX * d3) * invDot;
        cy = (-pxpyY * d1 - nxpyY * d2 - pxnxY * d3) * invDot;
        cz = (-pxpyZ * d1 - nxpyZ * d2 - pxnxZ * d3) * invDot;
        return this;
    }
public FrustumRayBuilder set ( Matrix4fc m ) { float nxX = m . m03 ( ) + m . m00 ( ) , nxY = m . m13 ( ) + m . m10 ( ) , nxZ = m . m23 ( ) + m . m20 ( ) , d1 = m . m33 ( ) + m . m30 ( ) ; float pxX = m . m03 ( ) - m . m00 ( ) , pxY = m . m13 ( ) - m . m10 ( ) , pxZ = m . m23 ( ) - m . m20 ( ) , d2 = m . m33 ( ) - m . m30 ( ) ; float nyX = m . m03 ( ) + m . m01 ( ) , nyY = m . m13 ( ) + m . m11 ( ) , nyZ = m . m23 ( ) + m . m21 ( ) ; float pyX = m . m03 ( ) - m . m01 ( ) , pyY = m . m13 ( ) - m . m11 ( ) , pyZ = m . m23 ( ) - m . m21 ( ) , d3 = m . m33 ( ) - m . m31 ( ) ; nxnyX = nyY * nxZ - nyZ * nxY ; nxnyY = nyZ * nxX - nyX * nxZ ; nxnyZ = nyX * nxY - nyY * nxX ; pxnyX = pxY * nyZ - pxZ * nyY ; pxnyY = pxZ * nyX - pxX * nyZ ; pxnyZ = pxX * nyY - pxY * nyX ; nxpyX = nxY * pyZ - nxZ * pyY ; nxpyY = nxZ * pyX - nxX * pyZ ; nxpyZ = nxX * pyY - nxY * pyX ; pxpyX = pyY * pxZ - pyZ * pxY ; pxpyY = pyZ * pxX - pyX * pxZ ; pxpyZ = pyX * pxY - pyY * pxX ; float pxnxX , pxnxY , pxnxZ ; pxnxX = pxY * nxZ - pxZ * nxY ; pxnxY = pxZ * nxX - pxX * nxZ ; pxnxZ = pxX * nxY - pxY * nxX ; float invDot = 1.0f / ( nxX * pxpyX + nxY * pxpyY + nxZ * pxpyZ ) ; cx = ( - pxpyX * d1 - nxpyX * d2 - pxnxX * d3 ) * invDot ; cy = ( - pxpyY * d1 - nxpyY * d2 - pxnxY * d3 ) * invDot ; cz = ( - pxpyZ * d1 - nxpyZ * d2 - pxnxZ * d3 ) * invDot ; return this ; }
Update the stored frustum corner rays and origin of <code>this</code> {@link FrustumRayBuilder} with the given {@link Matrix4fc 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>

@param m
the {@link Matrix4fc matrix} to update the frustum corner rays and origin with
@return this