23

トーラスの表面上の 2 つの x/y 座標間の距離を計算したいと思います。したがって、これは角と辺が「接続」されているというプロパティを持つ通常のグリッドです。たとえば、500x500 のグリッドでは、(499, 499) のポイントは (0, 0) に隣接し、(0,0) と (0,495) の間の距離は 5 になります。

これを計算する良い数学的な方法はありますか?

4

4 に答える 4

56

つまり、トーラスの 2 次元表面でのユークリッド距離を探しているということですね。

sqrt(min(|x1 - x2|, w - |x1 - x2|)^2 + min(|y1 - y2|, h - |y1 - y2|)^2)

ここでw、 とhはそれぞれグリッドの幅 (x) と高さ (y) です。

于 2010-01-23T17:25:18.620 に答える
8
  • x 座標間の距離がグリッドの X サイズの半分よりも大きい場合は、グリッドの X サイズを小さい方の x 座標に追加します。
  • Y についても同じことを行います。
  • 次に、距離を計算します。
于 2010-01-23T17:22:07.800 に答える
4

グリッドが端で折り返されている場合、各座標間に 4 つの距離があります (2 次元の場合)。最短距離を知りたいと思います。

小さいグリッドを使用してみましょう。数字はもう少し扱いやすいです。グリッドが 10x10 だとします。例と同じように、簡単にするために 1 つの次元のみを使用してみましょう (この場合、距離は 2 つだけになります)。ポイント 0,2 と 0,6 があるとします。ポイント間の 2 つの距離は d_1 = (6-2) = 4 と d_2 = (10-6) + 2 = 6 であるため、この場合、最短距離は d_1 になります。

一般に、次のことができます。

  • 各座標について:
    • 大きい数から小さい方を引く
    • 結果がグリッド幅の半分より大きい場合、この座標の最短距離はグリッド幅から結果を引いたものになります
    • 結果がグリッドの幅の半分未満の場合、この座標の最短距離が結果になります。

次に、ピタゴラスの定理を使用して、2 点間の最短距離は、各方向の最短距離の 2 乗和の平方根です。他の 3 つの距離は、各方向の距離の他の組み合わせを使用してピタゴラスの定理を計算することで計算できます。

別のポスターが言ったように、(2 次元グリッドの場合) エッジを丸めたときに形成される形状はトーラスであり、上記で使用した方法は与えられた方程式と同じですが、それができるという利点があります。必要に応じて n 次元に拡張できます。残念ながら、2 次元を超える簡単な視覚化は実際にはありません。

于 2010-01-23T17:37:09.057 に答える
0

ポイント (x1,y1) と (x2,y2) の場合、4 つの距離を計算する必要があります。

  • (x1,y1) から (x2,y2) へ
  • (x1,y1) から (x2, 500-y2) まで
  • (x1,y1) から (500-x2, y2) まで
  • (x1,y1) から (500-x2, 500-y2) まで

そしてそれらの最小値を取ります。

于 2010-01-23T17:25:50.803 に答える