美文网首页unity
判断一个点是否在一个区域内

判断一个点是否在一个区域内

作者: 木心Sepith | 来源:发表于2018-03-24 11:18 被阅读16次
    
    /// <summary>
    /// 判断一个点是否在一个区域内
    /// </summary>
    public class PolyUtil
    {
        //notice, in the case of point[0] == point[1] == point[2] == point[3]
        //this function return false positive...
        public static bool Contains(Vector3[] point, Vector3 p)
        {
            var dp0 = p - point[0];
            var dp1 = p - point[1];
            var dp2 = p - point[2];
            var dp3 = p - point[3];
    
            var cdp01 = Vector3.Cross(dp0, dp1);
            var cdp12 = Vector3.Cross(dp1, dp2);
            var cdp23 = Vector3.Cross(dp2, dp3);
            var cdp30 = Vector3.Cross(dp3, dp0);
    
            return Vector3.Dot(cdp01, cdp12) >= 0 &&
                   Vector3.Dot(cdp12, cdp23) >= 0 &&
                   Vector3.Dot(cdp23, cdp30) >= 0;
    
        }
    }
    
    

    相关文章

      网友评论

        本文标题:判断一个点是否在一个区域内

        本文链接:https://www.haomeiwen.com/subject/jslqcftx.html