Jarvis { @Deprecated public static List<Point> convexHull(List<Point> points) { int[] xs = new int[points.size()]; int[] ys = new int[xs.length]; for (int i = 0; i < xs.length; i++) { Point p = points.get(i); xs[i] = p.getX(); ys[i] = p.getY(); } SimplePolygon poly = convexHull(xs, ys); if (poly == null) { return null; } return poly.toRuneLitePointList(); }  @Deprecated static List<Point> convexHull(List<Point> points); static SimplePolygon convexHull(int[] xs, int[] ys);  }
@Test public void test() { Point[] points = { new Point(0, 3), new Point(1, 1), new Point(2, 2), new Point(4, 4), new Point(0, 0), new Point(1, 2), new Point(3, 1), new Point(3, 3) }; List<Point> result = Jarvis.convexHull(Arrays.asList(points)); Assert.assertEquals(4, result.size()); Assert.assertEquals(new Point(0, 0), result.get(0)); Assert.assertEquals(new Point(0, 3), result.get(1)); Assert.assertEquals(new Point(4, 4), result.get(2)); Assert.assertEquals(new Point(3, 1), result.get(3)); }
@Test public void test2() { Point[] points = { new Point(0, 3), new Point(4, 2), new Point(3, 5), new Point(5, 3), new Point(3, 0), new Point(1, 1), new Point(1, 2), new Point(2, 2) }; List<Point> result = Jarvis.convexHull(Arrays.asList(points)); Assert.assertEquals(5, result.size()); Assert.assertEquals(new Point(0, 3), result.get(0)); Assert.assertEquals(new Point(3, 5), result.get(1)); Assert.assertEquals(new Point(5, 3), result.get(2)); Assert.assertEquals(new Point(3, 0), result.get(3)); Assert.assertEquals(new Point(1, 1), result.get(4)); }
@Test public void testCollinear() { Point[] points = new Point[] { new Point(604, 76), new Point(609, 81), new Point(606, 78), new Point(602, 74), new Point(610, 74), new Point(609, 77), new Point(602, 72), new Point(606, 77), new Point(611, 77), new Point(607, 72), new Point(616, 74), new Point(611, 70), new Point(611, 71), new Point(610, 73), new Point(614, 82), new Point(615, 79), new Point(615, 77), new Point(615, 76), new Point(634, 71), new Point(604, 76) }; Jarvis.convexHull(Arrays.asList(points)); }