3

我有(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)或在所有它们之外。我必须用〜10,000分来做。

我在某处读到矢量方式不是那么准确。真的?你知道其他一些检查方法吗?您推荐哪种检查方式?

4

1 回答 1

3

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

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

检查文档字符串以获取使用说明。

于 2013-07-12T14:51:40.217 回答