http://acm.hdu.edu.cn/showproblem.php?pid=2056
计算几何水题,x4>x1&&y4>y1&&x3<x2&&y3<y2是判断两个矩形是否相交的公式(即x轴和y轴同时有交集)。
思路就是找出x轴和y轴相交的部分作长和宽,相乘。
#include <iostream>
#include <iomanip>
using namespace std;
double Min(double a,double b){
if(a<b)return a;
else return b;
}
double Max(double a,double b){
if(a>b)return a;
else return b;
}
int main()
{
double x1,x2,x3,x4;
double y1,y2,y3,y4;
double res;
while(cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4){
if(x1>x2){
swap(x1,x2);
swap(y1,y2);
}
if(y1>y2){
swap(y1,y2);
}
if(x3>x4){
swap(x3,x4);
swap(y3,y4);
}
if(y3>y4){
swap(y3,y4);
}
if(x4>x1&&y4>y1&&x3<x2&&y3<y2){
double width,height;
width=Min(x2,x4)-Max(x1,x3);
height=Min(y2,y4)-Max(y1,y3);
res=width*height;
}
else res=0;
cout<<fixed<<setprecision(2)<<res<<endl;
}
return 0;
}