纠结了这个一段时间,在这里写下理解,首先这个应该明确各个参数意义
z=1这个的意义是先限制三个顶点跟p点一个平面
这里先让v[i]为ABC三个点
在这里我们把ABC还有原点连起来,形成一个锥体
因为叉乘是算出两向量组成平面的垂直向量。点跟向量叉乘可以把点理解成原点O跟这个点形成的向量跟另一个向量组成的平面的垂直向量。
那么很明显了,只要把点限制在这个锥体内,且z相同,即在三角形里面。
而限制在这个锥体的方法就是通过判断点在锥体表面的左边还是右边,因为锥体有四个面,其中z已经=1,所以这里
只需要判断OP跟OA是否在BOC的同一边,且OP跟OB是否在AOC的同一边,OP跟OC是否在BOC的同一边就可以了(最后一段代码就是这个意思)。
那么怎么判断呢,跟一个平面的垂直向量点乘获得cos值就行了,cos都是正的或者负的相乘的结果就是正的即大于0,即同向。
总结就是二维空间判断的是点跟边的同向,三维空间判断的是边跟面的同向