500単位のトロイダル平面上の2つの座標間の距離を計算するゲーム用のツールを作成しています。つまり、[0,0]から[499,499]は有効な座標であり、[0,0]と[499,499]も互いに隣接しています。
現在、私のアプリケーションでは、ユーザーが事前に構成した[X、Y]の場所に対応する[X、Y]の場所を持つ都市間の距離を比較しています。
これを行うために、私はこのアルゴリズムを見つけました。
Math.sqrt ( dx * dx + dy * dy );
ページリストを距離で並べ替えることは便利なことなので、このアルゴリズムをMySQLクエリに実装し、SELECTステートメントの次の部分を使用してアプリケーションで使用できるようにしました。
SQRT( POW( ( ".strval($sourceX)." - cityX ) , 2 ) + POW( ( ".strval($sourceY)." - cityY ) , 2 ) ) AS distance
これは多くの計算で問題なく機能しますが、[0,0]と[499,499]が互いにキティコーナーであるという事実を考慮していません。
0と499が隣接している場合、このアルゴリズムを微調整して正確な距離を生成する方法はありますか?