給定兩矩形的對角線端點座標,求相交面積。多組輸入,輸出保留兩位小數。
對每個矩形,分別求出 x 的最小/最大值、y 的最小/最大值,得到標準化的 [xmin, xmax] × [ymin, ymax]。
相交區間:x_overlap = [max(xmin1, xmin2), min(xmax1, xmax2)],同理 y。
若 x_overlap_min > x_overlap_max 或 y 同理,則不相交,面積 0。
否則面積 = (x_overlap_max - x_overlap_min) * (y_overlap_max - y_overlap_min)。
#include <bits/stdc++.h>
using namespace std;
int main() {
double x1,y1,x2,y2,x3,y3,x4,y4;
while (cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4) {
double xa1 = min(x1,x2), xa2 = max(x1,x2);
double ya1 = min(y1,y2), ya2 = max(y1,y2);
double xb1 = min(x3,x4), xb2 = max(x3,x4);
double yb1 = min(y3,y4), yb2 = max(y3,y4);
double xl = max(xa1, xb1), xr = min(xa2, xb2);
double yl = max(ya1, yb1), yr = min(ya2, yb2);
double area = 0;
if (xl < xr && yl < yr) area = (xr - xl) * (yr - yl);
printf("%.2f\n", area);
}
return 0;
}