[問題已被重寫爲澄清]基於距離的點列表的排序功能
我想要拿出一個排序功能。什麼是排序是一個點列表。
排序功能需要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