bool judge(Point &a,Point &b,Point &c,Point &d){//判断两线段是否相交 //快速排斥: //以两线段为对角线的矩形如果没有重叠部分,两线段则必不可能相交 if(!(min(a.x,b.x)<=max(c.x,d.x)&&min(c.x,d.x)<=max(a.x,b.x)&&min(a.y,b.y)<=max(c.y,d.y)&&min(c.y,d.y)<=max(a.y,b.y))) return false; //跨立实验 //如果两线段相交,那么ab一定在线段cd的两端,cd一定在ab两端 if(!(cross(a,b,c)*cross(a,b,d)<=eps&&cross(c,d,a)*cross(c,d,b)<=eps)) return false; return true; }