首先你得知道叉积
const int N=10010;
struct node{
double x,y;
};
struct line{
node p1,p2;
}sa[N];int st=1,ed=0;
double muilt(node p1,node p2,node p0)
{
double x1=p1.x-p0.x,y1=p1.y-p0.y;
double x2=p2.x-p0.x,y2=p2.y-p0.y;
return x1*y2-x2*y1;
}
int n;
bool check(line l1,line l2)
{
if(muilt(l2.p1,l1.p2,l1.p1)*muilt(l1.p2,l2.p2,l1.p1)>0&&muilt(l1.p1,l2.p2,l2.p1)*muilt(l2.p2,l1.p2,l2.p1)>0) return true;
if(muilt(l1.p1,l2.p1,l2.p2)==0&&min(l2.p1.x,l2.p2.x)<=l1.p1.x&&max(l2.p1.x,l2.p2.x)>=l1.p1.x) return true;
if(muilt(l1.p1,l1.p2,l2.p1)==0&&min(l1.p1.x,l1.p2.x)<=l2.p1.x&&max(l1.p1.x,l1.p2.x)>=l2.p1.x) return true;
if(muilt(l1.p1,l1.p2,l2.p2)==0&&min(l1.p1.x,l1.p2.x)<=l2.p2.x&&max(l1.p1.x,l1.p2.x)>=l2.p2.x) return true;
if(muilt(l1.p2,l2.p1,l2.p2)==0&&min(l2.p1.x,l2.p2.x)<=l1.p2.x&&max(l2.p1.x,l2.p2.x)>=l1.p2.x) return true;
return false;
}