Как определить, пересекаются ли два прямоугольника, прямоугольники могут быть повёрнуты, как угодно, координаты точек каждого прямоугольника известны

Как определить, пересекаются ли два прямоугольника, прямоугольники могут быть повёрнуты, как угодно, координаты точек каждого прямоугольника известны


Ответы (1 шт):

Автор решения: Danis

функция проверки пересечение двух отрезков:

def f(p0, p1):
    v1 = (p1[1][0]-p1[0][0])*(p0[0][1]-p1[0][1])-(p1[1][1]-p1[0][1])*(p0[0][0]-p1[0][0])
    v2 = (p1[1][0]-p1[0][0])*(p0[1][1]-p1[0][1])-(p1[1][1]-p1[0][1])*(p0[1][0]-p1[0][0])
    v3 = (p0[1][0]-p0[0][0])*(p1[0][1]-p0[0][1])-(p0[1][1]-p0[0][1])*(p1[0][0]-p0[0][0])
    v4 = (p0[1][0]-p0[0][0])*(p1[1][1]-p0[0][1])-(p0[1][1]-p0[0][1])*(p1[1][0]-p0[0][0])
    return (v1*v2<0) and (v3*v4<0)

Далее как сказал @Igor

Попарно проверяем стороны прямоугольника на пересечение.

→ Ссылка