Check if a rectangle overlaps another one
Two rectangles overlap when they overlap on both axes.
function overlaps({ a, b }) { return a.x1 < b.x2 && b.x1 < a.x2 && a.y1 < b.y2 && b.y1 < a.y2; }
Input & expected output
Input
{
"a": {
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 4
},
"b": {
"x1": 2,
"y1": 2,
"x2": 6,
"y2": 6
}
}Expected output
trueThe edge case
Input
{
"a": {
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 4
},
"b": {
"x1": 5,
"y1": 0,
"x2": 6,
"y2": 4
}
}Expected output
falseKnow the limits
- The original combined the axes with ||, so rectangles side by side at different heights counted as overlapping. Both axes must overlap.
- Touching edges do not overlap.
The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.
Source & maintenance
Based on Check if a rectangle overlaps other one from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.
Requires overlap on both axes; the original combined the axes with ||, reporting side-by-side rectangles as overlapping. Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Convert degrees to radians — Multiply by π and divide by 180.
- Check if a rectangle contains another one — Compare corners: a contains b when b’s corners sit inside or on a’s edges.
- Calculate the angle of a line defined by two points — Use Math.atan2 for the angle from the x axis, in radians or degrees.