[明確にするために質問を書き直しました]
私はソート機能を考え出そうとしています。ソートされているのはポイントのリストです。
ソート機能は 3 点を取り込みます。並べ替えるポイントのリストからの 1 つと、比較に使用される他の 2 つ。目標は、並べ替えられるポイントが他の 2 つのポイントから相対的なユークリッド距離を決定することです。ポイントが 2 つのポイントの間にある場合、関数の最小値を指定する必要があります。関数は、両方のポイント間のユークリッド距離を利用する必要があります。
これまでのところ、数式は距離の 2 乗の一部であるか、指定された 2 点の間に点を作成し、その点までのユークリッド距離を使用する必要があるようです。以下に、これまでに考えられる 2 つの関数を含めました。
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)
以下に例を示します。
ここで考慮されている 2 つのポイントは、それらの間に線が引かれたポイントです。丸で囲まれた点は、並べ替えアルゴリズムで最も低い 3 つの点である必要があります。左に近いポイントは、2 つのポイントのうちの 1 つに近いが、もう 1 つのポイントから離れているため、ペナルティが科されます。