这是我在这些论坛上的第一个问题:)
我正在用Java编写一个空间八叉树体素系统的坐标类.这些坐标不是浮点坐标,它们是进入八叉树的4D整数索引(3个正常尺寸X,Y,Z和第四个深入到树中).前3个值都是短路,最后一个维度是一个字节.在实际使用中,现在只使用短路的前11位,只有3位的字节,但这可能会有所改变.
现在我正在尝试为这个类写一个'好'的哈希函数.我正在努力解决的问题是坐标通常会用于高度空间连贯的情况(希望我在那里使用正确的术语).我的意思是,通常会将坐标与其紧邻的邻居和其他附近坐标进行散列.
是否有一种有效的做法可以使这些"彼此靠近"的坐标产生明显不同的哈希码?
像许多有抱负的设计师和程序员一样,我偶然发现了实体/组件系统设计,包括关于该主题的各种优秀文章以及一些有效的实施方案.我和许多其他人一样,自己实施了这样一个系统.
从概念上讲,实体是一个组件包,它只不过是由一系列系统处理的数据包.所以我认为Entity对象可用于保存与之关联的所有组件,但其他人的工作则另有说法.在我的所有研究中,似乎几乎普遍认为实体只不过是一个ID,你必须不惜一切代价避免陷入面向对象思维的陷阱.他们建议将组件存储在管理器中,而不是直接解决这种设计的优点.
这两种设计,实体中保存的组件与管理器中的组件不会产生相同的最终结果吗?如果我误解/遗漏某些东西,请告诉我.