Spaces:
Build error
Build error
export { intersectRect }; | |
function intersectRect(node, point) { | |
var x = node.x; | |
var y = node.y; | |
// Rectangle intersection algorithm from: | |
// http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes | |
var dx = point.x - x; | |
var dy = point.y - y; | |
var w = node.width / 2; | |
var h = node.height / 2; | |
var sx, sy; | |
if (Math.abs(dy) * w > Math.abs(dx) * h) { | |
// Intersection is top or bottom of rect. | |
if (dy < 0) { | |
h = -h; | |
} | |
sx = dy === 0 ? 0 : (h * dx) / dy; | |
sy = h; | |
} else { | |
// Intersection is left or right of rect. | |
if (dx < 0) { | |
w = -w; | |
} | |
sx = w; | |
sy = dx === 0 ? 0 : (w * dy) / dx; | |
} | |
return { x: x + sx, y: y + sy }; | |
} | |