private static boolean intersectProp(int[] verts, int a, int b, int c, int d) {
        // Eliminate improper cases.
        if (collinear(verts, a, b, c) || collinear(verts, a, b, d) || collinear(verts, c, d, a)
                || collinear(verts, c, d, b))
            return false;

        return (left(verts, a, b, c) ^ left(verts, a, b, d)) && (left(verts, c, d, a) ^ left(verts, c, d, b));
    }
private static boolean intersectProp ( int [ ] verts , int a , int b , int c , int d ) { if ( collinear ( verts , a , b , c ) || collinear ( verts , a , b , d ) || collinear ( verts , c , d , a ) || collinear ( verts , c , d , b ) ) return false ; return ( left ( verts , a , b , c ) ^ left ( verts , a , b , d ) ) && ( left ( verts , c , d , a ) ^ left ( verts , c , d , b ) ) ; }
intersection is ensured by using strict leftness.