良好的数据结构,表示可以放大和缩小的2D地图/网格?

时间:2011-03-28 00:16:09

标签: java data-structures grid 2d zoom

我在java中构建了一个2D网格,其中每个单元格都有一定的属性,比如颜色。在主循环的每次迭代中,该颜色可能会改变。

我希望能做什么:
  - 放大时,它会显示一小部分网格和每个网格的实际颜色   - 当您缩小并一次看到更多细胞时,细胞将开始变得太小而无法单独看到,所以我希望能够将该区域(细胞集合)表示为单一颜色(比如说最多)经常出现在那个集合中)

我想做的一件事就是使用分层树/金字塔结构,在树叶处你有每个单元格。每个父节点都包含其每个子节点的摘要信息。因此,要以高缩放级别绘制地图,我只需要在树中向下几个级别,而不是单独查看每个单元格。然而,从叶子到父母以及随后到每个更高级别的变化的传播似乎在每个循环迭代的大网格中需要相当长的时间。

有更好的方法吗?这个问题似乎应该是以前由图形/游戏领域的人们处理过的,但是我甚至无法向Google找到合适的关键字,所以任何帮助或方向都会受到赞赏。感谢。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

我认为你走在正确的轨道上。您建议的是2D场景图的典型实现并确定父节点的边界。

请记住,即使叶节点可能会改变颜色,由于之前的状态,更改可能不会一直传播。您需要确保做的是跟踪脏叶子,这样就不会在没有必要的情况下对所有内容进行更新。

我认为你应该实施你的建议,然后看看性能是否真的是一个问题。您的网格中有多少个单元格?