|
@@ -180,6 +180,9 @@ class Triangulator {
|
|
if (polygon.size > 0) {
|
|
if (polygon.size > 0) {
|
|
convexPolygons.add(polygon);
|
|
convexPolygons.add(polygon);
|
|
convexPolygonsIndices.add(polygonIndices);
|
|
convexPolygonsIndices.add(polygonIndices);
|
|
|
|
+ } else {
|
|
|
|
+ polygonPool.free(polygon);
|
|
|
|
+ polygonIndicesPool.free(polygonIndices);
|
|
}
|
|
}
|
|
polygon = polygonPool.obtain();
|
|
polygon = polygonPool.obtain();
|
|
polygon.clear();
|
|
polygon.clear();
|
|
@@ -255,6 +258,8 @@ class Triangulator {
|
|
if (polygon.size == 0) {
|
|
if (polygon.size == 0) {
|
|
convexPolygons.removeIndex(i);
|
|
convexPolygons.removeIndex(i);
|
|
polygonPool.free(polygon);
|
|
polygonPool.free(polygon);
|
|
|
|
+ polygonIndices = convexPolygonsIndices.removeIndex(i);
|
|
|
|
+ polygonIndicesPool.free(polygonIndices);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -277,21 +282,4 @@ class Triangulator {
|
|
float px = p2x - p1x, py = p2y - p1y;
|
|
float px = p2x - p1x, py = p2y - p1y;
|
|
return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1;
|
|
return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1;
|
|
}
|
|
}
|
|
-
|
|
|
|
- public static void main (String[] args) {
|
|
|
|
- Triangulator triangulator = new Triangulator();
|
|
|
|
- FloatArray polygon = new FloatArray();
|
|
|
|
- polygon.addAll(411, 219, 199, 230, 161, 362, 534, 407, 346, 305, 596, 265);
|
|
|
|
- ShortArray triangles = triangulator.triangulate(polygon);
|
|
|
|
- System.out.println(triangles);
|
|
|
|
- for (short i: triangles.items) System.out.print((i + 1) + ", ");
|
|
|
|
- System.out.println();
|
|
|
|
-
|
|
|
|
- Array<FloatArray> polys = triangulator.decompose(polygon, triangles);
|
|
|
|
- System.out.println(polys);
|
|
|
|
-
|
|
|
|
- FloatArray poly2 = new FloatArray(new float[] {0, 0, 100, 0, 100, 100, 0, 100 });
|
|
|
|
- SkeletonClipping.makeClockwise(poly2);
|
|
|
|
- System.out.println(poly2);
|
|
|
|
- }
|
|
|
|
}
|
|
}
|