四叉树表演:正方形与矩形?

时间:2018-03-18 04:15:43

标签: performance quadtree

对于我正在写的游戏,我在非方形地图上使用四叉树。四叉树用于在给定的最大值内查找相邻单位以进行碰撞检测,攻击敌人,最近的基地等。半径(圆圈)。

我想知道的是,如果由四边形而不是正方形构成四叉树的性能问题?矩形地图不是将方形地图划分为正方形,而是在四叉树中划分为相同大小的矩形。

矩形地图上的方形四叉树:将创建一个填充整个地图的四叉树,但根据地图的方向(水平与垂直)在左侧或底部使用空/非使用区域。这将需要更多的填充方块(?),并且在搜索期间也可能对性能产生影响?

与矩形地图匹配的矩形四叉树:四叉树将完美地填充地图。但是,这样做会影响性能吗?鉴于我们搜索使用的是适合方形而不是矩形的半径,可能会导致搜索速度变慢?另外,宽度和宽度都是高度必须存储在每个四叉树节点中,因为它们是非方形的。

问题: 将四叉树转换成方形更好吗?我认为使用矩形的城市可能没事,但我不确定?

截图(矩形四叉树)Rectangular Quadtree

1 个答案:

答案 0 :(得分:0)

我确定两种选择都没问题。从您的示例来看,您的数据集看起来相当小,只有几十个条目,可能是100?

需要考虑的一些事项:

  • 如您所述:矩形需要单独的'长度'表示x和y。效果可能很小,但每增加一点信息都会降低结构速度,因为更多的数据必须移动到CPU并通过CPU。
  • 如果要在四叉树中存储(通常)直接在矩形边框上的对象,则需要小心正确实现四叉树:
    • 插入:在四个四角形的角落插入一个项目,它会插入哪个?
    • 查询/查找:反向插入,任何以边界结尾的搜索都可能(不必要地搜索所有相邻的qaudrants,这可能很昂贵。

总之,问题可能不是关于方形/矩形四叉树,但是当数据通常位于象限边界时应该小心。