点是否在三角形内

发布时间 2023-11-04 01:09:17作者: yanghui01

叉乘法判断

  

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)