空间分区

空间分区

目的与常用方法

  1. 常常需要解决的问题:对象的附近存在哪些其它对象?两两比较对象的位置的蛮力算法,复杂度是O(n^2);

  2. 用链表储存同格子对象。同一个格子的对象储存在同一个链表中;

  3. 遍历周围格子:每一个格子只需要遍历其 上方、左上、左侧、左下 四个格子即可;

空间划分

  1. 分区不依赖于对象:将空间均等地分割为若干个分区。其优点有:
    a. 对象可以逐步添加;
    b. 内存的使用量恒定。新增对象不会新增分区;
    c. 可以在对象可以快速移动;
  2. 分区自适应于对象:二叉空间分割(BSPs)和 k-d trees ,递归地将世界分隔开来,以使得每部分包含数目几乎相同的对象。其优点有:
    1. 确保分区间的平衡。
    2. 对整个对象集合进行一次性的分区时更高效;对静态
  3. 分区不依赖对象,层级依赖对象:四叉树/八叉树:若空间中的对象数目超过指定数目,则继续沿着象限/卦限均等划分为4份/8份;

对象只存在于分区容器中吗?

  1. 是的,只用分区来储存对象。避免两个集合带来内存开销和复杂性;
  2. 不是,还有其它容器储存对象。根据不同的需要,以不同的容器遍历对象,会更为快捷便利;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值