二维空间索引问题:
您将什么称为本质上是无限*四叉树的数据结构,其节点既不包含绝对坐标也不包含绝对比例——其中每个节点的坐标系已归一化为单位平方 (0,0)-(1,1 ), 哪个顶级节点不是绝对固定的?
当然,它是一个四叉树——但它是什么类型的四叉树?(有一个通用名称吗?我在文献中看到了几十种命名和定义的四叉树,但不是这个特定的。)
为了渲染一个场景,你会得到一些起始节点(不一定是根节点)、它的像素大小以及它在屏幕上的位置。然后,您通过使用当前变换矩阵缩放其坐标来绘制节点内的所有对象,您将其压入堆栈并在沿着树向下时减半。因此,节点的绝对坐标仅在渲染期间通过临时工作变量可用,并且不包含在数据结构本身中。
如果一个节点内的对象移动到节点之外(例如,在单位正方形之外),您将它传递给父节点以重新分配给另一个节点。如果一个物体变得碎片化(例如,一颗被子弹击中的小行星),较小的部分将传递给子节点,子节点必须适当地缩放坐标以保持每个节点内的单位平方归一化。
这里与空间索引中使用的传统四叉树实现的主要区别在于对象的坐标始终相对于包含它们的节点的坐标系。这种相对主义不仅适用于位置,也适用于规模。
* Infinite 缺少绝对坐标;当用于绝对定位时,即使是双精度浮点坐标也会限制位置和大小。