叉乘法判断
ab×ap, bc×bp, ca×cp的叉乘结果均>=0的话(=0时,p在三角形某条边上),p在三角形内;否则在三角形外
//点是否在三角形内 public static bool IsPointInTriangle(Vector2 p, Vector2 a, Vector2 b, Vector2 c) { var ab = b - a; var ap = p - a; if (V2Cross(ref ab, ref ap) < 0) return false; var bc = c - b; var bp = p - b; if (V2Cross(ref bc, ref bp) < 0) return false; var ca = a - c; var cp = p - c; if (V2Cross(ref ca, ref cp) < 0) return false; return true; } public static float V2Cross(ref Vector2 a, ref Vector2 b) { float result = a.x * b.y - a.y * b.x; return result; }
投影法判断(待写)
参考
【数学基础】玩法常用几何计算汇总 - 知乎 (zhihu.com)