题
平面上有个两个矩形R1和R2,它们各边都与坐标轴平行。设(x1,y)和
(x2,y2)依次是R1的左下角和右上角坐标,(x3,y3)和(x4,y4)依次是R2的左下
角和右上角坐标,请你计算R1和R2的总面积是多少?
注意:如果R,和R2有重叠区域,重叠区域的面积只计算一次。
输入格式:包含八个数:x1,y1,x2,y2,x3,y3,x4,y4
输出格式:一个整数
例如:输入:2 1 7 4 5 3 8 6
输出:22
public class RectangleAreaCalculator {
public static void main(String[] args) {
// 示例坐标
double x1 = 0, y1 = 0;
double x2 = 4, y2 = 3;
double x3 = 2, y3 = 1;
double x4 = 6, y4 = 4;
double totalArea = calculateTotalArea(x1, y1, x2, y2, x3, y3, x4, y4);
System.out.println("Total Area: " + totalArea);
}
public static double calculateTotalArea(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) {
// 计算两个矩形的面积
double areaR1 = Math.abs(x2 - x1) * Math.abs(y2 - y1);
double areaR2 = Math.abs(x4 - x3) * Math.abs(y4 - y3);
// 检查重叠并计算重叠面积
double overlapWidth = Math.min(Math.max(x1, x3) - Math.min(x2, x4), 0) - Math.min(0, Math.max(x1, x3) - Math.min(x2, x4));
double overlapHeight = Math.min(Math.max(y1, y3) - Math.min(y2, y4), 0) - Math.min(0, Math.max(y1, y3) - Math.min(y2, y4));
double overlapArea = Math.max(overlapWidth, 0) * Math.max(overlapHeight, 0);
// 计算总面积
return areaR1 + areaR2 - overlapArea;
}
}