欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 矩形相交面积

矩形相交面积

2024/10/27 21:56:21 来源:https://blog.csdn.net/TangKenny/article/details/143273677  浏览:    关键词:矩形相交面积

题目描述

给出3组点坐标(x,y,w, h),-1000<x,y<1000,w,h为正整数。

·(x,y, w, h)表示平面直角坐标系中的一个矩形:

·x,y为矩形左上角坐标点,w,h向右w,向下h

·(x,y, w, h)表示x轴(x,x+w)和y轴(y, y-h)围成的矩形区域;·(0,0,2,2)表示 x轴(0,2)和y 轴(0,-2)围成的矩形区域,

·(3,5,4,6)表示x轴(3,7)和y轴(5,-1)围成的矩形区域;

求3组坐标构成的矩形区域重合部分的面积。

输入描述

3行输入分别为3个矩形的位置,分别代表“左上角x坐标”,“左上角y坐标”,“矩形宽”,“矩形高”-1000 <= x,y< 1000

输出描述

输出3个矩形相交的面积,不相交的输出0。

示例1

输入

1 6 4 4
3 5 3 4
0 3 7 3

输出

2

题解

求前两个矩形相交的矩形

然后与第三个矩形求相交的矩形

源码 Java

public class IntersectArea {static Input input;static {input = new Input("1 6 4 4\n" +"3 5 3 4\n" +"0 3 7 3");}public static void main(String[] args) {Rectangle r1 = new Rectangle(input.nextLine().split(" "));Rectangle r2 = new Rectangle(input.nextLine().split(" "));Rectangle r3 = new Rectangle(input.nextLine().split(" "));int x1 = Math.max(r1.x1, r2.x1);int y1 = Math.min(r1.y1, r2.y1);int x2 = Math.min(r1.x2, r2.x2);int y2 = Math.max(r1.y2, r2.y2);if (x1 < x2 && y1 > y2) {int intersectX1 = Math.max(x1, r3.x1);int intersectY1 = Math.min(y1, r3.y1);int intersectX2 = Math.min(x2, r3.x2);int intersectY2 = Math.max(y2, r3.y2);if (intersectX1 < intersectX2 && intersectY1 > intersectY2) {System.out.println((intersectX2 - intersectX1) * (intersectY1 - intersectY2));} else {System.out.println("0");}} else {System.out.println(0);}}static class Rectangle{public int x1;public int y1;public int x2;public int y2;public Rectangle(String[] lines) {this.x1 = Integer.parseInt(lines[0]);this.y1 = Integer.parseInt(lines[1]);this.x2 = x1 + Integer.parseInt(lines[2]);this.y2 = y1 - Integer.parseInt(lines[3]);}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com