二维平面上点与线段关系的判定

二维平面上点与线段关系的判定

     问题的基本模型是:已知平面上一线段AB,判定平面上一点C相对于AB的位置(C不和AB共线)。

通过向量叉积来判定线段与点的的位置关系。

                        

   例题:Toys (http://poj.org/problem?id=2318)

//判断点于线段的位置关系 #include #include #include # define N 5010 using namespace std; typedef struct Node { int x,y; }Point; Point up[N],dw[N]; int ans[N],cnt; int cross(Point a,Point b,Point o) { return (a.x-o.x)*(b.y-o.y)-(b.x-o.x)*(a.y-o.y); } int find(Point t) { for(int i=0;i0 && cross(t,up[i+1],dw[i+1])<0) return i; } int main() { int n,m,x1,y1,x2,y2; while(scanf("%d",&n),n) { scanf("%d%d%d%d%d",&m,&x1,&y1,&x2,&y2); cnt=0; up[cnt].x=x1;up[cnt].y=y1; dw[cnt].x=x1;dw[cnt++].y=y2; for(int i=0;i

你可能感兴趣的:(计算几何)