全方向の方向転換ポイントの算出式を考える

久しぶりに、ヘックスマップ上での目的地までの最短距離を算出する話。

以前、「最短経路の方向転換ポイントを算出する」で上方向に向かう場合の最短距離(最短ルート)を算出した。
具体的には、目的地方向の六角形の二辺のどちらかから直線で進み、途中で一回だけ方向転換し、また一直線に目的地に向かうという進み方である。
ある地点から斜めに最短距離で目的地に向かうルートは算出出来るので、要はどこで方向転換するかを算出すればいいという話やね。(「?」という人は、「ヘックス」とかをキーワードに過去記事をチェックしてみてちょ)

進む方向としては、↓下の写真のように開始地点から見て6つある。マスが六角形だからな。
それぞれ A~F の名前をつけてみた。

20150205_hexmap.JPG
A 方向(上方向)の計算式は前回考えたように、

<右に向かうコースの転換点の座標>
X = X(A) - (Z(A) - Z(B))
Y = Y(A)
Z = Z(B)

<左に向かうコースの転換点の座標>
X = X(A) - (Y(A) - Y(B))
Y = Y(B)
Z = Z(A)

でOK。(A) が起点、(B) が終点の座標値だ。
起点が 15-17-18 の座標、ゴール地点が 2-8-15 の座標であれば、右方向なら 11-17-14 座標のマスへ向かい、そこで方向転換して 2-8-15 に向かうのが最短距離。
左方向なら 6-8-18 が方向転換マスの座標値だ。上の計算式で試しにやってみてほしい。

で、その他の方向の方向転換ポイント(マスの座標値)の算出方法。
出発点から右に向かって行くか、左に向かっていくか、それぞれ2つのパターンがある。

B 方向(左上方向)

<右に向かうコースの転換点の座標>
X = X(B)
Y = Y(A) - (X(A) - X(B))
Z = Z(A)

<左に向かうコースの転換点の座標>
X = X(A)
Y = Y(A) - (Z(B) - Z(A))
Z = Z(B)

C 方向(左下方向)

<右に向かうコースの転換点の座標>
X = X(A)
Y = Y(B)
Z = Z(A) + (Y(A) - Y(B))

<左に向かうコースの転換点の座標>
X = X(B)
Y = Y(A)
Z = Z(A) + (X(B) - X(A))

D 方向(下方向)

<右に向かうコースの転換点の座標>
X = X(A) + (Z(B) - Z(A))
Y = Y(A)
Z = Z(B)

<左に向かうコースの転換点の座標>
X = X(A) + (Y(B) - Y(A))
Y = Y(B)
Z = Z(A)

E 方向(右下方向)

<右に向かうコースの転換点の座標>
X = X(B)
Y = Y(A) + (X(B) - X(A))
Z = Z(A)

<左に向かうコースの転換点の座標>
X = X(A)
Y = Y(A) + (Z(A) - Z(B))
Z = Z(B)

F 方向(左上方向)

<右に向かうコースの転換点の座標>
X = X(A)
Y = Y(B)
Z = Z(A) - (Y(B) - Y(A))

<左に向かうコースの転換点の座標>
X = X(B)
Y = Y(A)
Z = Z(A) - (X(A) - X(B))

こんな感じ。

あとは、起点から見て A~F のどの方面に終点があるかが判断できれば、どの計算式を使えばいいかがわかる。

次回は、「A~F のどの方面に終点があるか」をどうやって判断すればいいかを考えてみようか。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 全方向の方向転換ポイントの算出式を考える

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/3302

コメントする

このブログ記事について

このページは、shinodaが2015年2月 6日 00:23に書いたブログ記事です。

ひとつ前のブログ記事は「宇兵衛の日替りうどん寿司セットのうどんが美味しくなってる」です。

次のブログ記事は「今日は事務所泊まり」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら