@Override public LanczosInterpolator< T > create( final RandomAccessible< T > randomAccessible ) { return new LanczosInterpolator< T >( randomAccessible, alpha, clipping, min, max ); }
@Override public Sampler< T > copy() { return copy(); }
final static private double[] createLanczosLUT( final int max, final int scale ) { final double[] lut = new double[ max * scale + 2 ]; for ( int i = 0; i < lut.length; ++i ) { final double x = ( double ) i / ( double ) lutScale; lut[ i ] = lanczos( x, max ); } return lut; }
resetKernel(); if ( p < max[ d ] ) products[ d ] = lookUpLanczos( position[ d ] - p ) * products[ ++d ]; continue A; accumulate( d );
super( randomAccessible.randomAccess(), createOffset( alpha, randomAccessible.numDimensions() ) ); lut = createLanczosLUT( alpha, lutScale ); products = new double[ n + 1 ]; products[ n ] = 1.0;
final protected void resetKernel() { for ( int d = n - 1; d >= 0; --d ) { final long p = target.getLongPosition( d ); max[ d ] = p + size[ d ]; products[ d ] = lookUpLanczos( position[ d ] - p ) * products[ d + 1 ]; } }
resetKernel(); if ( p < max[ d ] ) products[ d ] = lookUpLanczos( position[ d ] - p ) * products[ ++d ]; continue A; accumulate( d );
super( randomAccessible.randomAccess(), createOffset( alpha, randomAccessible.numDimensions() ) ); lut = createLanczosLUT( alpha, lutScale ); products = new double[ n + 1 ]; products[ n ] = 1.0;
final protected void resetKernel() { for ( int d = n - 1; d >= 0; --d ) { final long p = target.getLongPosition( d ); max[ d ] = p + size[ d ]; products[ d ] = lookUpLanczos( position[ d ] - p ) * products[ d + 1 ]; } }
final protected void accumulate( final int d ) { for ( int e = d; e >= 0; --e ) products[ e ] = lookUpLanczos( position[ e ] - target.getLongPosition( e ) ) * products[ e + 1 ]; }
@Override public RealRandomAccess< T > copyRealRandomAccess() { return new LanczosInterpolator< T >( this ); } }
@Override public Sampler< T > copy() { return copy(); }
final static private double[] createLanczosLUT( final int max, final int scale ) { final double[] lut = new double[ max * scale + 2 ]; for ( int i = 0; i < lut.length; ++i ) { final double x = ( double ) i / ( double ) lutScale; lut[ i ] = lanczos( x, max ); } return lut; }
final protected void accumulate( final int d ) { for ( int e = d; e >= 0; --e ) products[ e ] = lookUpLanczos( position[ e ] - target.getLongPosition( e ) ) * products[ e + 1 ]; }
@Override public LanczosInterpolator< T > create( final RandomAccessible< T > randomAccessible ) { return new LanczosInterpolator< T >( randomAccessible, alpha, clipping, min, max ); }
@Override public RealRandomAccess< T > copyRealRandomAccess() { return new LanczosInterpolator< T >( this ); } }