如何检查 n 个给定的磁贴中是否有任何重叠
How to check if any of the n given tiles overlap
这是问题所在:我有发言权。我得到了一个由 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,则重叠。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 如何在c/c++中检查两个任意内存范围是否重叠
- 是否有快捷方式重叠运算符?
- 多个线程/进程是否可以在不同步的情况下同时从/写入文件的非重叠区域?
- 如何检查 n 个给定的磁贴中是否有任何重叠
- Xlib.检查窗口是否重叠
- 检查两个矩形是否重叠或边缘是否接触
- 测试方形是否与 C++ 中带有 DirectX 的多边形重叠(可选)
- std::copy_n 是否适用于重叠范围?
- 在读取期间,非重叠串行端口连接是否会阻止写入(反之亦然)
- 如何在c++中检查两个或多个时间段是否重叠
- 是否允许 memcpy 的 src 和 dest 参数重叠
- 缓冲区中的TCP数据是否可以重叠
- malloc()是否可以分配一个与使用mmap()分配的另一个缓冲区重叠的缓冲区
- 是否可以有效地计数与数字线上的单个点P重叠的线段的数量
- 存储一组不重叠的范围,并严格查找一个值是否存在于任何一个范围中
- 如何确定一组矩形是否包含两个重叠区域
- 在小于0 (N)的时间内找出点是否在N个(可能重叠)矩形中的一个内
- Qt:是否允许非矩形QWidget重叠