2016-12-05 285 views
0

我创建了一个“Point”类,我想计算给定点和线之间的最短距离(以其他2个点为特征),所有点都是已知的。 我试图用这个公式:| Ax + By + C |/sqrt(A^2 + B^2),但我搞砸了,由于分钟(主要是因为数学公式:()主要是因为:()...Python 3.5.2:从一个点到一条线的距离

我也发现一些网站,人们也问过这个问题,但无论是不是为Python或它是在3D系统没有2D ...


下面是我的课:

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个小时,我想不出来...

+0

你的意思是指与这两点相交的无限线,还是延伸在它们之间但不再延伸的线? – Basic

+0

我投票结束这个问题作为题外话,因为它不是一个与编程有关的问题。尝试http://math.stackexchange.com –

+0

@EliKorvigo:哟,我也发现了数学公式,但问题是将它转换成python。此外,任何想要计算三角形面积和任何四边形面积的人(通过将其分成两个三角形) - 我接下来要做的 - 都需要这个。 – ROBlackSnail

回答

3

您应该可以直接使用this公式。所以,你会有这样的:

import math 

class Point: 
    def distance_to_line(self, p1, p2): 
     x_diff = p2.x - p1.x 
     y_diff = p2.y - p1.y 
     num = abs(y_diff*self.x - x_diff*self.y + p2.x*p1.y - p2.y*p1.x) 
     den = math.sqrt(y_diff**2 + x_diff**2) 
     return num/den 
+0

如果这是一种方法,参数中不应该存在自我吗? – ROBlackSnail

+0

是的,你说的对,近来Java太多了:P – Iluvatar

+0

无论如何,在我把它放在那里之后,它就可以正常工作。万分感谢 ! – ROBlackSnail

0

两点之间的距离公式是Distance =sqrt((x2−x1)^2+(y2−y1)^2)。 并且计算斜率的公式为slope = (y2 - y1)/(x2 - x1)。所以下面

是一种简单的方法来计算的距离

def distance_from_other_point(self, other_point): 
    return math.sqrt((other_point.getX() - self.getX())**2 + (other_point.getY() - self.getY())**2) 

def slope(self, otehr_point): 
    return (other_point.getY() - self.getY())*1.0/(other_point.getX() - self.getX()) 

在第二种方法中,坡度,我乘以1.0,这样的结果将是在浮动。 注 - 我希望使用python 2.7.6的语法,它也可以在python 3.x中使用。

+0

我想我错了distance_from_other_point方法XD错误它是:'def distance_from_point(self,the_other_point): dx = the_other_point.getX() - self.x dy = the_other_point.getY() - self。y return sqrt(dx ** 2 + dy ** 2)' – ROBlackSnail

相关问题