2009年11月08日
GeoHexの本当にすごいところ
sa2daさんが先週の金曜日にGeoHexという仕様を発表して以来、ジオメディア周辺がGeoHex話題で盛り上がっています。
- 日本地図ヘックス化企画GeoHex(ジオヘックス)を公開しました。 -geogames.net-
- GeoHexデモ
- sa2da さんの GeoHex がイケている件 -Cirius Lab-
- GeoHex on twitter
位置ゲーのことをまじめに考えてると、スタンプラリーや距離ベースの位置ゲーだとともかく、陣取りとかそういうあたりまで考えを広げていけば、どうしても実ポリゴンとかでやっちゃうとシステム負荷が青天井だよね、というあたりに思いが行き着いてしまいます。
それに大戦略あたりで育ってきた世代感覚がプラスされると、現実をヘクス化しちゃおう、というのは割と自然な流れだと思っていて、実際私も過去に、3次メッシュをベースにしたヘクス仕様とライブラリを公開したこともありました。
けど、私の仕様の場合、
- ヘクスの形がいびつ?ヘクスのコードが長すぎる?ヘクスの大きさが固定?⇒まあしょうがないよね既存仕様から作ればこうなっちゃうから
- 一定距離内のヘクスのコード名導出方法が複雑?⇒まあその辺はGISツール使って事前にデータ作ってもらって…
で思考停止しちゃってたんですが、その辺を全部解決しちゃったのがGeoHexの本当にすごい点だと思います。
ヘクスの形が本当に自然

▲ むちゃくちゃ燃えます。 ▲

▲ 比べもんになりません。 ▲
コードの長さが超短い
上記の例の場合、GeoHexだと「310fMDJ」、私のヘクスだと「533945260」で、圧倒的に短いです。
ヘクスサイズが可変
GeoHexの場合、60段階でヘクスサイズが可変なので、超戦術級から戦略級まで、幅広い用途のヘクスが作成可能です。

▲ このレベルから(レベル1) ▲

▲ このレベルまで(レベル60) ▲
まあ、そこまで細かく多段階が必要なのか、また同じ地域の別サイズ時のヘクスコード間に類似性がないのはどうか、といったところもあるのですけど(その辺は今後改良されるかも)、それにしても用途に合わせて自由にサイズを可変できるのはすごいです。
距離の計算が本当に簡単
今まで書いたところでも十分にすごいのですが、はっきり言ってこの点が今まで書いたことをはるかに凌いでGeoHexの一番すごいところだと思います。
元記事の簡単な仕様紹介でも書かれているのですが、GeoHexは座標系として、緯度経度ではなく、ヘクスの辺方向に沿った斜めの座標系を採用しています。
この座標系について、注目するヘクスを仮に座標原点(0,0)とおいて、周辺のヘクスとの座標値と距離の関係を図示してみると、

▲ GeoHexの座標系とヘクス間距離の関係。 ▲
座標値同士の加減算だけで、ヘクス間距離が計算できる。
というような感じで、ヘクス間の距離は、
- 対象のヘクスが第1・第3象限にある場合:X座標の差の絶対値、或いはY座標の差の絶対値のうち、大きい方がヘクス間距離
- 対象のヘクスが第2・第4象限にある場合:X座標の差の絶対値と、Y座標の差の絶対値の和がヘクス間距離
となり、2つのヘクスコードがあれば加減算だけでヘクス間距離が計算できます。
逆に、一定距離内にあるヘクスのリストの算出も、X,Y座標の値をそのプラスマイナスその距離だけ離れた値でループをかけてやれば、それだけで算出できます。
ヘクス1つ動いた際の大まかな距離が算出されていれば、PostGISみたいなGISツールを使わなくても、周辺ヘクスの算出がループ+加減算で導出できます。
これはすごい...と思うのですが、どうでしょうか。
いずれにしろ、GeoHexがすごく使える仕様であることは間違いがないと思います。
とりあえず、Perl版のライブラリを書いてみました。 > (CodeRepos)(CPAN)
経緯度との相互変換だけでなく、ポリゴンの取得や、上に書いたヘクス間のヘクス距離取得API、一定ヘクス距離内のヘクスをリストアップするAPI等も加えています。
一度、試してみてください。
![[ここギコ!]](http://kokogiko.net/logo.png)





・3Dどきゅめんと…って何?点字文書?(radeonf)
・3Dどきゅめんと…って何?点字文書?(radeonf)
・滝川クリステル?(elaveFARWalge)
・すこし先のARに必要な方向性3つ(毎日ウハウハっす(笑))
・3Dどきゅめんと…って何?点字文書?(Zebraprint)
・HTTP::MobileAgentのプラグイン取り込み機構案(Gartgoory)
・インクリメントPが新サービスBloca!を開始(fatk)
・滝川クリステル?(dicygobby)
・3Dどきゅめんと…って何?点字文書?(Zebraprint)