ゲーム: 2015年2月アーカイブ

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

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

進む方向としては、↓下の写真のように開始地点から見て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 のどの方面に終点があるか」をどうやって判断すればいいかを考えてみようか。

このアーカイブについて

このページには、2015年2月以降に書かれたブログ記事のうちゲームカテゴリに属しているものが含まれています。

前のアーカイブはゲーム: 2014年12月です。

次のアーカイブはゲーム: 2016年7月です。

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


月別 アーカイブ

電気ウナギ的○○ mobile ver.

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