Rectangles
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13374 Accepted Submission(s): 4313
Problem Description
Given two rectangles and the coordinates of two points on the diagonals of each rectangle,you have to calculate the area of the intersected part of two rectangles. its sides are parallel to OX and OY .
Input
Input The first line of input is 8 positive numbers which indicate the coordinates of four points that must be on each diagonal.The 8 numbers are x1,y1,x2,y2,x3,y3,x4,y4.That means the two points on the first rectangle are(x1,y1),(x2,y2);the other two points on the second rectangle are (x3,y3),(x4,y4).
Output
Output For each case output the area of their intersected part in a single line.accurate up to 2 decimal places.
Sample Input
1.00 1.00 3.00 3.00 2.00 2.00 4.00 4.00 5.00 5.00 13.00 13.00 4.00 4.00 12.50 12.50
Sample Output
1.00 56.25
题目的意思就是给你4个坐标点,4个坐标分别是两个矩形的对角线,叫你求两个矩形之间重合的部分,思路是初始化点保证点的顺序为A1,A3,A2,A4,然后你需要判断
这两个矩形是否有重合矩形如果不存在sum=0;否则在求这个图形的对角线的两个坐标;
代码如下:
这两个矩形是否有重合矩形如果不存在sum=0;否则在求这个图形的对角线的两个坐标;
代码如下:
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
double x1,x2,x3,x4,y1,y2,y3,y4;
double a,b,c,d;
while(cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4)
{
double sum=0;
if(x1>x2)swap(x1,x2);
if(y1>y2)swap(y1,y2);
if(x3>x4)swap(x3,x4);
if(y3>y4)swap(y3,y4);
if(x2<=x3||x1>=x4||y1>=y4||y3>=y2)sum=0;//不存在重合图形
else
{
a=(x1>x3)?x1:x3;//重合图形对角线的x1
b=(y1>y3)?y1:y3;// y1
c=(x2>x4)?x4:x2;//x2
d=(y2>y4)?y4:y2;//y2
sum=(c-a)*(d-b);
}
printf("%.2lf\n",sum);
}
}