/** * Fill intImg (a CellContainer with 40x40x40 cells) with data using flat * array iteration order. */ public void fillImage() { final int[] pos = new int[ dimensions.length ]; final RandomAccess< IntType > a = intImg.randomAccess(); final int[] idim = new int[ dimensions.length ]; for ( int d = 0; d < dimensions.length; ++d ) idim[ d ] = ( int ) dimensions[ d ]; for ( int i = 0; i < numValues; ++i ) { IntervalIndexer.indexToPosition( i, idim, pos ); a.setPosition( pos ); a.get().set( intData[ i ] ); } }
@Test public void testSumWithRandomAccess() { long sum = 0; final RandomAccess< IntType > access = intImg.randomAccess(); final long[] position = new long[ dimensions.length ]; for ( int d = 0; d < dimensions.length; ++d ) position[ d ] = 0; for ( int i = 0; i < numValues; ++i ) { access.setPosition( position ); sum += access.get().get(); for ( int d = 0; d < dimensions.length; ++d ) if ( ++position[ d ] >= dimensions[ d ] ) position[ d ] = 0; else break; } assertTrue( sum == intDataSum ); } }
@Before public void createSourceData() { dimensions = new long[] { 16, 37, 5, 13 }; numValues = 1; for ( int d = 0; d < dimensions.length; ++d ) numValues *= dimensions[ d ]; intData = new int[ numValues ]; intDataSum = 0; final Random random = new Random( 0 ); for ( int i = 0; i < numValues; ++i ) { intData[ i ] = random.nextInt(); intDataSum += intData[ i ]; } intImg = new CellImgFactory<>( new IntType(), 4 ).create( dimensions ); final long[] pos = new long[ dimensions.length ]; final RandomAccess< IntType > a = intImg.randomAccess(); for ( int i = 0; i < numValues; ++i ) { IntervalIndexer.indexToPosition( i, dimensions, pos ); a.setPosition( pos ); a.get().set( intData[ i ] ); } }
@Before public void createSourceData() { dimensions = new long[] { 48, 17, 102 }; numValues = 1; for ( int d = 0; d < dimensions.length; ++d ) numValues *= dimensions[ d ]; intData = new int[ numValues ]; intDataSum = 0; final Random random = new Random( 0 ); for ( int i = 0; i < numValues; ++i ) { intData[ i ] = random.nextInt(); intDataSum += intData[ i ]; } intImg = new CellImgFactory<>( new IntType(), 10 ).create( dimensions ); final long[] pos = new long[ dimensions.length ]; final RandomAccess< IntType > a = intImg.randomAccess(); for ( int i = 0; i < numValues; ++i ) { IntervalIndexer.indexToPosition( i, dimensions, pos ); a.setPosition( pos ); a.get().set( intData[ i ] ); } }