如何找到3D矢量的哈希值?

时间:2010-04-06 02:30:04

标签: floating-point hashmap hash vector-graphics

我正在尝试使用固定网格尺寸方法执行宽相位碰撞检测。因此,对于每个实体的位置:(x,y,z)(每个类型为float),我需要找到实体所在的单元格。然后我打算将所有单元格存储在哈希表中,然后迭代通过报告(如果有的话)碰撞。

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

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

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

由于

4 个答案:

答案 0 :(得分:1)

如果有人仍然对此感兴趣,我想出了一个适用于此的解决方案:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

速度非常快,位旋转有助于减少碰撞并确保尽可能多地使用关键空间。

答案 3 :(得分:0)

以下是您可以查看的一些参考资料。 Warren的论文详细讨论了哈希算法:

A parallel hashed Oct-Tree N-body algorithm

A portable parallel particle program