我创建了一个类“点”,我想计算一个给定的点和一条线(由2个其他点表征)之间的最短距离,所有的点都是已知的。我尝试使用这个公式:|轴+按+C|/ sqrt(A^2+B^2),但我搞砸了,越来越困惑(主要是因为数学公式:()...
我确实找到了一些网站,人们也问了这个问题,但它要么不是为Python,要么是在一个三维系统中而不是二维系统中...
下面是我的课:
class Point:
def __init__(self,initx,inity):
self.x = initx
self.y = inity
def getX(self):
return self.x
def getY(self):
return self.y
def __str__(self):
return "x=" + str(self.x) + ", y=" + str(self.y)
def distance_from_point(self,the_other_point):
dx = the_other_point.getX() - self.x
dy = the_other_point.getY() - self.y
def slope(self,other_point):
if self.x - other_point.getX() == 0 :
return 0
else:
panta = (self.y - other_point.getY())/ (self.x - other_point.getX())
return panta
有人能帮我写一个单独的函数或方法,做我想要的吗?我尝试了2个小时,我不能弄清楚...
4条答案
按热度按时间ukxgm1gy1#
你应该可以直接从这些点来使用这个公式,所以,你会得到这样的结果:
2guxujil2#
两点间的距离公式为
Distance =sqrt((x2−x1)^2+(y2−y1)^2)
,计算坡度的公式为slope = (y2 - y1) / (x2 - x1)
。所以下面是一个简单的计算距离的方法
在第二个方法中,slope,我乘以1.0,结果是float。注意-我使用了python 2.7.6的语法,尽管希望它在python 3.x中也能工作。
hfyxw5xn3#
您可以通过pip安装FastLine,然后按以下方式使用它:
6ss1mwsb4#
它是
其中
k×(P1-P0)
是z
向量与位置向量之间的向量乘积。把上面的方程写成标量系统,我们有
求解α,β
因为
(dx²+dy²) = |P1-P0|²
当然,我们的结果等价于
(P1-P0)×(Q-P0)/|P1-P0|
。最后一点,
Q
到(P1-P0)
的距离是有方向的,也许你需要距离的绝对值。