提问人:Elijah Sokol 提问时间:7/17/2023 更新时间:7/17/2023 访问量:38
确定线的系数 [关闭]
Determine the coefficients of the line [closed]
问:
平面上有 N 个点。确定穿过第一个点和剩余点之一的线 y=kx+b 的系数,以便所有 N 个点都位于该线的同一侧,并且可能位于该线本身上。
我需要帮助,至少对问题的解决方案进行数学描述
答:
0赞
Michael Cao
7/17/2023
#1
计算第一个点与每隔一个点之间的角度。取形成最低或最高角度的点,并将该点用作线的第二个点。
-1赞
Red Rapious
7/17/2023
#2
正如Michael Cao所解释的那样,你需要考虑第一点和其他点之间的角度。假设所有点都有正坐标和坐标,则角度最高的点也将具有角度的最高点。这个正切可以很容易地计算出来:x
y
tan
def tangent(x1, y1, x2, y2):
return (y2-y1) / (x2-x1)
因此,您只需要找到切线最高的点:
def highest_point(points):
x1, y1 = points[0] # coordinates of the first point
maxi = (0, None)
for x, y in points[1:]:
if tangent(x1, y1, x, y) > maxi[0]:
maxi = (tangent(x1, y1, x, y), (x, y))
return maxi[1]
最后,只需计算通过第一个和最高点的线的系数:
def coefficients(points):
x1, y1 = points[0]
x2, y2 = highest_point(points)
print("k =", (y2-y1) / (x2-x1)) # the coefficient is the tangent
print("b =", y1 - (x1 * (y2-y1) / (x2-x1)))
(最后一个公式可以几何地验证:原点处的有序是 、 中的有序减去“斜率从 到b
x1
y1
0
x1
")
评论
0赞
Elijah Sokol
7/18/2023
好的,这是一个很好的解决方案,但是如果坐标可以是负数,它将如何工作?
0赞
Red Rapious
7/19/2023
我相信,这仍然适用于负坐标。
评论