计算两个矩形的交叉面积 - Java实现
计算两个矩形的交叉面积 (Java实现)
本文提供一个Java程序,计算平面上两个平行于坐标轴的矩形的交叉面积。
问题描述
给定两个矩形,它们的边平行于直角坐标系的 X 轴或 Y 轴。每个矩形由其一对相对顶点的坐标确定。要求计算这两个矩形的交叉面积。
输入格式
输入包含两行,每行描述一个矩形。 每行包含四个以空格分隔的实数,表示矩形一对相对顶点的坐标 (x1, y1) 和 (x2, y2),其中 -10^7 <= x1, y1, x2, y2 <= 10^7。
输出格式
输出一个实数,表示两个矩形的交叉面积,保留两位小数。
样例
输入:
1 1 3 3
2 2 4 4
输出:
1.00
Java代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取第一个矩形的坐标
double x1 = scanner.nextDouble();
double y1 = scanner.nextDouble();
double x2 = scanner.nextDouble();
double y2 = scanner.nextDouble();
// 读取第二个矩形的坐标
double x3 = scanner.nextDouble();
double y3 = scanner.nextDouble();
double x4 = scanner.nextDouble();
double y4 = scanner.nextDouble();
// 计算交叉面积
double overlapArea = calculateOverlapArea(x1, y1, x2, y2, x3, y3, x4, y4);
// 输出结果
System.out.printf('%.2f', overlapArea);
scanner.close();
}
public static double calculateOverlapArea(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) {
double overlapWidth = Math.min(x2, x4) - Math.max(x1, x3);
double overlapHeight = Math.min(y2, y4) - Math.max(y1, y3);
// 相交矩形的宽度和高度必须大于0才存在交叉面积,否则交叉面积为0
if (overlapWidth <= 0 || overlapHeight <= 0) {
return 0.0;
}
return overlapWidth * overlapHeight;
}
}
解释
- 程序首先从标准输入读取两个矩形的坐标信息。
calculateOverlapArea函数计算两个矩形的交叉面积。- 它首先计算交叉矩形的宽度和高度。
- 如果宽度或高度小于等于0,则说明两个矩形没有交叉,返回0.0。
- 否则,返回宽度和高度的乘积作为交叉面积。
- 主函数调用
calculateOverlapArea函数计算交叉面积,并将结果保留两位小数输出到标准输出。
总结
本文介绍了一种使用 Java 计算两个平行于坐标轴的矩形交叉面积的方法,并提供了完整的代码实现。该算法简单易懂,可以方便地应用于实际问题中。
原文地址: https://www.cveoy.top/t/topic/cry8 著作权归作者所有。请勿转载和采集!