Rectangular love
https://www.interviewcake.com/question/javascript/rectangular-love
by eitanp461
JavaScript
var rectangle = {
// coordinates of bottom-left corner
leftX: 1,
bottomY: 5,
// width and height
width: 10,
height: 4,
},
intersectingRectangle = {
leftX: 7,
bottomY: 7,
width: 9,
height: 5,
},
nonintersectingRectangle = {
leftX: 14,
bottomY: 11,
width: 9,
height: 7,
};
function coords(rect) {
return {
x1: rect.leftX,
x2: rect.leftX + rect.width,
y1: rect.bottomY - rect.height,
y2: rect.bottomY
}
}
function intersect(rect1, rect2) {
var rect1Coords = coords(rect1);
var rect2Coords = coords(rect2);
var x1 = Math.max(rect1Coords.x1, rect2Coords.x1);
var x2 = Math.min(rect1Coords.x2, rect2Coords.x2);
if (x2 <= x1) {
throw new Error(`No intersection x1=${x1} x2=${x2}`);
}
var y1 = Math.max(rect1Coords.y1, rect2Coords.y1);
var y2 = Math.min(rect1Coords.y2, rect2Coords.y2);
if (y2 <= y1) {
throw new Error(`No intersection y1=${y1} y2=${y2}`);
}
return {
leftX: x1,
bottomY: y1,
width: x2 - x1,
height: y2 - y1,
}
}
console.log(intersect(rectangle,intersectingRectangle));
console.log(intersect(rectangle,nonintersectingRectangle));