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没有赋值,是否有另一种方法可以计算出来?
答案 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。