final private void graycodeFwdRecursive( final int dimension ) { if ( dimension == 0 ) { target.fwd( 0 ); code += 1; accumulate(); } else { graycodeFwdRecursive( dimension - 1 ); target.fwd( dimension ); code += 1 << dimension; accumulate(); graycodeBckRecursive( dimension - 1 ); } }
final private void graycodeFwdRecursive( final int dimension ) { if ( dimension == 0 ) { target.fwd( 0 ); code += 1; accumulate(); } else { graycodeFwdRecursive( dimension - 1 ); target.fwd( dimension ); code += 1 << dimension; accumulate(); graycodeBckRecursive( dimension - 1 ); } }
final private void graycodeBckRecursive( final int dimension ) { if ( dimension == 0 ) { target.bck( 0 ); code -= 1; accumulate(); } else { graycodeFwdRecursive( dimension - 1 ); target.bck( dimension ); code -= 1 << dimension; accumulate(); graycodeBckRecursive( dimension - 1 ); } }
final private void graycodeBckRecursive( final int dimension ) { if ( dimension == 0 ) { target.bck( 0 ); code -= 1; accumulate(); } else { graycodeFwdRecursive( dimension - 1 ); target.bck( dimension ); code -= 1 << dimension; accumulate(); graycodeBckRecursive( dimension - 1 ); } }
/** * Get the interpolated value at the current position. * * <p> * To visit the pixels that contribute to an interpolated value, we move in * a (binary-reflected) Gray code pattern, such that only one dimension of * the target position is modified per move. * </p> * <p> * See * <a href="http://en.wikipedia.org/wiki/Gray_code">http://en.wikipedia.org/ * wiki/Gray_code</a> * </p> */ @Override public T get() { fillWeights(); accumulator.set( target.get() ); accumulator.mul( weights[ 0 ] ); code = 0; graycodeFwdRecursive( n - 1 ); target.bck( n - 1 ); return accumulator; }
/** * Get the interpolated value at the current position. * * <p> * To visit the pixels that contribute to an interpolated value, we move in * a (binary-reflected) Gray code pattern, such that only one dimension of * the target position is modified per move. * </p> * <p> * See * <a href="http://en.wikipedia.org/wiki/Gray_code">http://en.wikipedia.org/ * wiki/Gray_code</a> * </p> */ @Override public T get() { fillWeights(); accumulator.set( target.get() ); accumulator.mul( weights[ 0 ] ); code = 0; graycodeFwdRecursive( n - 1 ); target.bck( n - 1 ); return accumulator; }