我有(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分来做。
我在某处读到了矢量方式并不准确。真正? 你知道其他一些检查方法吗? 你推荐哪种检查方式?
答案 0 :(得分:3)
像这样的问题总是寻找库......这是一个数学问题,可能在库中有解决方案。一个快速回答:
import matplotlib
matplotlib.path.Path.contains_points # is the function you are looking for
检查docstring以获取使用说明。