我有一个具体问题。我在mysql中的数据(map)如下
id table_row table_col tile_type
1 1 1 0
2 2 1 0
3 3 1 0
... ... ... 0
512 512 1 0
513 1 2 0
514 2 2 0
515 3 2 0
... ... ... 0
... 512 2 0
... 1 3 0
... 2 3 0
... 3 3 0
... ... ... 0
... 512 3 0
... 1 4 0
map 是512*512。我需要想出一种从中心(或接近中心 256*256)点选择图 block 的算法。所以它应该看起来像
256*256 first - once selected we can update tile_type to 1
255*256 second - update tile_type to 1
256*255 third - update tile_type to 1
257*256 fourth - update tile_type to 1
256*257 fifth - update tile_type to 1
等或类似的,但它必须开始从中心向外向各个方向填充瓷砖(可以是随机的)。任何想法表示赞赏
最佳答案
您的问题缺少一些细节,但我假设您正在询问一种生成靠近 512x512 网格中心的 id
的方法。
您的网格似乎是以特定方式枚举的:每一列都以 table_row
值的递增顺序枚举,并且列的枚举以 table_col
的递增顺序完成> 值(value)观。
因此,我们已经可以知道table_row
和table_col
值为256的单元格的id
:它是 255 x 512 + 256
。这是正确的,因为在为 table_col
值 256 开始枚举之前枚举了 255 个完整列,并且这些列中的每一列都有 512 行。最后,在此列中,我们对第 256 行感兴趣。
更通用的版本如下所示。
((num_cols + 1) / 2 - 1) * num_rows + (num_rows + 1) / 2
您不需要太在意 +1 和 -1:它们只是处理奇数 num_rows 和 num_cols 值的数字技巧。
无论如何,要引入邻近度量,您可以只使用两个随机变量。随机变量 P
可以用列表示到中心的距离。 (即生成的 id
点的 table_col
距离网格中心的 table_col
值有多远)另一个随机变量Q
可以表示到行中心的距离。
((num_cols + 1) / 2 - 1 + P) * num_rows + ((num_rows + 1) / 2 + Q)
然后您可以根据需要生成 P 和 Q 的值,并获取距网格中心 P 列 Q 行的单元格的 id
。
关于mysql - 在512 * 512 map 中选择向外中心点的瓦片的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47030978/