Как получить контур из 2 замкнутых пересекающихся между собой полилиний

Автор Тема: Как получить контур из 2 замкнутых пересекающихся между собой полилиний  (Прочитано 3132 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Добрый  вечер! Есть 2 3Dполилинии (можно и 2D - это не особо важно) необходимо получить третью полилинию (как на картинке). В какую сторону копать? Можно ли это реализовать силами api автокада или придется разбираться в геометрических алгоритмах?


Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Какие-то 2 тысячи строк кода и я это сделал :) https://sites.google.com/site/avcplugins/osl

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Но именно для вашего частного случая можно создать регионы и найти их пересечение. А потом опять перегнать в полилинию. Последний момент не так тривиален с учетом наличия дугообразных сегментов.

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Какие-то 2 тысячи строк кода и я это сделал :) https://sites.google.com/site/avcplugins/osl

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

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Мне нужен именно алгоритм
простой алгоритм я вам только что описал. ЛИСП тут не обсуждаем

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Но именно для вашего частного случая можно создать регионы и найти их пересечение. А потом опять перегнать в полилинию. Последний момент не так тривиален с учетом наличия дугообразных сегментов.
Что есть регион? я так понимаю - это какой то объект типа контура. Допустим получилось 3 региона, как понять какой из них мне нужен?

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
в случае как на картинке, это будет самый большой по площади, но если попадется случай когда, все наоборот или 2 региона равны, тогда как?

Отмечено как Решение Павел55 28-08-2019, 08:43:12

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Добрый  вечер! Есть 2 3Dполилинии (можно и 2D - это не особо важно) необходимо получить третью полилинию (как на картинке). В какую сторону копать? Можно ли это реализовать силами api автокада или придется разбираться в геометрических алгоритмах?


Поиском:
https://adn-cis.org/forum/index.php?topic=8738
https://adn-cis.org/forum/index.php?topic=8639
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Debalance

  • ADN Club
  • ****
  • Сообщений: 421
  • Карма: 16
    • Advanced software for AutoCAD
  • Skype: Debalance
Можно ли это реализовать силами api автокада или придется разбираться в геометрических алгоритмах?
Плавали, знаем! Реализовано, но только на ObjectARX. Лично я не смог обойтись (для достижения должного быстродействия) силами только API AutoCAD. Дополнительно использовал boost'овые алгоритмы и свои собственные. Вот такой есть практический пример: