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)
小数点
问题后2> 18的位置: 它应该有不错的表现,因为我想检查P是否在三角形(ABC)内部或者三角形(DEF)内部或三角形(GHI)内部或三角形内部(JKL)内还是所有三角形内部。我必须用10,000点才能做到这一点。
我在某处看到矢量方式并不准确。真正? 你知道其他一些检查方法吗? 你推荐哪种检查方式?
看不到任何向量方法的问题。准确度将取决于您的硬件。这[后](http://stackoverflow.com/questions/2049582/how-to-determine-a-point-in-a-triangle)有一些更多的信息。 – dwxw
这看起来可能很有用:http://www.blackpawn.com/texts/pointinpoly/ – user2357112
这两种方法都是有效的,它们本身并没有任何不准确的地方。第一种方式应该快一点,恕我直言。我不知道你有多少次需要检查这些10k点,但不应该花太长时间。关于精度:Python的'float'是双精度的,它给你一个16位十进制数的精度。如果你需要更多的东西,总会有['decimal'](http://docs.python.org/2/library/decimal.html)(尽管这样会更慢)。 – Carsten