Я работаю над проблемой ConvexHull, и мне нужно определить вершины выпуклой оболочки. Я использую Apache commons-math - ConvexHull2D. Вот что у меня есть до сих пор
public static void main(String[] args) {
Vector2D v1 = new Vector2D(1, 3);
Vector2D v2 = new Vector2D(-1, 3);
Vector2D v3 = new Vector2D(0, -2);
Vector2D v4 = new Vector2D(-1, -3);
Vector2D v5 = new Vector2D(-12, -13);
Vector2D v6 = new Vector2D(-10, -30);
Vector2D[] vertices = {v1,v2,v3,v4,v5,v6};
double tolerance = 1;
ConvexHull2D ch = new ConvexHull2D(vertices, tolerance);
vertices =ch.getVertices();
System.out.println(vertices);
}
Но с этим кодом я вижу это исключение
Exception in thread "main" org.apache.commons.math3.exception.MathIllegalArgumentException: vertices do not form a convex hull in CCW winding
at org.apache.commons.math3.geometry.euclidean.twod.hull.ConvexHull2D.<init>(ConvexHull2D.java:69)
at run_ootb_templates.LongitudeLatitudeTest.main(LongitudeLatitudeTest.java:22)
Я понимаю выпуклый корпус: любые 3 точки в пространстве способен образовывать выпуклый корпус, и любая дополнительная точка, кроме этих трех, может быть размещена на этой границе выпуклой оболочки.
Любая помощь в разрешении приветствуется, а также любые образцы наборов данных, чтобы я мог это понять