makeClockwise static method
Implementation
static void makeClockwise(Float32List polygon) {
final Float32List vertices = polygon;
final int verticeslength = polygon.length;
double area = vertices[verticeslength - 2] * vertices[1] -
vertices[0] * vertices[verticeslength - 1],
p1x = 0.0,
p1y = 0.0,
p2x = 0.0,
p2y = 0.0;
final int n = verticeslength - 3;
for (int i = 0; i < n; i += 2) {
p1x = vertices[i];
p1y = vertices[i + 1];
p2x = vertices[i + 2];
p2y = vertices[i + 3];
area += p1x * p2y - p2x * p1y;
}
if (area < 0) return;
final int lastX = verticeslength - 2, nn = verticeslength >> 1;
for (int i = 0; i < nn; i += 2) {
final double x = vertices[i], y = vertices[i + 1];
final int other = lastX - i;
vertices[i] = vertices[other];
vertices[i + 1] = vertices[other + 1];
vertices[other] = x;
vertices[other + 1] = y;
}
}