Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Проверить, пересекаются ли два прямоугольника


Автор: Kostt 28.10.2007, 08:51
Как быстро проверить, пересекаются ли два плоских прямоугольника? Или по крайней мере, быстро установить факт того, что они не пересекаются (в рамках моей задачи, они пересекаться будут редко)

Автор: maxim1000 28.10.2007, 09:54
стороны параллельны координатным осям или могут быть направлены произвольно?

Автор: ksili 28.10.2007, 10:22
Если они пересекаются, значит пересекаются их стороны. Смотри в сторону пересечения отрезков. надо будет сделать 15 попарных проверок (максимум). Вообще 16 должно быть проверок, но если подумать, то одним отрезком они точно пересекаться не могут (то есть, я так понимаю, у прямоугольников должна быть общая площадь)

Автор: Kostt 28.10.2007, 11:56
Стороны параллельны осям координат. Попарные проверки слишком долго, наверняка есть способ проще

Автор: ksili 28.10.2007, 12:22
Если сторону параллельны осям, то вообще ничего сложного не вижу.
Пусть прямоугольники заданы как коорд-ты противоположных углов - левый нижний и правый верхний: Прям1=(x11,y11,x12,y12), Прям2=(x21,y21,x22,y22)
Тогда если  x11<x22 и x12>x21 и y11<y22 и y12>y21, то пересечение есть

Автор: paladin80 7.6.2008, 09:14
ksili, спасибо большое за условия! Все работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)