不在两侧时
在两侧时
//点是否在线段两侧 public static bool IsPointSideOfLine(Vector2 p, Vector2 a, Vector2 b) { var ap = p - a; var ab = b - a; if (Vector2.Dot(ap, ab) < 0) //夹角为钝角, 大于90度时, cos值<0 return true; var ba = -ab; var bp = p - b; if (Vector2.Dot(ba, bp) < 0) return true; return false; }
注意:点乘不区分向量的先后关系,因为cos(60)和cos(-60)结果一样,cos(120)和cos(-120)结果也一样。所以,向量间顺时针还是逆时针无区别。
参考