碰撞检测技术:blockmap

参考: http://dev.gameres.com/Program/Visual/Effects/pengzhuang.htm

在<StarLoster>中,有500颗星星,要进行250000次的碰撞检测,本来没当回事,因为一次检测只不过是两次乘法,两个减法,一个加法和一个比较的运算量,但实际上确实是贞速率的瓶颈. 用上文的方法的话应该更好:

如果把世界划分成格,每个占据其中的星星都被加入它的链表,只要分别对每个格子链表中的星星做检测就可以了. 这样会比较节省时间.
 
具体地说:
划分格子的数量可以根据星星数来安排,正比关系. starpool[]可以做成静态链表,就是内存池,它提供自己的alloc和free,时间都是O(1). 然后格子的结构中只需提供一个表头结点即可. 应该可以把starpool和grid做成两个对象,它们之间用starpool::alloc()提供的星星指针进行联系. 这种实现不会多用内存,只是每贞都要重新设置链表好象不太爽,不知有没有解决方法~

转载于:https://www.cnblogs.com/euclid/archive/2006/12/19/596819.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值