static boolean snip(List<Point2d> contour, int u, int v, int w, int n,
int[] V) {
int p;
double Ax, Ay, Bx, By, Cx, Cy, Px, Py;
Ax = contour.get(V[u]).x;
Ay = contour.get(V[u]).y;
Bx = contour.get(V[v]).x;
By = contour.get(V[v]).y;
Cx = contour.get(V[w]).x;
Cy = contour.get(V[w]).y;
if (EPSILON > (Bx - Ax) * (Cy - Ay) - (By - Ay) * (Cx - Ax)) {
return false;
}
for (p = 0; p < n; p++) {
if (p == u || p == v || p == w) {
continue;
}
Px = contour.get(V[p]).x;
Py = contour.get(V[p]).y;
if (insideTriangle(Ax, Ay, Bx, By, Cx, Cy, Px, Py)) {
return false;
}
}
return true;
}