许多战略游戏使用六角形的瓷砖。其中一个主要的优点是,任何瓷砖的中心与其所有相邻瓷砖之间的距离是相同的。
我想知道是否有人有任何想法结合六角瓦系统与传统的地理系统(经度/纬度)。我认为用六角形的瓷砖覆盖地球仪并且能够将经纬度映射到瓷砖上是一件很有趣的事情。
之前有人看到过类似的东西吗?
更新
我正在寻找一种细分球面的方法,这样每个细分都有相同的表面积。理想情况下,相邻子区域的中心应该是等距的。
六角形瓷砖对于地理空间用途的常规几何形状来说太复杂了。 查看 HTM类似的东西与三角形或谷歌的“层次三角形网格”的其他来源。
想到的第一个网站是 Amit 的游戏编程信息及其六边形网格上的链接集合。
用普通瓷砖覆盖球体是不可能的(除非是长而薄的“橙色薄片”)。因此,对地图进行像素化的最佳方法,给定一定的约束或要求,实际上是一个相当困难的研究问题。
HEALPIX 像素化是一种非常常用的拼接方法(在天体物理学中) : http://healpix.sourceforge.net/
这个像素化满足了等面积的要求; 但是,不可能让所有东西都等距离。
另一个像素化是“ GLESP”,它有一些不同的属性(而且不像软件包那样优化) : http://www.glesp.nbi.dk/
你不能用相等的六边形来覆盖一个球体,但是你可以用测地线来覆盖它,测地线大部分是六边形,在一个二面体的顶点有12个五边形,六边形略微扭曲,使它膨胀成一个球体。
让一个球体分成相等的平面部分是一个棘手的问题。因此,最终得到的是 测地线形状,它是由形状组成的 没有,这些形状又可以由大小相等的三角形组成。把所有的六边形和五边形分解成三角形,最终得到的三角形有不同的内角,导致对称性的丧失。
我能给你的一个安慰是,所有的形状都有一个有限的数量的三角形,可以分类,这意味着对于一个小测地线,5或6个三角形可以重复使用,来描述 所有的六边形和五边形所需的测地线。虽然距离不等于每个三角形/形状的“中心”,但是您至少可以将每个三角形的处理划分为一个离散的情况,从而在代码中提供一个潜在的解决方案。
好吧,很多人已经指出,你不能用六边形的瓷砖瓷砖球-也许你想知道为什么。
欧拉指出(有很多有趣的不同的证明,甚至是一整本书) ,给出一个球面的平铺公式,在 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-所以你实际上不能只使用六边形。
0 = 2
这就是为什么古典足球看起来确实如此——当然现代足球更花哨,但基本事实依然存在。
阅读凯文 · 萨尔、丹尼斯 · 怀特和 A · 乔恩 · 金默林的《测地离散全球网格系统》
你可以找到它 给你..。
古老的旅行者角色扮演游戏把行星表面绘制成二十面体(切开以便印刷在书上)。这使得角六边形产生了很大的扭曲(它们必须变成五边形)。你可能会找到一些这样的材料时,搜索 GURPS 旅行者。
看看 虚拟/地球,它使用六边形(加上几个五边形) ,并包括源代码(参见 Planet/grid/create _ grid. cpp)。
截至2018年,基于球拍的 新版本可供选择。
只有少数柏拉图多面体使用单一类型的多边形来近似球面。著名的 二十面体和 十二面体。如果你愿意有一点失真和一些重叠点,你可以得到公平的结果,使游戏的乐趣。尝试使用 这个链接,它设法为所有瓷砖提供几乎相等的面积,并为全球各地的圆形提供相当一致的瓷砖距离。
然而,这些都不能很容易地映射到古老的地理、圆柱形的经纬度投影系统上。
一个解决方案是只是在 等矩形投影图上叠加一个蜂窝图案,并且当你接近极点 像这样时允许 TONS 的失真。
祝你研究顺利! :)
老问题了,但是:
其他的反应是正确的,因为仅仅使用六边形是不可能平铺一个球体的。
然而,一个简单的黑客行为是:
创建一个二维的六边形“表格”:
在三维空间中将它们从原点偏移1。然后,对所有顶点进行归一化。
这将给你一个“膨胀”版本的工作表,有一个很好的球形曲线。问题是,这将只有工作,如果表涵盖 一部分的球体。
一种解决方案类似于用来创建无限网格地板的方法。当球体旋转时,当你移动了半个单元格时,将球体向相应的方向旋转一次。(对于六边形来说,这些数字实际上并不是半个单元格,而是与十六进制瓷砖的尺寸有关。)这在3D 中有点棘手,但是是可行的。
不久前,我在2D 领域也有一个类似的问题,可能会有所帮助。
Https://gamedev.stackexchange.com/questions/70092/infinite-treadmilling-hexagonal-grid/70341#70341
HEAlpix 是正确的,如果你的约束是保持平等的面积时,分裂的球体在片(有趣的覆盖投影面积在天空中相同的两极和赤道区域)。基本上,每次按照环形或嵌套方案将球体分割为4个,以实现层次等面积约束。在天空中“部署”FT 函数((等纬度性质))研究普朗克或 WMAP 任务中 CMB 模式的温度也非常方便。
它也在许多编程语言中实现。
此外,我应该提到另一个(虽然面积不相等) ,称为 Q3C 的’四树立方’,另一个天空分区方案,它有其他优势(锥搜索和 x 匹配)
原件:
译自: 美国《 adsabs.harvard.edu/abs/2006aspc..351..735k 》
我刚刚建立了一个名为 DggridR的 R 软件包,它将地球表面划分为同样大小的六边形,用于垃圾箱空间分析。
卡斯滕在他的回答中让这听起来不可能,但实际上,并非如此。通过引入12个五边形,所有其余的六边形可以毫无问题地组合在一起。因为你可能有数以百万计的细胞为一个高度分辨率的网格,你可以忘记这些五边形的大部分时间。
这种转变的数学原理很复杂,你可以在以下几个方面找到答案:
富勒映射投影与逆的精确方程《制图学》 : 国际地理信息杂志,地理数据可视化43.1(2008) : 67-72。韦伯。
多面体地球的等面积地图投影《制图学》 : 国际地理信息杂志,地理数据可视化29.1(1992) : 10-21。韦伯。
在背景中,dggridR 依赖于 Kevin Sahr 的 DGGrid软件。
此外,你亦可参考以下资料:
有一个 纸张,它处理等面积平铺(几乎赤道周围的正方形瓷砖)的情况,并且相对容易预先计算相邻的瓷砖,并且瓷砖上有一组特定的坐标。但是,它不适用于顶点之间距离相等的要求。
在这里复制摘要:
提出了一种将球面划分为等面积单元的新方法。该方法是将一个球体划分为几个近似恒定跨度的纬向带,然后将每个带进一步划分为等面积的单元。该方法结构简单,提供了比其他球面等面积孤立镶嵌方法更为均匀的纬带之间的纬度步长。
(我用它的想法试图从一长串位置中找到最近的地理位置邻居)。