Поиск:

Ответ в темуСоздание новой темы Создание опроса
> минимальное расстояние до прямоугольника 
:(
    Опции темы
mrgloom
Дата 11.10.2011, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

пришло в голову только определить минимальные расстояния до 4 отрезков его составляющих.

и еще вопрос.
требуется еще его перетаскивать, но не очень понятно как это реализовать ,имеем точку в которой пользователь нажал кнопку мыши, определяем ближайшую точку на прямоугольнике и за эту точку надо перетаскивать прямоугольник, только непонятно как это отрисовывать, т.е. точка приложения разная, а процедура отрисовки прямоугольника одна.
PM MAIL   Вверх
Akina
Дата 11.10.2011, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(mrgloom @  11.10.2011,  18:08 Найти цитируемый пост)
как определить минимальное расстояние до прямоугольника?

Сначала надо дать определение того, что есть это расстояние. Ибо возможны минимум 3 разных варианта - даже при условии, что точка не лежит внутри или на границе.

Цитата(mrgloom @  11.10.2011,  18:08 Найти цитируемый пост)
требуется еще его перетаскивать, но не очень понятно как это реализовать ,имеем точку в которой пользователь нажал кнопку мыши, определяем ближайшую точку на прямоугольнике и за эту точку надо перетаскивать прямоугольник, только непонятно как это отрисовывать, т.е. точка приложения разная, а процедура отрисовки прямоугольника одна. 

За каким хреном определять какую-то там "точку перетаскивания"? или он ещё и поворачивается при перетаскивании?


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

PM MAIL WWW ICQ Jabber   Вверх
Earnest
Дата 11.10.2011, 20:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(mrgloom @  11.10.2011,  18:08 Найти цитируемый пост)
 только непонятно как это отрисовывать, т.е. точка приложения разная, а процедура отрисовки прямоугольника одна. 

Запоминаешь точку начала перетаскивания, в конце перетаскивания определяешь вектор, и сдвигаешь на него весь прямоугольник.


--------------------
...
PM   Вверх
sQu1rr
Дата 11.10.2011, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mrgloom @  11.10.2011,  17:08 Найти цитируемый пост)
как определить минимальное расстояние до прямоугольника?

Расстояние от точки x до границы
1. Берешь по две вершины a и b
2. Ставишь точку c на середние отрезка с вершинами a и b
3. находишь наименьший xa xb или xc. Если xa или xb меньший - запоминаешь и делаешь то же самое для других сторон
4. если xc меньше чем xa и xb, то определяешь c за a, меньший из (старых) ax, bx за b, и идешь к шагу 2.
вконце должно получица 4 отрезка от точки x к какждой стороне. Находишь минимальное.
Не самый лучший по производительности вариант, но самый быстрый по скорости написания и объяснения


Цитата(mrgloom @  11.10.2011,  17:08 Найти цитируемый пост)
пришло в голову только определить минимальные расстояния до 4 отрезков его составляющих.

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


Цитата(mrgloom @  11.10.2011,  17:08 Найти цитируемый пост)
требуется еще его перетаскивать, но не очень понятно как это реализовать ,имеем точку в которой пользователь нажал кнопку мыши, определяем ближайшую точку на прямоугольнике и за эту точку надо перетаскивать прямоугольник, только непонятно как это отрисовывать, т.е. точка приложения разная, а процедура отрисовки прямоугольника одна. 

когда пользователь нажимает, запоминаем положение курсора и каждый раз отрисовываем его с относительным смещением всех вершин.  smile 
PM MAIL Skype GTalk   Вверх
mrgloom
Дата 19.10.2011, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

пришло в голову только определить минимальные расстояния до 4 отрезков его составляющих.

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


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


и еще вопрос как определяется расстояние между двумя отрезками? 
например отрезки AB CD определяем минимальное расстояние из 4 расстояний от C до AB,от D до AB, от A до CD, от B до CD?

Добавлено через 5 минут
+ еще непонятно при пересечении считать что расстояние 0 или считать что расстояние ноль только когда концевые точки совмещены.
PM MAIL   Вверх
sQu1rr
Дата 19.10.2011, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mrgloom @  19.10.2011,  11:59 Найти цитируемый пост)
еще непонятно при пересечении считать что расстояние 0 или считать что расстояние ноль только когда концевые точки совмещены. 

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


Цитата(mrgloom @  19.10.2011,  11:59 Найти цитируемый пост)
пока я так решил проблему, но по идее, можно не считать все 4 расстояния, а определить сначала в каком из 9 секторов находится точка относительно прямоугольника и посчитать меньшее кол-во.

сам и ответил на свой вопрос smile тока не 9 секторов, а 4, линии разделения которых парралельны сторонам прямоугольника и пересекаются в его центре. Сразу определишь точку (или 2 стороны к ней прилежащие). Это в теории, на практике, нужно найти наименьшее расстояние до 4х вершин, а там уже смотреть на прилежащие стороны к точке до которой наименшьее расстояние, если до 2х точек расстояние одинаковое, то сразу смотреть на сторону между ними.


Цитата(mrgloom @  19.10.2011,  11:59 Найти цитируемый пост)
и еще вопрос как определяется расстояние между двумя отрезками? 
например отрезки AB CD определяем минимальное расстояние из 4 расстояний от C до AB,от D до AB, от A до CD, от B до CD?

самый простой способ, зато верный smile
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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