不同的三角形计算方法



我有一个二维三角形所有三个角的(x,y)-坐标。现在我想检查一个(xp,yp)的点是否在这个三角形内:我知道两种检查方法(仅在理论上,尚未实现):

  • 带矢量:

    vec_0A + vec_AB*lambda + vec_AC*my = vec_0P
    lambda + my =< 1
    
  • 具有直线方程:

计算AB、AC、BC三个线性方程,并检查每个方程的p是否在其左/右。

问题1:它必须是准确的,因为我的角和点的典型(x,y)-值如下所示:(-0.049721957725789148, 0.024809768773549616)->18位小数点后

问题2:它应该有一个很好的性能,因为我想检查P是内三角形(ABC)还是内三角形(DEF)或内三角形(GHI)或内三角(JKL),还是在所有三角形之外。我必须用大约10000分来完成。

我在某个地方读到向量法不是那么准确。是吗?你知道其他检查方法吗?你推荐哪种检查方式?

遇到这样的问题时,总是要查找库。。。这是一个数学问题,可能在图书馆里有答案。一个快速答案:

import matplotlib
matplotlib.path.Path.contains_points   # is the function you are looking for

有关使用说明,请查看docstring。

最新更新