FrustumIntersection.intersectAab

Determine whether the given axis-aligned box is partly or completely within or outside of the frustum defined by <code>this</code> frustum culler and, if the box is not inside this frustum, return the index of the plane that culled it. The box is specified via its <code>min</code> and <code>max</code> corner coordinates. <p> This method differs from {@link #intersectAab(Vector3d, Vector3d)} in that it allows to mask-off planes that should not be calculated. For example, in order to only test a box against the left frustum plane, use a mask of {@link #PLANE_MASK_NX}. Or in order to test all planes <i>except</i> the left plane, use a mask of <code>(~0 ^ PLANE_MASK_NX)</code>. <p> The algorithm implemented by this method is conservative. This means that in certain circumstances a <i>false positive</i> can occur, when the method returns {@link #INTERSECT} for boxes that do not intersect the frustum. See <a href="http://iquilezles.org/www/articles/frustumcorrect/frustumcorrect.htm">iquilezles.org</a> for an examination of this problem.

@param min the minimum corner coordinates of the axis-aligned box @param max the maximum corner coordinates of the axis-aligned box @param mask contains as bitset all the planes that should be tested. This value can be any combination of {@link #PLANE_MASK_NX}, {@link #PLANE_MASK_PX}, {@link #PLANE_MASK_NY}, {@link #PLANE_MASK_PY}, {@link #PLANE_MASK_NZ} and {@link #PLANE_MASK_PZ} @return the index of the first plane that culled the box, if the box does not intersect the frustum, or {@link #INTERSECT} if the box intersects the frustum, or {@link #INSIDE} if the box is fully inside of the frustum. The plane index is one of {@link #PLANE_NX}, {@link #PLANE_PX}, {@link #PLANE_NY}, {@link #PLANE_PY}, {@link #PLANE_NZ} and {@link #PLANE_PZ}

Meta