Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Расстояние между прямоугольниками, на плоскости 
:(
    Опции темы
Rockie
Дата 18.10.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Здравтсвуйте!

Есть площадь для рисования, на ней создаются прямоугольники. Стороны располагаются параллельно осям x и у. Координаты известны.

Необходимо определить расстояние между этими прямоугольниками(есть минимальный предел, на который они не должны сближаться).

Как по вашему это лучше сделать?


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Rockie
Дата 18.10.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Пока что пришел к такому варианту. 

user posted image

То есть увеличиваем стороны прямоугольника на расстояние минимального предела. А вершины помещаем в окружности радиуса заданного предела. далее проверяем, не входят ли вершины второго прямоугольника в пять получившихся таким образом прямоугольников. а также не входят ли вершины другого прямоугольника в одну из четырех окружностей вокруг вершин первого. если не входят - прямоугольники на дозволенном расстоянии друг от друга.

Так задача сводится к вхождению точки в прямоугольник и к задаче вхождения точки в окружность, а это уже вроде бы существующие алгоритмы.

Жду ваших идей, поправок.




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Rockie
Дата 18.10.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Тэкс. Принадлежность полигону нашел, приведу позже. Проблемы с принадлежностью точки кругу. подскажите пожалуйста формулу. help!


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
cardinal
Дата 18.10.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



круг как описан: радиус+точка центра?

Тогда
расстояние (точка-точка центра круга) < радиус => точка в кругу
расстояние (точка-точка центра круга) = радиус => точка на кругу
расстояние (точка-точка центра круга) > радиус => точка вне круга


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Rockie
Дата 18.10.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



cardinal, круг описан как точка центра и радиус. Но точка центра круга не в 0.0. Нужно задать смещение?

Спасибо! По репе! smile



Это сообщение отредактировал(а) Rockie - 18.10.2007, 20:47


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
cardinal
Дата 19.10.2007, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Rockie @  18.10.2007,  19:45 Найти цитируемый пост)
Нужно задать смещение?

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

Не за что.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
4d5a
Дата 21.10.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А не проще увеличить один прямоугольник типа
 ________
 |  ____    |
 |  |      |   |
 |  |___|   |
 |_______|
(коечно в таком случае расстояние до стороны меньше растояния до угла)

Или ПРИНЦИПИАЛЬНО чтобы минимальный предел сохоанялся ?
   
А можно использовать апишную функцию PtInRgn (определяет точка в полигоне или нет)

PM MAIL   Вверх
Rockie
Дата 22.10.2007, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(4d5a @  21.10.2007,  20:46 Найти цитируемый пост)
Или ПРИНЦИПИАЛЬНО чтобы минимальный предел сохоанялся ?

4d5a, да, конечно.




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Akina
Дата 22.10.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Не понимаю - для чего собсно круги наворачивать? надо же расстояние между наиболее близкорасположенными точками... а вариантов-то всего три:

1) Прямоугольники пересекаются или касаются друг друга. При этом проекции их на каждую из осей координат имеют общие точки. Расстояние = 0.
2) Прямоугольники не пересекаются, но перекрываются в проекции (проекция на одну ось имеет общие точки). Расстояние = расстоянию между проекциями на другую ось.
3) Проекции ни на одну из осей не пересекаются. Расстояние = гипотенузе прямоугольного треугольника со сторонами = расстояниям между проекциями по осям.

Получение проекции на ось и определение факта пересечения проекций - задачка для третьего класса... 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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