如何获得k-gon的最大面积?

时间:2016-07-18 12:39:26

标签: algorithm graphics algol

我试图将四边形的最大面积嵌入凸壳中。 我用纸的方式,但出了点问题。这段代码是ALGOL-60,我不确定循环,而重复意味着。

on a general method for maximizing and minimizing among certain geometric problems

这是我的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;
}

0 个答案:

没有答案