当前位置: 首页 > 知识库问答 >
问题:

用最小距离(3)为六边形平铺贴图着色的算法

商兴朝
2023-03-14

我需要创建一个十六进制瓷砖地图,最多使用19种颜色,其中每种颜色必须保持至少3瓷砖的距离。然而,我不需要使用所有19种颜色。如果有一种算法可以用少于19种颜色来解决这个距离限制,这是完全可以的。

贝克曼-夸尔斯定理[1]看起来是相关的,有一个7色瓷砖图显示了相同颜色的瓷砖彼此之间保持2的距离。

但是我很难找到一个可以理解的描述,甚至是构建距离为3的十六进制贴图的实现。

[1]http://de.wikipedia.org/wiki/Satz_von_Beckman_und_Quarles

共有1个答案

顾喜
2023-03-14

让我们建立一个坐标系,其中坐标为 (i,j) 的十六进制与 (i-1,j), (i-1,j 1), (i,j-1), (i,j 1), (i 1,j-1), (i 1,j)相邻

(0,3)       (2,2)       (4,1)
      (1,2)       (3,1)
(0,2)       (2,1)       (4,0)
      (1,1)       (3,0)
(0,1)       (2,0)
      (1,0)
(0,0)

我将应用剪切变换,以便用ASCII艺术简洁地绘制十六进制网格。转换后的七进制区域如下所示。

**
***
 **

你要做的是用下面的19色布局平铺飞机。

ABC
DEFG
HIJKL
 MNOP
  QRS

这些瓷砖可以这样拼在一起。

   111
   1111
00011-11
00001111333
00-001113333
 000022233-33
  00022223333555
     22-223335555
      222244455-55
       22244445555
          44-44555
           4444
            444

我用-标记了图块中心。它们形成了一个由两个向量生成的格子:(5,-3)(3,2)。给定十六进制坐标(i, j),我们可以(也许不优雅地)求解矩阵方程

[5 -3] [u]   [i]
[3  2] [v] = [j]

在rational变量< code>u,v中,然后,分别尝试将< code>u和< code>v的所有四个整数舍入到附近的整数< code>u*和< code>v*,确定< code>(i,j)位于哪个图块中,并在图块中心处应用适当的颜色

[5 -3] [u*]
[3  2] [v*].
 类似资料:
  • 我要做的是找出在一个六角网格上,两点之间有多少个六边形。我试着在网上搜索一个公式,但我无法找到一个匹配类型的十六进制网格我正在使用。

  • 我有一个六边形网格,就像图中的一样,我试图找到最简单的方法(也许是一个公式)来计算这个网格内两个六边形之间的距离。当然,我的网格的大小比这更大,但是当我们计算规则网格(有水平和垂直轴)中两个节点之间的距离时,我试图找到一个类似于欧几里得距离公式的公式。 我读了一些方法,但他们都说Y轴应该是60度,然后他们提供了一些公式(六角网格中瓷砖之间的曼哈顿距离)。是否有一种方法来计算距离使用“坐标系”相同,

  • 改变这个.. 对此..

  • 我有一个多边形类型的几何体,我正在计算一个点的最小距离可能在多边形几何体内部(由360个点组成,作为闭合几何体)或多边形几何体外部。使用postgis的ST_distance方法,当点在几何体外部时,我得到精确的距离,但如果点在几何体内部,则得到0作为距离,我想要与多边形几何体最近点的点之间的最小距离,无论该点位于几何体内部还是外部。

  • 我想让我的libgdx地图滚动,但我不知道代码使地图滚动,请大家帮助我,我想让地图滚动像flappy bird游戏,这是我的代码,显示在屏幕上的地图 }