diff --git a/lib/geo/box.go b/lib/geo/box.go index de9b36cff..de9f3af0a 100644 --- a/lib/geo/box.go +++ b/lib/geo/box.go @@ -83,3 +83,9 @@ func (b *Box) Contains(p *Point) bool { return !(p.X < b.TopLeft.X || b.TopLeft.X+b.Width < p.X || p.Y < b.TopLeft.Y || b.TopLeft.Y+b.Height < p.Y) } + +func (b1 Box) Overlaps(b2 Box) bool { + // https://silentmatt.com/rectangle-intersection/ + return (b1.TopLeft.X < (b2.TopLeft.X + b2.Width)) && ((b1.TopLeft.X + b1.Width) > b2.TopLeft.X) && + (b1.TopLeft.Y < (b2.TopLeft.Y + b2.Height)) && ((b1.TopLeft.Y + b1.Height) > b2.TopLeft.Y) +}