什么是通过算法绘制六边形网格的最简单方法?我应该如何在数据中呈现它们?
例如,在一个方形网格中,我只需要保存x-y坐标即可...
例如,在一个方形网格中,我只需要保存x-y坐标即可...
有几种方法来管理六角地图坐标,其中大多数不合直觉的坚持将它们映射到x-y坐标系中,这只对渲染很重要。一些极坐标通常是最好的。我有一个perl库,用于管理大多数矢量计算,非常适用于点参考计算,如AI和其他搜索树。
http://en.wikipedia.org/wiki/Polar_coordinate_system
对于便宜的座位,极坐标将一个点作为原点(就像标准的x-y笛卡尔图形),选择一个向量作为基线(与笛卡尔相似),然后指定点为(大小,度数)。1) 每个十六进制数都可以表示为两个相邻向量的和(或者第二个向量是0或单位元素的单个向量)。例如,1a+1b = 1a1b或1b1a。无论哪种方式,它都是对2个十六进制数的遍历,一个大小为2,并指定了从原点(0,0)到唯一十六进制数。 2) 非相邻向量总是可以应用以下规则简化为两个相邻向量: 2) 取反:1A + 1D = 0,1B + 1E = 0,1C + 1F = 0,例如 3) 组合:1A + 1C = 1B,1B + 1D = 1C,1C + 1E = 1D,1D + 1F = 1E,1E + 1A = 1F
记住这些原则,一个必须穿越实际空间的导弹,需要将向量保留为更小的遍历的连接或顺序。1A + 1A + 1C + 1C表示导弹向外行进两个六边形,然后急转弯(120度)并行进两个六边形,结束其遍历,只有2个六边形远但与初始方向偏离60度。针对每一个量级,使用相邻向量的每一种组合填充环。有很多方法可以实现这个过程,但最简单的方式是选择一个向量作为基础,然后在一个适当的方向和轨道上遍历该量级下的六边形。例如:对于量级 3,在点 3E 开始,接着依次遍历 3A、3B、3C、3D、3E、3F,并将每个六边形都计算为前一个所遍历的六边形与新的单个六边形向量之和。
在每个六边形中,应用一些三角函数来计算中心像素相对于原始像素的位置,并渲染该六边形。
希望这能对某些人有所帮助。六边形地图非常棒,但渲染它们有点麻烦。