Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Кирилл Захаров от 15-08-2018, 13:54:53

Название: Определение пересечений множества отрезков
Отправлено: Кирилл Захаров от 15-08-2018, 13:54:53
Есть ли в API AutoCAD какой-нибудь метод который позволяет рассчитать пересечения множества линейных отрезков, но при этом чтобы сложность этой процедуры была не квадратичной. Например, как в алгоритме Бентли-Оттмана (http://geomalgorithms.com/a09-_intersect-3.html).
Название: Re: Определение пересечений множества отрезков
Отправлено: Александр Пекшев aka Modis от 15-08-2018, 13:57:26
API не должно решать подобных задач - у него задача дать Вам доступ для работы с объектами автокада. А вот реализация таких алгоритмов (что является частным случаем) - это уже ваша задача
Название: Re: Определение пересечений множества отрезков
Отправлено: Дмитрий Загорулькин от 15-08-2018, 14:35:13
API не должно решать подобных задач - у него задача дать Вам доступ для работы с объектами автокада.
В целом - да. Но если какие-то механизмы используются для внутренних задач AutoCAD, то они могут быть вынесены и в API.
Есть ли в API AutoCAD какой-нибудь метод который позволяет рассчитать пересечения множества линейных отрезков
Конкретно в этом случае, насколько мне известно, ничего такого нет.
Название: Re: Определение пересечений множества отрезков
Отправлено: Кирилл Захаров от 15-08-2018, 15:02:58
что является частным случаем
Попробую сформулировать более общую проблему:
Есть множество любых примитивов, и стоит задача найти пересечения между всеми ними.
Можно ли это сделать более эффективно чем искать пересечения каждого с каждым с помощью метода IntersectWith?
Название: Re: Определение пересечений множества отрезков
Отправлено: Владимир Шу от 15-08-2018, 15:04:39
Про API ничего не скажу, не встречал, но Вашу задачу можно решить и без API, поищите по форуму слово "RTree" и дальше по ссылкам.
Название: Re: Определение пересечений множества отрезков
Отправлено: Кирилл Захаров от 15-08-2018, 15:12:22
Спасибо, Владимир Шу.
Я немного знаком с тем что такое RTree. В частности я использовал библиотеку RBush на C# вот отсюда https://github.com/viceroypenguin/RBush.
Это может помочь, хотя не совсем то, что нужно вроде бы.