函数来查找一个点是否位于python中给出两个点的一条线上

时间:2015-03-22 20:11:25

标签: python-3.x

def isOnLine(xCord1, yCord1, xCord2, yCord2, xCord3, yCord3):
    mSlope = (yCord2 - yCord1) / (xCord2 - xCord1)
    return mSlope
lineEquation = y - yCord1 = mSlope * (x - xCord1)

我需要的是一个函数,当给定三个坐标时,将确定前两个坐标中的一条线,然后取第三个坐标,看它是否落在线上,返回一个bool,如果坐标确实落在上面,则表示为true如果坐标不在线上,则为行或false。 到目前为止,我所有的功能都是从给定的前两个坐标中找到一条直线的斜率。我知道我可以取斜率和前两个坐标并找到直线的方程,然后使用直线的方程取第三个坐标,看它是否在线上。但是我不能使用那个等式,因为y和x没有赋值,是否有另一种方法可以计算出来?

1 个答案:

答案 0 :(得分:0)

您接近理论上正确的功能,可以使用完美(无错误)数据。

def is_on_line(x1, y1, x2, y2, x3, y3):
    slope = (y2 - y1) / (x2 - x1)
    return y3 - y1 == slope * (x3 - x1)

print(is_on_line(0, 0, 1, 1, 2, 2))
# True

潜伏者的建议是将上面的等式测试变成等效的

(y3 - y1) / (x3 - x1) == slope

但是,对于任意浮点数,您使用的任何标准都是完全相等的。所以你必须测试足够的'。您可以减去斜率并测试差值是否足够接近0.或者您可以除以斜率并且测试足够接近1.我要做的是查找点和线之间的垂直距离的公式并测试距离足够近'到0。