private static Turn getTurn(VoronoiPoint a, VoronoiPoint b, VoronoiPoint c) {

        // use longs to guard against int-over/underflow
        double crossProduct = ((b.x - a.x) * (c.y - a.y)) -
                            ((b.y - a.y) * (c.x - a.x));

        if(crossProduct > 0) {
            return Turn.COUNTER_CLOCKWISE;
        }
        else if(crossProduct < 0) {
            return Turn.CLOCKWISE;
        }
        else {
            return Turn.COLLINEAR;
        }
    }
Returns the GrahamScan#Turn formed by traversing through the
ordered points <code>a</code>, <code>b</code> and <code>c</code>.
More specifically, the cross product <tt>C</tt> between the
3 points (vectors) is calculated:

<tt>(b.x-a.x * c.y-a.y) - (b.y-a.y * c.x-a.x)</tt>

and if <tt>C</tt> is less than 0, the turn is CLOCKWISE, if
<tt>C</tt> is more than 0, the turn is COUNTER_CLOCKWISE, else
the three points are COLLINEAR.

@param a the starting point.
@param b the second point.
@param c the end point.
@return the GrahamScan#Turn formed by traversing through the
        ordered points <code>a</code>, <code>b</code> and
        <code>c</code>.
vorolay/src/main/java/quatja/com/vorolay/GrahamScan.java