5

我正在尝试使用固定网格大小的方法执行宽相碰撞检测。因此,对于每个实体的位置:(x,y,z)(每个类型都是浮点数),我需要找到实体所在的单元格。然后我打算将所有单元格存储在哈希表中,然后遍历报告(如果有的话)碰撞。

所以,这就是我正在做的事情:网格单元的位置:(int type)(Gx,Gy,Gz)=>(x / M,y / M,z / M)其中M是网格的大小。

有一次,我有一个单元格,我想将它添加到哈希表中,其键是基于 (Gx, Gy, Gz) 的唯一哈希,值是单元格本身。现在,我想不出一个好的散列函数,我需要一些帮助。

有人可以建议我一个好的哈希函数吗?

谢谢

4

4 回答 4

1

如果有人仍然对此感兴趣,我想出了一个可以在这里工作的解决方案:

http://www.gamedev.net/community/forums/topic.asp?topic_id=567378

于 2010-04-11T03:35:30.700 回答
0

网格方法在网格框的边界附近会出现问题。为什么不使用 BSP 树呢?

于 2010-04-11T03:48:05.270 回答
0

对于这种向量,我首选的散列函数是将每个分量的位旋转不同的常数并将它们异或在一起。

它非常快,并且位旋转有助于减少冲突并确保使用尽可能多的密钥空间。

于 2010-08-16T12:23:44.173 回答
0

这里有一些你可以看的参考资料。Warren 的论文详细讨论了哈希算法:

一种并行散列的 Oct-Tree N-body 算法

一个可移植的并行粒子程序

于 2011-11-14T18:56:04.710 回答