web-dev-qa-db-ja.com

六角形の地図タイルで地球を覆う

多くの戦略ゲームは六角形のタイルを使用しています。主な利点の1つは、タイルの中心とそのすべての隣接タイルとの間の距離が同じであることです。

六角形のタイルシステムを従来の地理システム(経度/緯度)と結合することについて考えている人がいるかどうか疑問に思っていました。六角形のタイルでグローブを覆い、地理座標をタイルにマッピングできると面白いと思います。

これに近いものを見たことがありますか?

[〜#〜] update [〜#〜]

私は、各区分が同じ表面積を持つように、球の表面を細分化する方法を探しています。理想的には、隣接するサブディビジョンの中心は等距離になります。

57
carrier

vraid/earthgen ;を見てください。六角形(およびいくつかの五角形)を使用し、ソースコードを含みます( planet/grid/create_grid.cpp を参照)。

2018年時点で 新しいバージョンが利用可能 ラケットに基づいています。

vraid/earthgen image

31
amitp

さて、多くの人々は、球体を六角形のタイルでタイル張りできないと主張しています-多分あなたはなぜ疑問に思っています。

オイラーは、y辺の合計がx頂点、z頂点の合計がx多角形の球体のタイルを与えた(たとえば、立方体には12辺の6多角形があり、 8頂点)式

x-y + z = 2

常に保持します(マイナス記号に注意してください)。

(ところで:それはトポロジカルなステートメントなので、立方体と球体、正確には境界のみがここでは実際に同じです)

六角形のみを使用して球体をタイル表示する場合、x *六角形になり、エッジは6 * xになります。ただし、1つの六角形の各ペアで1つのエッジが共有されます。したがって、それらのうち3 * xと6 * xの頂点のみをカウントしたいのですが、これらもそれぞれ3つの六角形で共有されるため、最終的には2 * xのエッジになります。

次に、式を使用します。

x-3 * x + 2 * x = 2

最終的に偽のステートメント0 = 2-六角形のみを実際に使用することはできません。

それが、古典的なサッカーボールがそのように見える理由です。もちろん、現代のサッカーボールはもっと派手ですが、基本的な事実は残っています。

22
Carsten

球体を通常のタイルで覆うことは不可能です(長くて薄い「オレンジスライス」を除く。したがって、特定の制約または要件を考慮して、マップをピクセル化する最適な方法は、実際にはかなり難しい研究問題です。

(天体物理学で)非常に頻繁に使用されるタイリングの1つは、HEALPIXピクセル化です。 http://healpix.sourceforge.net/

このピクセル化は、等面積要件を満たしています。ただし、すべてを等距離にすることは不可能です。

別のピクセル化は「GLESP」であり、いくつかの異なるプロパティがあります(ソフトウェアパッケージほど洗練されていません): http://www.glesp.nbi.dk/

19
Andrew Jaffe

最初に思い浮かぶウェブサイトは Amitのゲームプログラミング情報 と六角形グリッド上のリンクのコレクションです。

17

球体を等しい六角形で覆うことはできませんが、20面体の頂点に12個の五角形があり、球形に膨らむように六角形をわずかに歪めた、ほとんどが六角形の測地線で覆うことはできます。

12
GoatRider

Kevin Sahr、Denis White、およびA. Jon Kimerlingによる「Geodesic Discrete Global Grid Systems」を読んでください。

あなたはそれを見つけることができます こちら ...

11
Sphaerica

六角形のタイルは、地理空間の用途に適用される通常のジオメトリには複雑すぎます。 [〜#〜] htm [〜#〜] を参照してください。他のソースの三角形またはgoogleの「Hierarchical Triangular Mesh」の類似したものについては、こちらをご覧ください。

9
Erich Mirabal

惑星の表面を二十面体としてマップするために使用されていた古いトラベラーのロールプレイングゲーム(本で印刷するために開いたカット)。これにより、コーナーヘクスに大きな歪みが生じました(五角形にならなければなりません)。 GURPS Travellerを検索すると、そのような資料が見つかる場合があります。

4
Svante

球体を平らな表面で作られた等しい部分に分割するのは難しいナットです。このため、 Geodesic shapes になります。これは、同じサイズの三角形で構成される図形で構成されるnotです。すべての六角形と五角形を三角形に分解すると、内角が異なる三角形になり、対称性が失われます。

私があなたに与えることができる1つの慰めは、すべての形状が分類できる三角形の数が限られていることです。つまり、小さな測地線の場合、5または6個の三角形を繰り返し使用して測地線に必要な六角形および五角形。各三角形/形状の「中心」からの距離は等しくありませんが、少なくとも各三角形の処理を個別のケースに分割し、コードの潜在的な回避策に役立てることができます。

4
Avery Payne

単一のタイプのポリゴンを使用して球体を近似するプラトニック多面体はわずかです。有名な [〜#〜] icosahedron [〜#〜] および [〜#〜] dodecahedron [〜#〜] 。少しの歪みといくつかの重複するポイントがある場合、ゲームを楽しくする公正な結果を得ることができます。 THIS LINK を試してみてください。これは、すべてのタイルの面積がほぼ等しく、世界中の円のタイル距離がかなり一貫していることを管理します。

ただし、これらのどれも、古き良き地理の円筒経度/緯度投影システムに簡単にマップすることはできません。

解決策の1つは、ハニカムパターンを [〜#〜] equirectangular [〜#〜] 投影マップにスーパーインポーズし、極に近づくにつれてTONSの歪みを許容することです LIKE THIS

あなたの研究で頑張ってください! :)

3
jaya

HEAlpix は、球体をバラバラに分割するときに等しい面積を維持するという制約がある場合に正しいものです(空の投影領域を極と赤道領域で同じようにカバーすることに興味があります)。基本的に、リングまたはネストされたスキームのいずれかに従って、階層的等面積制約を満たすために、球体を4つに分割します。また、プランクまたはWMAPミッションでCMBモードの温度を調べるために、空にFT関数((等緯度)プロパティ)を「展開」するのにも非常に便利です。

また、多くのプログラミング言語で実装されています。

さらに、「Quad Tree Cube」のQ3Cと呼ばれる別の1つ(等しい面積ではない)に言及する必要があります

元の紙:

http:// adsabs.harvard.edu/abs/2006ASPC..351..735K

1
pepestar

dggridR と呼ばれるRパッケージを作成しました。これは、ビニングされた空間分析のために、地球の表面を同じサイズの六角形に分割します。

カルステンは彼の答えでこの音を不可能にしていますが、実際にはそうではありません。 12個の五角形を導入することにより、残りの六角形すべてが問題なく一緒に収まります。高度に解像されたグリッドには数百万のセルがあるため、ほとんどの場合、これらの五角形を忘れることができます。

変換の数学は複雑です。あなたがそれらを見つけることができます:

  • Crider、John E.「フラーの地図投影と逆数の正確な方程式」Cartographica:The International Journal for Geographic Information and Geovisualization 43.1(2008):67–72。ウェブ。

  • スナイダー、ジョンP.「多面体グローブの等面積マップ投影法」Cartographica:地理情報と地理可視化のための国際ジャーナル29.1(1992):10–21。ウェブ。

バックグラウンドでは、dggridRはKevin Sahrの [〜#〜] dggrid [〜#〜] ソフトウェアに依存しています。

また、次の参照が役立つ場合があります。

  • グレゴリー、マシューJ.ら「離散グローバルグリッドシステムでのセル間メトリックの比較。」コンピューター、環境、および都市システム32.3(2008):188–203。 CrossRef。ウェブ。
  • キマーリング、ジョンA.他「グローバルグリッドの幾何学的特性の比較」地図作成および地理情報科学26.4(1999):271–288。印刷する。
  • Sahr、K.「地理空間コンピューティングのための六角形離散グローバルGRIDシステム」。ArchiwumFotogrametrii、Kartografii i Teledetekcji Vol。 22(2011):363–376。印刷する。
  • サー、ケビン。 「正二十面体アパーチャ3六角形離散グローバルグリッドでの位置コーディング」。コンピューター、環境、都市システム32.3(2008):174–187。 CrossRef。ウェブ。
  • Sahr、Kevin、Denis White、およびA. Jon Kimerling。 「Geodesic Discrete Global Grid Systems」。地図作成および地理情報科学30.2(2003):121–134。印刷する。
1
Richard

古い質問ですが、:

他の応答は、六角形のみを使用して球を並べることができないという点で正しいです。

ただし、単純な(っぽい)ハックは次のとおりです。

六角形の2D「シート」を作成します。

enter image description here

originから3D空間に1ずつオフセットします。次に、すべての頂点を正規化します。

これにより、ニースの球面曲線を持つ「膨らんだ」バージョンのシートが得られます。問題は、シートが球体のpartを覆っている場合にのみ機能することです。

1つのソリューションは、無限のグリッドフロアを作成するために使用されるものに似ています。球が回転するとき、セルの半分を移動したら、セルを関連する方向に1回回転させます。 (六角形の場合、数値は実際にはセルの半分ではなく、六角形タイルの寸法に関連付けられています。)これは3Dでは少し注意が必要ですが、実行可能です。

しばらく前に2Dでも同様の質問がありましたが、これは役に立つかもしれません。

https://gamedev.stackexchange.com/questions/70092/infinite-treadmilling-hexagonal-grid/70341#70341

0
3Dave