如何检查 n 个给定的磁贴中是否有任何重叠

How to check if any of the n given tiles overlap

本文关键字:是否 重叠 任何 何检查 检查      更新时间:2023-10-16

这是问题所在:我有发言权。我得到了一个由 n 个图块组成的数组,这些图块由左下角和右上角的坐标(x1、y1、x2、y2(定义。我必须检查是否有任何两个瓷砖重叠。最快的算法是什么?我假设您会按 x 或 y(或其他方式(对数组进行排序,但我不知道如何从那里继续。提前谢谢你!

编辑:只是为了澄清,我知道如何检查2个瓷砖是否重叠,我需要的是快速检查所有瓷砖。最简单的解决方案是检查瓷砖的每个组合,但这会浪费时间和资源,我想知道最快的方法是什么。

你有两个这样的块:

blockA = {x1, y1, x2, y2}
blockB = {x3, y3, x4, y4}

然后,做,

(blockA.x1 - blockB.x4) * (blockA.x2 - blockB.x3) = X
(blockA.y1 - blockB.y4) * (blockA.y2 - blockB.y3) = Y

如果 X <0 且 Y <0,则重叠。