public static void main(String[] args) {
        GrahamScanConvexHull grahamScanConvexHull = new GrahamScanConvexHull();
        //int[][] input = new int[][]{{0,0},{0,1},{0,2},{1,2},{2,2},{3,2},{3,1},{3,0},{2,0},{1,0},{1,1},{4,3}};
        int[][] input = new int[][] {{1,1},{2,2},{2,0},{2,4},{3,3},{4,2}};
        Point[] points = new Point[input.length];
        int index = 0;
        for (int[] i : input) {
            points[index++] = new Point(i[0], i[1]);
        }
        System.out.println(grahamScanConvexHull.findConvexHull(points));
    }
Cross product to find where c belongs in reference to vector ab.
If result > 0 it means 'c' is on left of ab
   result == 0 it means 'a','b' and 'c' are collinear
   result < 0  it means 'c' is on right of ab
src/com/interview/geometry/GrahamScanConvexHull.java