我有一个问题,我不想实现。我只是想在我的推理中得到一点帮助。
我想确定两个对象是否重叠(它们的 x 和 y 坐标,以及它们的高度和宽度都存储在一个 vector 中),然后,如果重叠,则将它们从当前 vector 中移除并添加到另一个 vector 中组合属性。
我的问题是,一般来说,您如何判断重叠部分?显然,它们可以具有相同的 x 并且由于不同的 y 而不会重叠,反之亦然。我想除了对象边缘的位置之外,我还需要有关宽度和高度的信息,但我目前甚至不知道如何将其转换为伪代码。
如果能帮我解决这个问题,我将不胜感激!
编辑:对象是严格的矩形,坐标遵循像素监视器约定。即0,0为物体的左上角,x增大对应向右,y增大对应向下。
最佳答案
考虑两个矩形 R1 和 R2。
在 x 上的重叠:
if (R2.x < R1.x + R1.width) AND (R1.x < R2.x + R2.width)
在 y 方向重叠
if (R2.y < R1.y + R1.height) AND (R1.y < R2.y + R2.height)
附言。请注意,我使用的是伪语言
关于c++ - 理论 - 如何判断元素是否重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659760/