Как определить, пересекаются ли два прямоугольника, прямоугольники могут быть повёрнуты, как угодно, координаты точек каждого прямоугольника известны
Как определить, пересекаются ли два прямоугольника, прямоугольники могут быть повёрнуты, как угодно, координаты точек каждого прямоугольника известны
Ответы (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
Попарно проверяем стороны прямоугольника на пересечение.