Есть четыре случая.
- Rect находится за пределами Poly
- Rect пересекает Poly
- Rect находится внутри Poly
- Поли внутри Rect
Во-первых: проверьте произвольную точку в вашем Rect против Poly (см. Point in Polygon). Если это внутри, вы сделали, потому что это либо случай 3 или 2.
Если это за пределами, исключается случай 3.
Второе: сопоставьте произвольную точку вашего Поли с Rect, чтобы проверить / исключить случай 4.
В-третьих: проверьте линии вашего Rect относительно Poly для пересечения, чтобы подтвердить / исключить вариант 2.
Это также должно работать для полигонов и полигонов (выпуклых и вогнутых), но таким образом это более читабельно.