【发布时间】:2020-11-19 22:21:23
【问题描述】:
我有两个保证不重叠的矩形。
但是,我需要知道它们是否彼此相邻,以及它们是否以两个或更多单位相互接触。例如,以下矩形相距 4 个单位。
在上面的例子中,我比较了以下内容:
rect1 = {
x: 4,
y: 4,
width: 3,
height: 5
}
和
rect2 = {
x: 7,
y: 1,
width: 4,
height: 7
}
我目前正在尝试通过几个嵌套的 if/else 语句来实现这一点,但我知道会有更合适的方法。
什么是完成此任务的有效方法?
免责声明:
我在标题中使用了 overlap 这个词,因为我不确定如何描述它,即使它们实际上并不重叠。
【问题讨论】:
-
你可以做这样的检查 a.x > (b.x + b.w) || (a.x + a.w) (b.y +b.h) ||(a.y + a.h)
-
您要使用的术语是“相邻”:您想知道两个矩形是否相邻,如果相邻,则相邻是否覆盖两个或多个单元。话虽如此,如果您已经有工作代码,并且想知道如何改进它,那么 SO 不是问的地方。相反,你想要codereview.stackexchange.com
-
坦率地说,我认为一堆 IF 语句将是最有效的方法。你只比较几个数字,一些加法,就是这样。没有内存分配,没有函数调用,什么都没有。我会选择 IF。
-
@StefanAvramovic 您的代码到底在做什么?它看起来更像是检查重叠对象的代码。
-
@Mike'Pomax'Kamermans - 还没有完全工作。我正在研究它,并对所有嵌套感到困惑,我意识到我应该检查一下是否有更简单的解决方案。
标签: javascript overlap