public static Iterable<MutableLongTuple> mooreNeighborhoodIterable(
        LongTuple center, final int radius, 
        LongTuple min, LongTuple max,
        Order order)
    {
        Objects.requireNonNull(order, "The order is null");
        if (min != null)
        {
            Utils.checkForEqualSize(center, min);
        }
        if (max != null)
        {
            Utils.checkForEqualSize(center, max);
        }
        final LongTuple localCenter = LongTuples.copy(center);
        final LongTuple localMin = min == null ? null : LongTuples.copy(min);
        final LongTuple localMax = max == null ? null : LongTuples.copy(max);
        return () -> LongTupleNeighborhoodIterators.mooreNeighborhoodIterator(
            localCenter, radius, localMin, localMax, order);
    }
public static Iterable < MutableLongTuple > mooreNeighborhoodIterable ( LongTuple center , final int radius , LongTuple min , LongTuple max , Order order ) { Objects . requireNonNull ( order , "The order is null" ) ; if ( min != null ) { Utils . checkForEqualSize ( center , min ) ; } if ( max != null ) { Utils . checkForEqualSize ( center , max ) ; } final LongTuple localCenter = LongTuples . copy ( center ) ; final LongTuple localMin = min == null ? null : LongTuples . copy ( min ) ; final LongTuple localMax = max == null ? null : LongTuples . copy ( max ) ; return ( ) -> LongTupleNeighborhoodIterators . mooreNeighborhoodIterator ( localCenter , radius , localMin , localMax , order ) ; }
Creates an iterable that provides iterators for iterating over the
Moore neighborhood of the given center and the given radius. <br>
<br>
If the given minimum- or maximum are non-<code>null</code>,
they will be used for clamping the neighborhood.<br>
<br>
Copies of the given tuples will be stored internally.<br>
<br>
Note: The result of this method will be equivalent to creating
an (unbounded) iterable of the specified neighborhood, and then
clamping the resulting iterable to the given bounds:
<pre><code>
Iterable&lt;MutableLongTuple&gt; iterable =
LongTupleNeighborhoodIterators.mooreNeighborhoodIterable(
center, radius);
Iterable&lt;MutableLongTuple&gt; result =
LongTupleIterables.clampingIterable(min, max);
</code></pre>
But as the bounds may be adjusted here at creation time, this
method may be achieve a higher performance.<br>
<br>
Also see <a href="../../package-summary.html#Neighborhoods">
Neighborhoods</a>

@param center The center of the Moore neighborhood
@param radius The radius of the Moore neighborhood
@param min The (optional) minimum, inclusive
@param max The (optional) maximum, exclusive
@param order The iteration {@link Order}
@return The iterable
@throws IllegalArgumentException If the given (non-<code>null</code>)
tuples do not have the same {@link Tuple#getSize() size}