Questions tagged «kd-tree»

1
什么是kd树相交逻辑?
我试图弄清楚如何实现KD树。 在Ericson的“实时冲突检测”的第322页上 如果Google图书预览在您单击链接时看不到它,则下面包含文本部分 文字部分 相关部分: 将光线或直线段与kd树相交的基本原理很简单。将该线与节点的分割平面相交,并计算相交的t值。如果t在直线的区间内,即0 <= t <= tmax,则直线横跨平面,并且树的两个子级都递归下降。如果不是,则仅递归访问包含片段原点的一侧。 所以这就是我所拥有的:(如果看不到字母,请在新标签页中打开图像) 逻辑树 在这里,橙色射线穿过3d场景。x代表与平面的交点。从左侧,射线击中: 场景的封闭立方体的正面, (1)分裂平面 (2.2)分割平面 场景的封闭立方体的右侧 但是,天真地遵循了上面的Ericson的基本描述,这就是会发生的事情: 针对分裂平面(1)进行测试。射线束照射到分裂平面(1),因此下一个测试中将包含分裂平面(1)的左右子级。 针对分裂平面(2.1)进行测试。雷实际上击中了那架飞机(向右偏),所以两个孩子都被包括在下一级别的测试中。(这是违反直觉的-在后续测试中不应仅包括底部节点) 有人可以描述橙色光线正确穿过场景时会发生什么吗?

2
全动态KD树与四叉树?
在开发游戏时,我正处于需要跟踪世界上所有单位的地步,以便可以进行最近邻检查以进行战斗。这是一款类似于RTS的游戏,可能有成千上万的小型自动化单位在移动。 我一直在研究KD树和四叉树(尤其是点四叉树)。我仍在尝试了解它们如何工作的详细信息,但是到目前为止,Point Quadtree对我来说最有意义。但是,我的印象是KD-Trees的搜索速度更快,这对我在树中拥有的点数很重要。 另一方面,就我而言,我将跟踪大量始终在移动的单元。从一帧到另一帧,它们的位置将始终不同。四叉树显然比KD-Trees重平衡更快,但是我不知道当您重新平衡树中的每个点时是否适用。 我想知道在这种情况下,最好只是逐帧废弃树并从头开始重建它,而不是尝试重新平衡树中的每个点?如果Quadtree重新平衡的速度更快,是否也意味着从头开始构建的速度更快?如果是这样,那对性能而言可能比KD-Tree的搜索速度更重要,这取决于创建树的负担,但我不知道...
11 rts  quadtree  kd-tree 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.