我有一个二维三角形所有三个角的(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。