这是地平线一面的一道测试题,emmm,自己发散思维确实不敢恭维。
1,叉乘判别法(适用于凸多边形)
想象一个凸多边形,其每一条边都将整个2D屏幕划分为左右两边,连接每一边的第一个端点要和测试的点得到一个矢量V,将两个2维矢量扩展成3维,判断结果3维矢量中Z分量的符号是否发生变化,进而推导出是否处于凸多边形内外。
2,面积判别法(只适用于凸多边形)
第四点分别与三角形的两个点组成的面积分别设为S1,S2,S3,只要S1+S2+S3>原来的三角形面积就不在三角形范围中,可以使用海伦公式
3,角度和判别法
4,水平/垂直交叉点数判别法(适用于任意多边形)
如果从P作水平向左的射线的话,如果P在多边形内部,那么这条射线与多边形的交点必定分为奇数,如果P在多边形外部,则交点必定为偶数,所以我们可以顺序考虑多边形的每条边,求出交点的总个数,假如考虑边(p1,p2),
参考:https://blog.youkuaiyun.com/huixingshao/article/details/40859171