[问题已被重写以澄清]
我正在尝试提出排序功能。正在排序的是一个点列表。
排序功能需要 3 分。一个来自要排序的点列表,另外两个用于比较。目标是确定要排序的点与其他两个点的相对欧几里得距离。当点直接位于两点之间时,应给出函数的最小值。该函数应利用两点之间的欧几里得距离。
到目前为止,该公式似乎应该是距离的一些平方,或者在两个给定点之间创建一个点,并使用到该点的欧几里得距离。下面我已经包括了两个可能的功能。
p is the point to be sorted
p1,p2 are the given points
def f(p,p1,p2): #Midpoint distance
midPoint = midpoint(p1,p2)
return distance(p,midPoint)
def f(p,p1,p2): #Sum of squares
return distance(p,p1) ** 2 + distance(p,p2) ** 2
def distance(pointA,pointB): #Psudocode
dx = pointA.x - pointB.x
dy = pointA.y - pointB.y
return sqrt(dx ** 2 + dy ** 2)
下面是一个例子:
这里考虑的两点是在它们之间画线的点。圈出的点应该是排序算法中的三个最低点。左边的近点因靠近两点之一但远离另一点而受到处罚。