我最近了解了二进制空间分区树及其在3d图形和碰撞检测中的应用。我还简要地阅读了与四叉树和八叉树相关的材料。什么时候你会在bsp树上使用四叉树,反之亦然?它们可以互换吗?如果我有足够的信息来填写这样的表格,我会很满意:
| BSP | Quadtree | Octree
------------+----------------+-------
Situation A | X | |
Situation B | | X |
Situation C | | | X
A、B和C是什么?
背景:正如这里所讨论的:无界空间中快速二维碰撞检测我正在研究一种用于模拟的碰撞检测算法。使这种情况独一无二的是,模拟中的对象都可能位于一个非常小的区域(例如,1000x1000)或一个非常大的区域(例如,9 bil x 10 bil)。而且,像这样的变化可能会很快发生,因为物体速度很高,所以我需要一个比较复杂的算法来处理这种情况。最后,我使用了四叉树(http://en.wikipedia.org/wiki/Quadtree)。当我写完这个四叉树类并确定它是否正常运行时,我将它上传到我的模拟中。
问题是:起初,四叉树工作得很好。我只是第一次测试它,所以不是每次用最小x值/最大x值/最小y值/最
由于非常好的并发原语,我目前正在使用go来实现游戏服务器。这一切都是很容易实现和工作非常可靠的。不过,我主要来自Java背景,而且我很难忘记Java的类型层次结构。我需要一个游戏对象集合,这些对象都共享一个类似的数据结构,如位置、速度等,但是它们在更新方法中都可能有不同的行为,或者允许不同的功能。最初,我有一个包含所有共享数据的结构,每个自定义类型都会嵌入该结构。问题是使用数据结构来组织。我使用四叉树来保持客户端对附近对象状态的通知。通过这种方式,我可以传递树,指向每个游戏对象的嵌入结构的指针,一切都可以工作。
问题是,一旦查询了四叉树,我就无法访问包含的类型。例如,
type GameObj