判斷一個點與直線的相對位置

定義:平面上的三點P1(x1,y1),P2(x2,y2),P3(x3,y3)
S(P1,P2,P3)= (x1-x3)* (y2-y3) - (y1-y3)*(x2-x3)
令矢量的起點爲A,終點爲B,判斷的點爲C,
如果S(A,B,C)爲正數,則C在矢量AB的左側;
如果S(A,B,C)爲負數,則C在矢量AB的右側;
如果S(A,B,C)爲 0,則C在直線AB上。

double s(P A,P B,P C){
    return (A.x-C.x)*(B.y-C.y)-(A.y-C.y)*(B.x-C.x);
}
void check(int a,int b){
    for(int i=1;i<=m;i++){
        if(s(A[a],A[b],B[i])>0)...
        else if(s(A[a],A[b],B[i])<0)...
        else ...
    }
}
發佈了95 篇原創文章 · 獲贊 183 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章