@Override public long min( final int d ) { return sourceInterval.min( d ); }
@Override public long min( final int d ) { return sourceInterval.min( d ); }
@Override public void min( final long[] min ) { sourceInterval.min( min ); }
@Override public long min( final int d ) { return structuringElementBoundingBox.min( d ); }
@Override public void min( final long[] min ) { for ( int d = 0; d < n; ++d ) min[ d ] = structuringElementBoundingBox.min( d ); }
@Override public void min( final long[] min ) { for ( int d = 0; d < n; ++d ) min[ d ] = structuringElementBoundingBox.min( d ); }
@Override public void setPosition( final int[] position ) { for ( int d = 0; d < n; ++d ) { currentPos[ d ] = position[ d ]; currentMin[ d ] = position[ d ] + span.min( d ); currentMax[ d ] = position[ d ] + span.max( d ); } }
public static void indexToPositionForInterval( long index, final Interval interval, final Positionable position ) { final int maxDim = interval.numDimensions() - 1; for ( int d = 0; d < maxDim; ++d ) { final long dim = interval.dimension( d ); final long j = index / dim; position.setPosition( index - j * dim + interval.min( d ), d ); index = j; } position.setPosition( index + interval.min( maxDim ), maxDim ); }
public BoundingBox( final Interval interval ) { this.n = interval.numDimensions(); this.corner1 = new long[ n ]; this.corner2 = new long[ n ]; interval.min( corner1 ); interval.max( corner2 ); }
public static long positionToIndexForInterval( final Localizable position, final Interval interval ) { final int maxDim = interval.numDimensions() - 1; long i = position.getLongPosition( maxDim ) - interval.min( maxDim ); for ( int d = maxDim - 1; d >= 0; --d ) i = i * interval.dimension( d ) + position.getLongPosition( d ) - interval.min( d ); return i; }
@Override public void setPosition( final Localizable localizable ) { for ( int d = 0; d < n; ++d ) { final long position = localizable.getLongPosition( d ); currentPos[ d ] = position; currentMin[ d ] = position + span.min( d ); currentMax[ d ] = position + span.max( d ); } }
@Override public void setPosition( final Localizable localizable ) { for ( int d = 0; d < n; ++d ) { final long position = localizable.getLongPosition( d ); currentPos[ d ] = position; currentMin[ d ] = position + span.min( d ); currentMax[ d ] = position + span.max( d ); } }
/** * Tests weather two intervals are equal in their min / max */ public static boolean equals( final Interval a, final Interval b ) { if ( a.numDimensions() != b.numDimensions() ) return false; for ( int d = 0; d < a.numDimensions(); ++d ) if ( a.min( d ) != b.min( d ) || a.max( d ) != b.max( d ) ) return false; return true; }
static public IntervalIterator create( final Interval interval ) { final int n = interval.numDimensions(); for ( int d = 0; d < n; ++d ) if ( interval.min( d ) != 0 ) return new IntervalIterator( interval ); return new ZeroMinIntervalIterator( interval ); }
private Interval shiftInterval( Interval interval, long[] offset ) { long[] min = new long[ offset.length ]; long[] max = new long[ offset.length ]; for ( int d = 0; d < interval.numDimensions(); d++ ) { min[ d ] = interval.min( d ) - offset[ d ]; max[ d ] = min[ d ] + interval.dimension( d ) - 1; } return new FinalInterval( min, max ); }
private Interval shiftInterval( Interval interval, long[] offset ) { long[] min = new long[ offset.length ]; long[] max = new long[ offset.length ]; for ( int d = 0; d < interval.numDimensions(); d++ ) { min[ d ] = interval.min( d ) - offset[ d ]; max[ d ] = min[ d ] + interval.dimension( d ) - 1; } return new FinalInterval( min, max ); }
public < F extends Interval & RandomAccessible< T > > AbstractOutOfBoundsValue( final F f ) { super( f.numDimensions() ); this.sampler = f.randomAccess(); dimension = new long[ n ]; f.dimensions( dimension ); min = new long[ n ]; f.min( min ); max = new long[ n ]; f.max( max ); dimIsOutOfBounds = new boolean[ n ]; }