Как получить максимальную площадь к-гона?
Я пытаюсь получить максимальную площадь четырехугольника в выпуклой оболочке. Я использую способ из бумаги, но что-то не так. Этот код ALGOL-60
Я не уверен, что цикл пока и повторять средства.
Это мой код Java:
private static Quad getQua(Point[] z) {
Point A = z[0], B = z[1], C = z[2], D = z[3];
int a = 0, b = 1, c = 2, d = 3;
int n = z.length;
while (true) {
while (true) {
while (true) {
while (Area(z[a], z[b], z[c], z[d]) <= Area(z[a], z[b], z[c], z[(d + 1) % n])) {
d = (d + 1) % n;
}
if (Area(z[a], z[b], z[c], z[d]) > Area(z[a], z[b], z[(c + 1) % n], z[d])) {
break;
}
c = (c + 1) % n;
}
if (Area(z[a], z[b], z[c], z[d]) > Area(z[a], z[(b + 1) % n], z[c], z[d])) {
break;
}
b = (b + 1) % n;
}
if (Area(z[a], z[b], z[c], z[d]) > Area(A, B, C, D)) {
A = z[a];B = z[b];C = z[c];D = z[d];
}
a = (a + 1) % n;
if (a == b) {
b = (b + 1) % n;
}
if (b == c) {
c = (c + 1) % n;
}
if (c == d) {
d = (d + 1) % n;
}
if (a == 0) {
break;
}
}
Quad q=new Quad(A, B, C, D);
L.d(q.area+" ");
return q;
}