在网格上计算地面中心

我有一个基于网格的游戏。 主地图是二维数组,里面有地面标识符,像这样(这里是地图上的两个地方,一个是1的forms,一个是2的地方)。

[1,2,2]
[1,1,2]
[1,2,2]

我想在每个土地的中心画建筑物。 但是如何计算中心呢? 只是计算平均值(X),平均值(Y)不起作用 – 地面可以变窄或具有哑铃形状。

我知道这不是你正在寻找的,但这是一个建议。

你可以控制你的土地的一代,迫使他们凸出。

使用这种方法将允许您简单地使用平均值x和平均值y值来确定您的建筑物是否在土地上。

否则,我看到的唯一select是1)在建筑物布局中没有随机性,你可以手动放置它们,或者2)用更复杂的algorithm来确定土地的“中心”:计算平均地点,被测点和邻近地之间的最大的土地或地图的一侧。

(X)和平均值(Y)(这不是一个坏的解决scheme)的每个土地的中心,而是可以计算每个土地周围的矩形边界框:

Land 1: Starting at (0, 0) of size (2, 3) Land 2: Starting at (1, 0) of size (2, 3) 

这样,你可以计算给定矩形的相对中心:

 Land 1: (2 / 2 + 0, 3 / 2 + 0) = (1, 1.5) Land 2: (2 / 2 + 1, 3 / 2 + 0) = (2, 1.5) 

如果你想让你的建筑物与电网alignment,你可以将这些值封闭起来

 Land 1: ceil(1, 1.5) = (1, 2) Land 2: ceil(2, 1.5) = (2, 2) 

这会给你一个很好的近似你的每个土地的中心。 对于小网格来说,逼近不会很准确(如你所见),但是更大的尺寸应该会给出更好的结果。