エンドレス座標で、相対位置から「最寄りの方向」を求める

1. 前提

2次元座標xyを考える。

x成分もy成分も0以上a未満とする。

点が、座標の各成分がaを超えるように微小距離だけ移動すると、その成分はaだけ減算される。

点が、座標の各成分が0を下回るように微小距離だけ移動すると、その成分はaだけ加算される。

(上2つはつまり、右端と左端、上端と下端がそれぞれ繋がっているということです。)

2. 問題

エンドレス座標における「最短距離」の面倒くささおよび求め方はhttps://note.com/puter/n/nee5467cccb66 (以下「記事1」と呼ぶ)
で述べた。

では、相対位置から、「最短距離」をたどるための経路を特定することはできるだろうか。

f,gを-a以上a以下とする。点Aからみた点Bの相対座標が(f,g)のとき、CD間の最短経路を求めよ

3. 解説

まず、記事1でも示した図を再掲する。

画像1

空間上の各点を(-b,-c)だけ平行移動すれば(あるいは)、赤色の点(b,c)は原点に重なる。その様子を次の図に示す。

画像2

d-b=f, e-c=gとすれば、この座標は赤色の点Aからみた点Bの相対座標を表していると考えることができる。

画像3

故に点Bの相対座標、すなわち ベクトルAB は\(f(?:[+\-]a)?, g(?:[+\-]a)?\)のように表現できる。

これら9通りのベクトルABのうち、絶対値が最小となるものがAB間の最短経路となる。今、次の図のように、a/2毎にグリッド線を引いてみよう。

画像4

すると、9マスの中に4つの区間が出来て、点Bはそのいずれかの区間に属するものとなる。4つの区間はそれぞれマスの左上、左下、右上、右下の頂点に最近している。ややこしいので(0,0)を左下端とする1マスを取り出すと次の図の通り。

画像5

(このマスの範囲内に点(f,g)が来ない場合、各成分にaを足すか足さないかして調節する。)
マスの頂点から点Bへ向かうベクトルのうち絶対値が最小であるものを図示すると次の通り。

画像6

このベクトルに従って原点にある赤い点Aを移動させると、それはAB間の最短経路となる。

画像7


この記事が気に入ったらサポートをしてみませんか?