三角计算的不同方式

时间:2013-07-12 14:38:37

标签: python

我有(x,y) - 2D三角形的所有三个角的坐标。现在我想检查一个(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) - &gt;小数点后的18个位置

问题2: 它应该具有良好的性能,因为我想检查P是否在三角形内部(ABC)或三角形内部(DEF)或三角形内部(GHI)或三角形内部(JKL)或所有它们之外。我必须用~10,000分来做。

我在某处读到了矢量方式并不准确。真正? 你知道其他一些检查方法吗? 你推荐哪种检查方式?

1 个答案:

答案 0 :(得分:3)

像这样的问题总是寻找库......这是一个数学问题,可能在库中有解决方案。一个快速回答:

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

检查docstring以获取使用说明。