[CDR 2021] Найдем минимальное расстояние между кривыми?

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
Добрый вечер.
Давно ломаю голову, но не могу придумать, как измерить минимальное расстояние между кривыми? Подскажите пожалуйста, если знаете как.
1701026410947.png
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 101
Реакции
10 829
Задача не имеет решение, поскольку вы ее даже формализовать не можете.
На рисунке вовсе не минимальное расстояние между кривыми , так как кривая одна. Если имеется в виду "минимальное расстояние между сегментами кривой" - тоже лажа получается, так как минимально удалены соседние сегменты.
В общем, как обычно, чтобы задать вопрос, надо знать большую часть ответа.
 

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
Задача не имеет решение, поскольку вы ее даже формализовать не можете.
На рисунке вовсе не минимальное расстояние между кривыми , так как кривая одна. Если имеется в виду "минимальное расстояние между сегментами кривой" - тоже лажа получается, так как минимально удалены соседние сегменты.
В общем, как обычно, чтобы задать вопрос, надо знать большую часть ответа.
Можно рассмотреть для начала в пределах одного объекта. Т.е. минимальное расстояние между сегментами кривой. А далее уже перейти к поиску расстояния и между объектами.
 

DukereD

макрософил
Сообщения
450
Реакции
111
у меня в макросе кнопка такая есть )
делаю просто. разбиваю кривую на N равных сегментов и ищу ближайшую точку (не соседний сегмент)
 

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
у меня в макросе кнопка такая есть )
делаю просто. разбиваю кривую на N равных сегментов и ищу ближайшую точку (не соседний сегмент)
Дай пожалуйста ссылку на твой макрос.
 

DukereD

макрософил
Сообщения
450
Реакции
111

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 101
Реакции
10 829
Можно рассмотреть для начала в пределах одного объекта. Т.е. минимальное расстояние между сегментами кривой. А далее уже перейти к поиску расстояния и между объектами.
Для того, чтобы найти расстояние на вашем скриншоте, недостаточно знать минимальное расстояние между сегментами кривой.
Повторяю, попробуйте формализовать свою задачу, возможно, есть какой то более простой способ.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 101
Реакции
10 829
Реклама - двигатель торговли! '))'
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 101
Реакции
10 829
Ну вам же бесплатно алгоритм сказали - разбиваете сегмент на части и считаете расстояние от каждой точки на нем до нужной кривой. Будет очень медленно, глючно, а, главное, это мало поможет найти узкое место внутри шейпа (как у вас на скрине изображено)
 

densen

15 лет на форуме
Сообщения
748
Реакции
630
Вот у этой задачки самое простое решение.
circle.png
попробуйте формализовать свою задачу
Для каждой точки на кривой вычислить расстояние до каждой другой точки на кривой. При условии, что от какой-либо точки расстояние вначале увеличивается, потом уменьшается, потом снова увеличивается, потом снова уменьшается, сравнить расстояние между экстремальными уменьшениями, расположенными между двумя увеличениями. В случае отсутствия последовательности "увеличение-уменьшение-увеличение" постановить, что задача не имеет смысла.
 

Ashurpanipal

Мимопроходящий
Сообщения
57
Реакции
21
Вариант решения задачи с разделением на точки или сегменты не корректен, так как самым минимальным расстоянием будет расстояние между соседними сегментами или точками. Нужно другой подход. Возможно стоит взять во внимание для решения особую точку внутри области например как в Круге это центр окружности, ну или в данном случаи что то Вроде "центра тяжести" через которую и будут проходить замеры минимального расстояния.
 
Последнее редактирование:

izrukvruki

15 лет на форуме
Сообщения
1 833
Реакции
302

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 101
Реакции
10 829
Вот у этой задачки самое простое решение.
Посмотреть вложение 162325

Для каждой точки на кривой вычислить расстояние до каждой другой точки на кривой. При условии, что от какой-либо точки расстояние вначале увеличивается, потом уменьшается, потом снова увеличивается, потом снова уменьшается, сравнить расстояние между экстремальными уменьшениями, расположенными между двумя увеличениями. В случае отсутствия последовательности "увеличение-уменьшение-увеличение" постановить, что задача не имеет смысла.
Подумвешь, бином Ньютона! Методом градиентного спуска ищем экстремумы функции двух переменных.