需要判斷出四條之間組成的矩形的范圍,其中矩形的邊緣可能是傾斜不平行於x或者y軸。
考慮和很久,參考博客http://blog.csdn.net/dapengbusi/article/details/50516126。
好像是個常規題此處來個表情:
只需要判斷該點是否在上下兩條邊和左右兩條邊之間就行,判斷一個點是否在兩條線段之間夾着,就轉化成,判斷一個點是否在某條線段的一邊上,就可以利用叉乘的方向性,來判斷夾角是否超過了180度 如下圖:
只要判斷(p1 p2 X p1 p ) * (p3 p4 X p3 p1) >= 0 就說明p在p1p2,p3p4中間夾着,同理計算另兩邊就可以了
核心代碼:
// 計算 |p1 p2| X |p1 p| float GetCross(Point p1, Point p2,Point p) { return (p2.x - p1.x) * (p.y - p1.y) -(p.x - p1.x) * (p2.y - p1.y); }