【问题标题】:Generate an (almost) hexagonal planet with 30*s²+2 cells?生成一个(几乎)具有 30*s²+2 个细胞的六边形行星?
【发布时间】:2020-03-12 07:12:14
【问题描述】:

在查看正在开发的游戏“Songs of the Eons”的wiki 时,我看到声称地球上生成的瓷砖数量可以通过以下方式计算出

30*s²+2

其中s 是行星大小。 他们还说,这个星球几乎都是由六边形构成的,而只有 12 个五边形。

我对细分技术(如 root-3 细分)有所了解,但对此我完全迷失了。

我浏览过thisthis,但我没有注意到给出答案的那个。最接近的可能是this,但它的磁贴编号仍然不同。

有人知道这是怎么做到的吗? 一些论文或源代码会很棒。

【问题讨论】:

    标签: c# algorithm math geometry


    【解决方案1】:

    top answer in your second link 的其中一个 cmets 提到了这是如何完成的:通过细分二十面体的三角形面来创建球体。生成的三角形可以分组为六边形。一些六边形将穿过边缘。原始面的尖端的三角形只能组合成五边形。

    基础构造 (s = 1) 将为您提供规范的 football 镶嵌。随着尺寸的增加,您会得到:


    对于二十面体的 12 个顶点中的每一个,您都会得到一个五边形。对于二十面体的 30 个边中的每一个,你得到 (s − 1) 个六边形。随着 s 每增加 1,全六边形(白色)的数量增加 3·(s - 1)。对于 s = 1,您只有一个完整的六边形。因此,对于二十面体的 20 个面中的每一个,您会得到:

        H = 1 + 3·∑(k = 1 ... s) k
    = 1 + 3/2 (s − 1)·s

    总共:

        T = 30·(s − 1) + 20·(1 + 3/2 (s − 1)·s) + 12
    = 30·s − 30 + 20 + 30·(s − 1)·s + 12
    = 30·s2 + 2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 2014-10-16
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      相关资源
      最近更新 更多