2D中如何判斷一點在另乙個點的那個方位

2021-08-24 18:57:02 字數 812 閱讀 9331

在工作中經常遇到判斷乙個點在另乙個點的那個方位的問題,如下圖,這裡需要確定p2在p1的那個方位,也就是求p2相對於p1落在區域1,2,3,4那個中,注意此處p1不是座標原點,座標原點在螢幕的左上角(此處為螢幕座標)。這個問題的解決方法有很多,可以使用向量夾角來做,使用該夾角的方法涉及到向量的乘除,速度上會有影響。此處給出的方法只需判斷點的座標值即可。

具體演算法描述如下:

1.將p1,p2轉換為以p1為座標原點,也即平移座標系。上圖給出的就是轉換後的座標系

2.由上圖可以看出:

區域1中有:|x| > |y|, x >0

區域2中有:|x| < |y|, y < 0

區域3中有:|x| > |y|, x < 0

區域4中有:|x| < |y|, y > 0

**如下:

bool getdirect( point p1, point p2, int& nregion) // 將p2轉換為以p1為座標中心的座標系中 p2.x -= p1.x; p2.y -= p1.y; if (abs(p2.x) > abs(p2.y) && p2.x > 0) else if (abs(p2.x) > abs(p2.y) && p2.x < 0) else if (abs(p2.x) < abs(p2.y) && p2.y < 0) else if (abs(p2.x) < abs(p2.y) && p2.y > 0) return true; }

總結:通過該方法可以判斷其它區域的情況,只需將判斷條件修改一下即可

2D中如何判斷一點在另乙個點的那個方位

在工作中經常遇到判斷乙個點在另乙個點的那個方位的問題,如下圖,這裡需要確定p2在p1的那個方位,也就是求p2相對於p1落在區域1,2,3,4那個中,注意此處p1不是座標原點,座標原點在螢幕的左上角 此處為螢幕座標 這個問題的解決方法有很多,可以使用向量夾角來做,使用該夾角的方法涉及到向量的乘除,速度...

python乙個點繞另乙個點旋轉後的座標

x,y 為要轉的點,pointx,pointy 為中心點,如果順時針角度為angle srx x pointx cos angle y pointy sin angle pointx sry y pointy cos angle x pointx sin angle pointy x,y 為要轉的點...

判斷乙個點是否在RotatedRect中

opencv函式pointpolygontest c double pointpolygontest inputarray contour,point2f pt,bool measuredist 用於判斷乙個點是否在輪廓中 當measuredist設定為true時,若返回值為正,表示點在輪廓內部,返...