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.
##
题目意思就是输入两个矩形的一对对角的顶点坐标,根据这四个坐标求两个矩形的交叉面积。
首先要考虑到这两个矩形是否交叉,判断之后有的话才能进行进一步的计算。而输入时先输入第一个的数据,再输第二个的,需要自己动手考虑到它们之间所有可能的相对位置,很容易漏掉,所以最好亲手画一下图,然后总结计算方式。
#include
double max(double x,double y)
{
return (x>y)?x:y;
}
double min(double x,double y)
{
return (xarea,a,b;
int flag=0;
while (scanf ("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF)
{
if (min(x1,x2)>=max(x3,x4)||min(y1,y2)>=max(y3,y4)
||max(x1,x2)<=min(x3,x4)||max(y1,y2)<=min(y3,y4))
printf ("0.00\n");
else
{
a=min(max(x3,x4),max(x1,x2))-max(min(x3,x4),min(x1,x2));
b=min(max(y3,y4),max(y1,y2))-max(min(y3,y4),min(y1,y2));
area=a*b;
if (area<0)
area=(-1)*area;
printf ("%.2lf\n",area);
}
}
return 0;
}