private int segdir(double xend, double yend, int[] ij) {
        if (YMATCH(yend, y[ij[1]])) {
            if (ij[1] == 0) {
                return 0;
            }
            ij[1] -= 1;
            return 3;
        }

        if (XMATCH(xend, x[ij[0]])) {
            if (ij[0] == 0) {
                return 0;
            }
            ij[0] -= 1;
            return 4;
        }

        if (YMATCH(yend, y[ij[1] + 1])) {
            if (ij[1] >= y.length - 1) {
                return 0;
            }
            ij[1] += 1;
            return 1;
        }

        if (XMATCH(xend, x[ij[0] + 1])) {
            if (ij[0] >= x.length - 1) {
                return 0;
            }
            ij[0] += 1;
            return 2;
        }

        return 0;
    }
private int segdir ( double xend , double yend , int [ ] ij ) { if ( YMATCH ( yend , y [ ij [ 1 ] ] ) ) { if ( ij [ 1 ] == 0 ) { return 0 ; } ij [ 1 ] -= 1 ; return 3 ; } if ( XMATCH ( xend , x [ ij [ 0 ] ] ) ) { if ( ij [ 0 ] == 0 ) { return 0 ; } ij [ 0 ] -= 1 ; return 4 ; } if ( YMATCH ( yend , y [ ij [ 1 ] + 1 ] ) ) { if ( ij [ 1 ] >= y . length - 1 ) { return 0 ; } ij [ 1 ] += 1 ; return 1 ; } if ( XMATCH ( xend , x [ ij [ 0 ] + 1 ] ) ) { if ( ij [ 0 ] >= x . length - 1 ) { return 0 ; } ij [ 0 ] += 1 ; return 2 ; } return 0 ; }
Determine the entry direction to the next cell  and update the cell
indices.