我需要创建一个十六进制图块地图,最多使用19种颜色,其中每种颜色必须保持至少3个图块的距离。但是,我不需要使用所有19种颜色。如果存在一种用少于19种颜色解决这个距离约束的算法,这是完全正常的。
Beckman-Quarles定理[1]看起来相关,并且显示了一个7色瓷砖地图,其中相同的彩色瓷砖彼此保持2的距离。
但我很难找到一个可理解的描述,甚至是用于构建距离为3的六角形瓷砖地图的实现。
[1] http://de.wikipedia.org/wiki/Satz_von_Beckman_und_Quarles
答案 0 :(得分:1)
让我们设置一个坐标系,其坐标为(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艺术紧凑地绘制六角网格。转换后的7-hex区域看起来像这样。
**
***
**
您要做的是使用以下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]
在理性变量u, v
中,然后分别尝试将u
和v
的所有四个整数舍入到附近的整数u*
和v*
,确定哪个区块(i,j)
位于并应用适当的颜色,其中瓷砖中心位于
[5 -3] [u*]
[3 2] [v*].