powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Расстояние между контурами.
12 сообщений из 12, страница 1 из 1
Расстояние между контурами.
    #33116863
Void666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я читаю что, расстояние между контуром C1 и С2 (двухмерные контуры) это наименьшая длинна отрезка проходящего через любые две точки P1 и P2, при этом P1 пренадлежит С1,а P2 пренадлежит C2. Ясно, что достаточно рассматривать только точки находящиеся на границе контура, поэтому я уже определил множество точек:
pc10 ... pc1n - точки лежащие на границе контура С1 и pc20 ... pc2n - точки лежащие на границе контура С2.

Теперь проблема, как это сделать быстро :) Прямой перебор для меня не приемлем, т.к точек может быть десятки тысячь !
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33116966
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluTessEndPolygon из объекта Тесселятор GLU-dll по умолчанию есть в OS.
может определять самоперечечения полигонов (может и тебе подойдёт)
http://f.gamedev.ru/?group=5&topic=295
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33120025
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
1) берем первую точку первого полигона и вторую точку второго полигона. Считаем квадратичное расстояние между ними. Это будет начальное значение минимума (квадратичное чтобы не тратить время на расчет квадратного корня).

2) далее бежим двойным циклом по всем ребрам полигона(любого из двух). Ищем минимальное расстояние от текущего в итерации ребра до всех ребер соседнего полигона(кртическое уловие - расстояние НОЛЬ прерываем все). Кстати, это очень дешевая операция(расстояние между отрезками).

3) Таким образом находим два САМЫХ близких ребра.

4) извлекаем из минимума квадратный корень, как результат. ну и прописываем ближайшие точки как бонус-результат.

Эта задача легко формализуется для любого N-мерного пространства
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33120378
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Void666Я читаю что, расстояние между контуром C1 и С2 (двухмерные контуры) это наименьшая длинна отрезка проходящего через любые две точки P1 и P2, при этом P1 пренадлежит С1,а P2 пренадлежит C2

Это неверный посыл. Вот контрпример:

Код: plaintext
1.
2.
3.
4.
5.
6.
+----+ 
 \  /
  \/
+----+
|    |
+----+

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

2 dwl

ты предложил алгоритм с квадратичной сложностью (полный перебор) - для 10000 это уже 100 000 000 проходов - это недопустимо по условию задачи.
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33120452
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2dw... а зачем так сложно то?
Достаточно для каждой вершины С1 опускаем перепендикуляры на каждое из ребер С2 - получаем расстояния от вершин до ребер. И обратный расчет - из каждой вершины С2 опускаем перепендикуляр на каждое из ребер С1

В итоге, если количество вершин у С1 и С2 обозначим через К1 и К2, то всего понадобится сделать 2*К1*К2 расчетов.

А "два самых близких ребра" это, извините что-то странное :)
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33123186
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
Ну если чуток оптимизировать то что я перед этим говорил:
1) берем любое ребро первого контура. находим ближайшее к нему у второго.
2) для этого ближайшего находим ближайшеее из оставшихся в первом полигоне.

ЗЫЖ зреет еще один бредовый вариант (кто знает). упорядочить от начала координат( но без подсчета расстояния ). затем проверить их ребра. Это как использовать проекции на оси.
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33124193
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача решается на раз в 3D игрушках с помощью матриц и векторов. Например найти точку пересечения выстрела с поверхностью, или передвижение строго "по земле".
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33125024
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
да она много где решается. Пересечение выстрела с поверхностью не имеет ничего общего с расстоянием между контурами. Вот сейчас смотрю на алго Quake3 и в упор там не вижу того что надо было решающему.

И потом ему как я понял было надо не тот факт что эта задача решается на раз там или на два. Ему нужен был алго.
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33125300
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dwlда она много где решается. Пересечение выстрела с поверхностью не имеет ничего общего с расстоянием между контурами. Вот сейчас смотрю на алго Quake3 и в упор там не вижу того что надо было решающему.

И потом ему как я понял было надо не тот факт что эта задача решается на раз там или на два. Ему нужен был алго.
а я о чём.
Просто очень часто разработчики игр (очень часто именно Сишники) тусуются на своих форумах. И поэтому методы решения задачь "чистых Сишников" (этот форум) отличаются от прикладников-игровиков. IMHO
http://www.gamedev.ru/articles/?id=30113
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33125734
Void666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Petro

Да супер, это почти то что надо, скажем так, это один из вариантов идеи, реализую его или нет пока не знаю, если интересно пишите.
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33126345
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Void6662 Petro

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

ЗЫ. Очень полезно общение в соседних областях чтобы не изобретать велосипед.
...
Рейтинг: 0 / 0
Расстояние между контурами.
    #33126359
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Void666 напиши в мыло функцию, если получится.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Расстояние между контурами.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]