将长宽,其实可以分为两组数据的乘积
如果两组矩形是有交积的话一下这种情况的(从特殊到一般)长的左点是一定是max(min(x1,x2),min(x3,x4)).
至于为什么是max值因为你如果是min值。那么你的左点就不是相交的那个点了。
至于长的右点
高的上点与下点都是同理。
写的比较模糊。可能是自己也没完全搞懂吧
一
#include <iostream>
#include <iomanip>
using namespace std;
double max(double x1,double x2)
{
return x1>x2?x1:x2;
}
double min (double y1,double y2)
{
return y1<y2?y1:y2;
}
int main ()
{
double x1,y1,x2,y2;
double x3,y3,x4,y4;
cin>>x1>>y1>>x2>>y2;
cin>>x3>>y3>>x4>>y4;
double right,left,up,down;
left=max(min(x1,x2),min(x3,x4));
right=min(max(x1,x2),max(x3,x4));
down=max(min(y1,y2),min(y3,y4));
up=min(max(y3,y4),max(y1,y2));
if(max(x1,x2)<min(x3,x4)||max(y1,y2)<min(y3,y4)||max(x3,x4)<min(x1,x2)||max(y3,y4)<min(y1,y2))
{
cout<<"0.00"<<endl;
}
else
{
cout<<fixed<<setprecision(2)<<(double)(right-left)*(up-down)<<endl;
}
}