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 }; | |
| } | |