@Override public boolean contains( final double[] position ) { validate(); final int index = findStripeIndex( position[ 1 ] ); if ( index == -1 ) return false; final Stripe stripe = stripes.get( index ); final double y0 = stripe.yMin; final double y1 = stripe.yMax; if ( y1 < position[ 1 ] ) return false; boolean is_inside = false; for ( int i = 0; i < stripe.xTop.size(); i++ ) { final double x0 = stripe.xTop.get( i ); final double x1 = stripe.xBottom.get( i ); final double x = x0 + ( position[ 1 ] - y0 ) * ( x1 - x0 ) / ( y1 - y0 ); if ( x == position[ 0 ] ) return true; if ( x > position[ 0 ] ) break; is_inside = !is_inside; } return is_inside; }
index = findStripeIndex( y ); if ( index == -1 )
y1 = temp; int index = findStripeIndex( y0 ); if ( y0 == y1 )