获取图案中的图块

时间:2014-06-19 23:01:31

标签: algorithm geometry

我有一个大的瓷砖网格,我想在特定区域选择一堆瓷砖。瓷砖的选择将从黑色瓷砖开始。

enter image description here

我拍了一张照片来说明我想要的瓷砖。我唯一拥有的是中心瓷砖。正如您在图片中看到的那样,从中心到边界瓷砖的距离是曼哈顿距离。

这是对算法需要的解释。中心瓷砖和距离。

std::vector<Tile*> getTilesInArea(Tile *centerTile, int distance)
{
    // Do calculation and return a vector with the wanted tiles
}

请注意。距离是瓷砖。正如您在图像上看到的那样,距离为10(距离中心区域每个方向10个方块)。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

假设每个区块都有指向它的邻居,上,下,右,左,这里是伪代码的基本思想。

getTilesInArea(centerTile, distance):
    returnVector <- {}
    l = centerTile
    r = centerTile
    for (i = 0; i < distance; i++) 
        l = l.left
        r = r.right

        traverseUpDown(returnVector, l, distance-i)
        traverseUpDown(returnVector, r, distance-i)

    return returnVector



traverseUpDown(vector, tile, count):

    vector.add(tile)
    u = tile
    d = tile

    for (i=0; i<count; i++)
        u = u.up
        d = d.down
        vector.add(u)
        vector.add(d)