这是问题所在: 我有地板。我得到了n个图块的数组,这些图块由左下角和右上角(x1,y1,x2,y2)的坐标定义。我必须检查任何两个图块是否重叠。最快的算法是什么?我假设您会按x或y(或其他方式)对数组进行排序,但是我不知道如何从那里继续。 预先谢谢你!
编辑:为了澄清,我知道如何检查2个图块是否重叠,我需要快速检查所有图块。最简单的解决方案是检查瓦片的每个组合,但这浪费了时间和资源,我想知道最快的方法是什么。
答案 0 :(得分:0)
您有两个类似的方块:
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,则表示重叠。