c++ - 理论 - 如何判断元素是否重叠?

标签 c++ vector collision-detection theory

我有一个问题,我不想实现。我只是想在我的推理中得到一点帮助。

我想确定两个对象是否重叠(它们的 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/

相关文章:

c++ - 解决标准的新/删除运算符

java - 将第三方 dll 链接到我的 dll

c++ - 值从 QVector 中消失

javascript - 如何防止可拖动的子元素相互拖动?

c++ - 使用 4 和 8 线程运行的相同时间执行

c++ - 如何使用 emplace 在 C++ 中添加 map ?

c++ - 如何将 vector 中的数据添加到cv::Mat?

c++ - vector 增长时如何强制执行 move 语义?

java - 针对下面列出的特定用例处理 HashMap 中的冲突

swift - spritekit 快速碰撞检测不起作用