我正在寻找一种方法来找到面积最大的四边形。我已经计算了凸包的点并按顺时针方向对它们进行排序。我尝试过蛮力,但当然它太慢了。所以我在这里找到了最大三角形的算法:
看起来真的很不错,所以我尝试重新制作它。我有一个函数,可以通过将任何四边形划分为两个三角形来计算任何四边形的面积(在这个函数中,我对输入点进行排序,以确保我计算的是直角三角形)。这里是:
int n = convexHull.size();
int A = 0; int B = 1; int C = 2; int D = 3;
int bestA = A; int bestB = B; int bestC = C; int bestD = D;
while(true) { // loop A
while(true) { // loop B
while(true) { // loop C
while(quadrangleArea(A, B, C, D) <= quadrangleArea(A, B, C, (D+1)%n) ) { // loop D
D = (D+1)%n;
}
if(quadrangleArea(A, B, C, D) <= quadrangleArea(A, B, (C+1)%n, …Run Code Online (Sandbox Code Playgroud)