判断线段是否相交

Posted qq-1585047819

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断线段是否相交相关的知识,希望对你有一定的参考价值。

struct Point{
    int x1,y1,x2,y2;
}A[20];
int arr[20];

struct Node{
    int x,y;
};
bool judge(Point p1,Point p2){   //相交最基本的条件
    if(max(p1.x1,p1.x2)<min(p2.x1,p2.x2)||max(p1.y1,p1.y2)<min(p2.y1,p2.y2)||min(p1.x1,p1.x2)>max(p2.x1,p2.x2)||min(p1.y1,p1.y2)>max(p2.y1,p2.y2))
        return false;
    return true;
}

int cultilate(Point p1,Point p2){      //判断是不是在异侧,或有个点在另外一个点另外一条直线上
    Node AB,AC,AD,CD,CB,CA;
    AB.x=p1.x2-p1.x1,AB.y=p1.y2-p1.y1;
    AC.x=p2.x1-p1.x1,AC.y=p2.y1-p1.y1;
    AD.x=p2.x2-p1.x1,AD.y=p2.y2-p1.y1;
    CD.x=p2.x2-p2.x1,CD.y=p2.y2-p2.y1;
    CB.x=p1.x2-p2.x1,CB.y=p1.y2-p2.y1;
    CA.x=p1.x1-p2.x1,CA.y=p1.y1-p2.y1;  
    if((AB.x*AC.y-AB.y*AC.x)*(AB.x*AD.y-AB.y*AD.x)<=0&&(CD.x*CB.y-CD.y*CB.x)*(CD.x*CA.y-CD.y*CA.x)<=0)
        return 1;
    return 0;
}

以上是关于判断线段是否相交的主要内容,如果未能解决你的问题,请参考以下文章

平面中判断线段与矩形是否相交

poj1410(判断线段和矩形是否相交)

POJ 1127 Jack Straws ( 求直线交点, 判断线段是否相交(含端点) )

判断2个线段是否相交

[poj] 3304 Segments || 判断线段相交

POJ 3304 Segments(判断直线与线段是否相交)