我在Java工作。我有一个由随机大小的矩形瓷砖组成的大图像。我想在我的程序中存储有关这些图块的信息,在给定矩形边界框的情况下,我可以快速找出哪些图块将落入此矩形内。目前我通过迭代每个tile边界框来检查这个。但我正在寻找一种快速的方法来找到这个,因为瓷砖的数量非常高。
感谢您的帮助。
答案 0 :(得分:1)
如果我正确地理解了你的问题,就会为这种事做成四棵树。它们是一个4元空间分区树。
基本实现是这样的:
现在,当你想要找出搜索矩形中的元素(矩形)时,从这个结构的根开始,逐步向下进入与这个矩形相交的象限,直到到达叶节点,此时你可以检查那些叶子节点内的元素。
另一种更简单的方法,可以更好地处理非常动态的数据(例如:如果你的矩形在每个帧周围移动)是一个固定大小的NxN网格。只需将元素(矩形)插入到它们相交的单元格中即可。搜索时,只需搜索搜索矩形相交的网格单元格内的元素。
四叉树只是一个自适应网格'这个基本思想的延伸。