我知道如何检查一个X,Y点是否在单个矩形区域内,但是如果有多个可能重叠的区域(这些区域将具有X、Y、宽度、高度、Z索引(或x1、y1、x2、y2,如果更容易存储,我对存储方式不挑剔)),是否有有效的算法可以确定该点是否在其中一个区域内,而无需遍历每个区域。我希望有一种不需要重新计算时间长的算法来添加或删除区域,但这种情况比查找要少见。谢谢!
你可以将区域存储到Quadtree(如果是3D,则为Octree)中。这将帮助您在进行真正的碰撞测试之前拒绝大多数区域。如果您有多个图层,只需每个图层使用一个四叉树,并根据点所在的图层使用相应的四叉树即可。