Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверить, пересекаются ли два прямоугольника, Максимально быстро 
:(
    Опции темы
Kostt
Дата 28.10.2007, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 8.1.2006
Где: Томск

Репутация: нет
Всего: 3



Как быстро проверить, пересекаются ли два плоских прямоугольника? Или по крайней мере, быстро установить факт того, что они не пересекаются (в рамках моей задачи, они пересекаться будут редко)
PM MAIL   Вверх
maxim1000
Дата 28.10.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



стороны параллельны координатным осям или могут быть направлены произвольно?


--------------------
qqq
PM WWW   Вверх
ksili
Дата 28.10.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 2
Всего: 17



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


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Kostt
Дата 28.10.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 8.1.2006
Где: Томск

Репутация: нет
Всего: 3



Стороны параллельны осям координат. Попарные проверки слишком долго, наверняка есть способ проще
PM MAIL   Вверх
ksili
Дата 28.10.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 2
Всего: 17



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


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
paladin80
Дата 7.6.2008, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 7.6.2008

Репутация: нет
Всего: нет



ksili, спасибо большое за условия! Все работает.

Это сообщение отредактировал(а) paladin80 - 7.6.2008, 09:14
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.