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

Ashurpanipal

Мимопроходящий
Сообщения
57
Реакции
21
Только подумал, что еще надо указать, что внутри области находится решение, так как если учитывать точки кривой то вариант с петлей или спиралью будет неверным, будет внешнее расстояние.
 

Вложения

  • Screenshot_6.png
    Screenshot_6.png
    19.4 КБ · Просм.: 38

splxgf

12 лет на форуме
Сообщения
7 740
Реакции
3 421
Петля может и внутрь быть загнута, какую цифру хочется получить в этом случае?
 

densen

15 лет на форуме
Сообщения
748
Реакции
630
надо указать, что внутри области находится решение.
Увеличивать внутренний оффсет, и в точке, где две точки кривой этого оффсета будут иметь одинаковые координаты, как раз будет минимальное расстояние, равное двум оффсетам.
offcet.png
 

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 747
Реакции
3 412
Увеличивать внутренний оффсет, и в точке, где две точки кривой этого оффсета будут иметь одинаковые координаты, как раз будет минимальное расстояние, равное двум оффсетам.
Посмотреть вложение 162329
а если
?
 

DukereD

макрософил
Сообщения
450
Реакции
111
Увеличивать внутренний оффсет, и в точке, где две точки кривой этого оффсета будут иметь одинаковые координаты, как раз будет минимальное расстояние, равное двум оффсетам.
Посмотреть вложение 162329
задание контура очень ресурсоемкое действие.
пробежать по 100 точкам и сравнить каждую с каждой куда быстрей (на сложной фигуре)
а на простой так особо и тонкие места искать не нужно
 

КоньЕстДетей

10 лет на форуме
Сообщения
1 793
Реакции
927
О, имел подобное на голову. Когда расстояние меж резами лазера не должно было превышать X.
Может поможет.

В люстре просто: в appaerance задаем дополнительную обводку X. И топим ее в прозрачность и multiply.
Визуально отлавливаем пересечения. Как-то так:
1701087399687.png


Если сможете нечто подобное в кореле и это соответствует задаче, то был рад помочь.
 
Последнее редактирование:
  • Огонь
Реакции: DukereD

Акулыч

Участник
Сообщения
29
Реакции
10
Увеличивать внутренний оффсет, и в точке, где две точки кривой этого оффсета будут иметь одинаковые координаты, как раз будет минимальное расстояние, равное двум оффсетам.
Посмотреть вложение 162329
Идея с внутренним контуром интересная. Можно циклом задавать увеличивающийся внутренний контур, потом в наиболее удаленных точках разделять его пополам и искать пересечения двух кривых.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 101
Реакции
10 829
Я и пытаюсь формализовать по мере вангаторских способностей.
 

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
формализую для вас) но для себя
есть какое-то количество объектов произвольной формы. пусть будет лого.
загрузил пример.
DropMeFiles – бесплатный файлообменник без регистрации

Нужно найти объекты, находящиеся ближе 0.2 мм друг к другу и отметить эти места.
А также необходимо проверить сам размер объектов на размер в самом тонком месте объекта. Пусть будет тоже не менее 0.2 мм .
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 101
Реакции
10 829
С этого надо было начинать.
Нужно найти объекты, находящиеся ближе 0.2 мм друг к другу и отметить эти места.
1) Обьединить обьекты
2) Контур 0.2 мм наружу
3) К полученного обьекта контур 0.2 мм внутрь
4) Если из полученного обьектв вычесть обьединенные обьекты 1) получим только щели между обьектами <0.2 мм
А также необходимо проверить сам размер объектов на размер в самом тонком месте объекта. Пусть будет тоже не менее 0.2 мм .
Обратная операция
2) Обводка 0.2 наружу
3) Обводка 0.2 внутрь
4) Из обьекта 1) вычесть полученный - останутся только обьекты размером <0.2 мм

Видите, как все просто и совсем без высшей математики
 
  • Спасибо
Реакции: Chiga и tohaa

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
С этого надо было начинать.

1) Обьединить обьекты
2) Контур 0.2 мм наружу
3) К полученного обьекта контур 0.2 мм внутрь
4) Если из полученного обьектв вычесть обьединенные обьекты 1) получим только щели между обьектами <0.2 мм

Обратная операция
2) Обводка 0.2 наружу
3) Обводка 0.2 внутрь
4) Из обьекта 1) вычесть полученный - останутся только обьекты размером <0.2 мм

Видите, как все просто и совсем без высшей математики
Спасибо! попробую это записать в макрос.
 

_MBK_

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

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
Вообще говоря, данное действие проще и быстрее в растре проделывать, в фотошопе, например.
Я в свое время так проверял трафаретные макеты на печатаемость.
Photoshop конечно хорошо но основное приложение это corel. Вы не поверите Но времени на переключение в другую программу просто нет.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 101
Реакции
10 829
Photoshop конечно хорошо но основное приложение это corel. Вы не поверите Но времени на переключение в другую программу просто нет.
Дело в том, что все эти преобразования с векторами (контура, пересечения, вычитания и т.д.) в кореле реализованы настолько медленно и глючно, что на большом количестве сложных обьектов в 50% процентах случаев будут странные артефакты выскакивать, а еще в 40% корел будет просто молча захлопываться после длительной паузы. Не оптимизирован он, к сожалению, для таких серьезных операций.
Самое смешное, что все эти действия (в растре) прекрасно и быстро проделывает обычный imagemagic. У меня были проекты, когда я тупо из макроса (скрипта) вызывал imagemagic, дожидался, пока он быстро все операции проделает и обратно полученный растр затягивал - работало даже на порядок быстрее фотошопа.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 101
Реакции
10 829
Я хотел было предложить решение на


но постеснялся это делать в разделе Корела.
На самом деле, задача, правильную постановку которой мы, наконец получили, очень распространена и актуальна, для ее решения полно готовых профессиональных инструментов.
И да, она от корела далека, как народ от своих слуг.