我使用Python + numpy的(也许可以也使用SciPy的),并有三个2D点点和线(从2个点)
(P1, P2, P3);
我想从P3垂直距离之间的距离到在P1和P2之间画出的线。让P1=(x1,y1)
,P2=(x2,y2)
和P3=(x3,y3)
以矢量标记,这将是很容易的,但我相当新的Python/numpy的,并不能得到anythng的作品(或者甚至关闭)。
任何提示赞赏,谢谢!
我使用Python + numpy的(也许可以也使用SciPy的),并有三个2D点点和线(从2个点)
(P1, P2, P3);
我想从P3垂直距离之间的距离到在P1和P2之间画出的线。让P1=(x1,y1)
,P2=(x2,y2)
和P3=(x3,y3)
以矢量标记,这将是很容易的,但我相当新的Python/numpy的,并不能得到anythng的作品(或者甚至关闭)。
任何提示赞赏,谢谢!
尝试使用规范函数从numpy.linalg
d = norm(np.cross(p2-p1, p1-p3))/norm(p2-p1)
np.cross
返回叉积的仅用于二维矢量的z坐标。因此,接受的答案中的第一个norm
是不需要的,而且如果p3
是一个向量数组而不是单个向量,那么它实际上是危险的。最好只使用
d=np.cross(p2-p1,p3-p1)/norm(p2-p1)
这对于一个点的数组p3
会给你从线距离的阵列。
你能解释一下,如果'p3'是一个数组,那么分子中的'norm'如何是危险的? – dinosaur
@dinosaur,因为'norm'将把'np.cross'返回的一维数组作为一个大的向量并返回它的“大小”。 –