ab向量的模怎么算

上文提到的GJK算法中,核心在于判断原点是否包含在三角形(单纯形)之内,以此决定是否终止迭代。判断一点是否位于三角形内部,也是众多互联网公司面试算法工程师时的一道重要考题。
假设我们已知点A、B、C和点P的坐标,我们的任务是判断点P是否由A、B、C三点构成的三角形内部。
方法一:基于三角形面积判断
当点P位于三角形内部时,由点P与三角形三个顶点构成的三个小三角形的面积之和应等于原三角形的面积,即△PAB + △PBC + △PCA = △ABC。相反,如果点P在三角形外部,那么这三个小三角形的面积之和会大于原三角形的面积。我们可以通过已知的三点坐标来计算三角形的边长,再利用海伦公式求出三角形面积。
方法二:利用向量叉乘判断
我们回顾一下向量叉乘的定义。向量的叉乘可以用于判断点P相对于向量AB的位置是在左侧还是右侧。观察发现,如果点P在三角形内部,那么无论顺时针还是逆时针,点P始终位于向量AB、BC、CA的同一侧。相反,如果点P在三角形外部,则必然会出现在某一向量的另一侧。对于点P恰好位于三角形边上或顶点上的特殊情况,以上两种方法仍然适用,只需在设置临界条件时加以注意。
对于三角形可以使用上述两种方法,而对于任意多边形,则可以采用射线法来判断某点是否在多边形内部,这个问题也被称为PIP(Point in Polygon)问题。详细的内容可以参考“判断一点是否在多边形内部的射线法”。
