我使用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'返回的一維數組作爲一個大的向量並返回它的「大小」。 –