给定两个直线(给定的直线以四个坐标形式),求他们上下任意移动是否能相交。
inline int check(register int x,register int y)
{
int maxn=(a[x].x1>a[y].x1?a[x].x1:a[y].x1),minn=(a[x].x2<a[y].x2?a[x].x2:a[y].x2);
if(maxn>minn)return 0;//do not banana
float kx=(a[x].y1-a[x].y2)*1.0/(a[x].x1-a[x].x2),ky=(a[y].y1-a[y].y2)*1.0/(a[y].x1-a[y].x2);//x的斜率
if(a[x].x1==a[x].x2)kx=0;//斜率为0,方便运算
if(a[y].x1==a[y].x2)ky=0;
float x1=a[x].y1+kx*(maxn-a[x].x1),x2=a[x].y1+kx*(minn-a[x].x1),y1=a[y].y1+ky*(maxn-a[y].x1),y2=a[y].y1+ky*(minn-a[y].x1);
if((x1<x2?x1:x2)>(y1<y2?y1:y2)||(x1>x2?x1:x2)>(y1>y2?y1:y2))return 1;
return 0;
}