覆盖地球与六angular形地图瓷砖

许多战略游戏使用六angular形瓷砖。 其中一个主要的优点是任何瓦片的中心与其所有相邻的瓦片之间的距离是相同的。

我想知道是否有人想把传统的地理系统(经度/纬度)与六边形瓷砖系统结合起来。 我认为用六angular形瓷砖覆盖地球仪并能够将地理坐标映射到瓷砖会很有趣。

有没有人看过任何远在此之前?

UPDATE

我正在寻找一种细分球体表面的方法,以便每个球体具有相同的表面积。 理想的情况是,相邻分区的中心是等距的。

看看vraid / earthgen ; 它使用六边形(加上几个五边形),并包括源代码(见planet / grid / create_grid.cpp )。

vraid / earthgen图像

实际上,用普通的瓷砖覆盖一个球体是不可能的(除了长而薄的“橙片”),所以在给定一定的约束条件或者要求的情况下,对地图进行像素化的最佳方法实际上是一个相当困难的研究问题。

HEALPIX像素化常常使用一种平铺(在天体物理学中): http ://healpix.sourceforge.net/

这个像素化满足等面积要求; 然而,使一切等距离是不可能的。

另一个像素化是“GLESP”,它具有一些不同的属性(并不像打包的软件): http ://www.glesp.nbi.dk/

想到的第一个网站是Amit的游戏编程信息及其在六angular形网格上的链接集合。

那么,很多人已经表明,你不能用六angular形瓷砖来平铺球体 – 也许你想知道为什么。

欧拉指出(有很多有趣的和不同的certificate,甚至整本书),给出了在x个边中总共有y个边和总共为z个顶点的球面图(例如,一个立方体有6个多边形,12个边和8个顶点)的公式

x – y + z = 2

总是持有(介意减号)。

(顺便说一句:这是一个拓扑语句,所以一个立方体和一个球体 – 或者说,确切地说,只有它们的边界 – 在这里真的是一样的)

如果您只想使用六边形来平铺一个球体,则最终会得到x六边形,并具有6 * x边缘。 然而,每一对六边形都有一条边。 所以,我们只需要计算它们的3 * x和6 * x个顶点,但是,每个顶点又是由3个六边形共享的,所以最终有2 * x个边。

现在,使用公式:

x – 3 * x + 2 * x = 2

你最终的虚假陈述0 = 2 – 所以你真的不能只使用六angular形。

这就是为什么古典足球看起来像这样 – 当然现代的更喜欢,但基本的事实依然存在。

你不能用同样的六边形覆盖一个球体,但是你可以用一个测地线覆盖它,这个测地线主要是六边形,在二十面体的顶点有12个五边形,六边形稍微变形,使它凸出成一个球体。

阅读Kevin Sahr,Denis White和A. Jon Kimerling的“Geodesic Discrete Global Grid Systems”

你可以在这里find…

六边形瓷砖对于应用于地理空间应用的常规几何体太复杂。 查看HTM的三angular形类似的东西或谷歌的“分层三angular网格”的其他来源。

用于将行星表面映射为十二面体的老式旅行者angular色扮演游戏(在书中打开打印)。 这在angular落里产生了很大的扭曲(他们必须变成五边形)。 searchGURPS Traveler时可能会发现一些这样的内容。

把一个球体分成平坦的表面,这是一个艰难的坚果。 正因为如此,你最终得到的是大地测量的形状 ,这些形状 不是由相同大小的三angular形组成的形状组成的。 将所有的六边形和五边形分解成三angular形,最终会得到具有不同内angular的三angular形,导致失去对称性。

我可以给你的一个安慰是,所有的形状都会有有限数量的三angular形,可以被分类,这意味着对于一个小的测地线,可以重复使用5或6个三angular形来描述所有的六边形和五边形测地线所需的。 虽然距离不等于每个三angular形/形状的“中心”,但您至less可以将每个三angular形的处理分为不连续的情况,借此可以在代码中find潜在的解决方法。

只有几个柏拉图多面体使用单一types的多边形来逼近一个球体。 着名的ICOSAHEDRON和DODECAHEDRON 。 如果你愿意有一点失真和一些重叠点,你可以得到公平的结果,使游戏乐趣。 试试THIS LINK ,它可以为所有瓷砖提供几乎相同的面积,并且可以为全球各地的瓷砖提供相当一致的瓷砖距离。

但是这些地图都不能很好地映射到古老的地理,圆柱形经纬度投影系统上。

一种解决scheme是在蜂窝图案上加上一个蜂窝图案,并在接近像这样的两极时允许扭曲的TON 。

祝你好运! 🙂

我刚刚构build了一个名为dggridR的R包,它将地球表面划分为等大小的六边形,用于分块空间分析。

卡斯滕在他的回答中使这个声音变得不可能,但实际上并非如此。 通过引入12个五边形,所有其余的六边形合在一起,没有问题。 因为你可能拥有数以百万计的细胞来处理高分辨率的格子,大多数时候你可以忘记这些五边形。

转化的math是复杂的。 你可以在…里find它们:

  • Crider,John E.“Fuller地图投影和反演的精确方程”。Cartographica:国际地理信息和地理信息化期刊43.1(2008):67-72。 网页。

  • Snyder,John P.“多面体地球的等面积地图投影”,Cartographica:The International Journal for Geographic Information and Geovisualization 29.1(1992):10-21。 网页。

在后台dggridR依靠Kevin Sahr的DGGRID软件。

您也可能会发现以下参考是有用的:

  • 格雷戈里,马修J.等人。 “离散全球网格系统上的小区间度量的比较”,Computers,Environment and Urban Systems 32.3(2008):188-203。 交叉引用。 网页。
  • Kimerling,Jon A.等人 “比较全球网格的几何特性。”制图与地理信息科学26.4(1999):271-288。 打印。
  • Sahr,K。“用于地理空间计算的六边形离散全球网格系统”,Archiwum Fotogrametrii,Kartografii i Teledetekcji Vol。 22(2011):363-376。 打印。
  • Sahr,Kevin。 “位置编码在二十面体孔径3六边形离散全球网格”。计算机,环境和城市系统32.3(2008):174-187。 交叉引用。 网页。
  • Sahr,Kevin,Denis White和A. Jon Kimerling。 “测地线离散全球网格系统。”制图和地理信息科学30.2(2003):121-134。 打印。

老问题,但:

其他答案是正确的,因为不可能只使用六边形来平铺一个球体。

然而,一个简单的(ish)破解是:

创build一个2d的“六边形”表单:

在这里输入图像说明

并将它们从原点的三维空间偏移1,然后对所有的顶点进行归一化。

这会给你一个“凸起”的版本,它有一个很好的球形曲线。 问题是这只有在工作表覆盖球体的一部分时才能起作用。

一种解决scheme与用于创build无限网格地板的方法类似。 当球体旋转时,当您移动半个单元格时,将单元格向相应方向旋转一次。 (对于六边形的情况,数字不是半个单元格,而是与一个六angular形瓦片的尺寸相关)。这在3D中有点棘手,但是可行。

在2D中,我有类似的问题,可能会有所帮助。

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

HEAlpix是正确的,如果你的约束条件是保持相等的面积分割球体时(有趣的覆盖投影面积在天空相同的两极和赤道地区)。 你基本上每次分割你的领域4或环或嵌套scheme,以满足层次相等面积约束。 例如在普朗克或WMAP任务中研究CMB模式的温度,在天空中“部署”FTfunction((等纬度属性))也非常方便。

它也用许多编程语言来实现。

此外,我应该提到另外一个(不等于面积),称为“四维立方体”的Q3C,另一个天空分区scheme,其他优点(锥search和X匹配)

原文:

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