Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Расстояние до объекта?.. 
:(
    Опции темы
Kurt
Дата 28.10.2003, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


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

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



Здравствуйте!
Есть проблемка - имеется объект, состоящий из нескольких полигонов (имеется ввиду просто наривованный объект на экране. из нескольких полигонов - например, из 2-х треугольников составлен прямоугольник).
Координаты полигонов хранятся отдельно - просто строки в файле:
номер полигона, к к-му относится точка, ее координаты. Все.
А также имеется "отдельная" точка (ну просто точка, например, куда кликнул мышью).
Так вот, вопрос - как узнать расстояние до объекта в целом?
Не до конкретного полигона, а целиком (на примере прямоугольника - расстояние до него).
Желательно, наиболее быстрый способ.
Спасибо.


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
maxim1000
Дата 28.10.2003, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата
Не до конкретного полигона, а целиком (на примере прямоугольника - расстояние до него).

00000000000000000
00111111100000000
00111111100000000
00111111100000000
00000000000000*00
00000000000000000
ну, и какое же здесь расстояние между точкой (*) и прямоугольником (1)?
расстояние можно ввести по-разному, но почти всегда оно вводится, как расстояние до какой-то выбранной точки
например, расстояние до центра масс или до ближайшей точки
если ты больше конкретизируешь задачу, возможно, станет понятней, какое расстояние тебе нужно


--------------------
qqq
PM WWW   Вверх
&-ray
Дата 28.10.2003, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

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



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


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
Kurt
Дата 29.10.2003, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


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

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



&-ray, абсолютнейше прав!


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
maxim1000
Дата 29.10.2003, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ну тогда мне кажется, что самый быстрый способ будет такой:
перебрать все точки, найти две самые близкие A,B
C - точка, расстояние к которой ищется
дальше смотрим треугольник ABC
1. угол A - тупой => расстояние=расстояние(A,C)
2. угол B - тупой => расстояние=расстояние(B,C)
3. иначе => действительно строим нормаль из C на AB, находим точку пересечения D
расстояние=расстояние(D,C)


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


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Симплекс метод вам в руки. Это ж как раз графическое его решение.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
maxim1000
Дата 29.10.2003, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



в симплекс-методе минимизируется линейная функция, а здесь нужно минимизировать расстояние (которое далеко не линейная функция)
думаю, для того, чтобы его применить, его нужно будет хорошенько поменять (это, если получится)


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


Где я? Кто я?
****


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

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



http://astronomy.swin.edu.au/~pbourke/geometry/
Здесь много полезного по полигонам и др.
PM WWW ICQ   Вверх
neutrino
Дата 31.10.2003, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(maxim1000 @ 29.10.2003, 17:50)
в симплекс-методе минимизируется линейная функция, а здесь нужно минимизировать расстояние (которое далеко не линейная функция)
думаю, для того, чтобы его применить, его нужно будет хорошенько поменять (это, если получится)

Менять? Надо через точку провести нормаль к линии - от точки до геометрического центра фигуры. Получившееся нормаль будет целевой функцией, а геометрическая фигура - множество решений. Самый, что ни на есть симплекс метод.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
maxim1000
Дата 31.10.2003, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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


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


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Согласен. Ты прав. Это если ребро будет параллельно целевой функции. Правда маловероятно, но возможно. А алгоритм должен работать всегда. Забираю свои слова обратно.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
&-ray
Дата 31.10.2003, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

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



У maxim1000 лучший вариант
А углы на предмет "тупости" можно проверить по теореме Пифагора:
проверяем угол А: если BC^2>AC^2+AB^2 - угол тупой
аналогично с B


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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