/// <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;
}
}
判断一个点是否在一个区域内
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 今天跟大家分享一个很常见的生活场景,婆媳同住一个屋檐下,对小孩的一个非常非常小的分歧,从中我们可以看到什么? 界限...