[问题已被重写为澄清]基于距离的点列表的排序功能
我想要拿出一个排序功能。什么是排序是一个点列表。
排序功能需要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)
下面是一个例子:
正在这里考虑的两点都与他们之间绘制的线条的人。圆圈点应该是排序算法中的三个最低点。左边的接近点受到接近两点之一的处罚,但远离另一点。
可以给更多的上下文吗?因为我真的不明白你希望那三个是最接近的逻辑。我会和你完全相反。我定义了一个距离'h',然后使用它我会说“哦,他们确实是最接近的”或者“他们不是”。反过来,如果没有更多关于你想拥有哪个特征的信息,那真的很难。 – Bakuriu
这听起来像你正在与矩阵,在这种情况下[这可能是你在找什么](http://stackoverflow.com/questions/1871536/euclidean-distance-between-points-in-two-不同-numpy的阵列 - 不内)。 – jathanism
请解释*为什么*你认为这三点是最接近的。这可能有助于澄清您的问题陈述,目前有点模糊。 – NPE