Проблема в использовании функции SelectCrossingPolygon

Автор Тема: Проблема в использовании функции SelectCrossingPolygon  (Прочитано 14968 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Можно использовать метод Explode
Да-да! Точняк! Про Explode совсем забыл вроде он тоже хорош! Подойдет!
Достаточно недавно обсуждали: http://adn-cis.org/forum/index.php?topic=662.msg2328#msg2328
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Тогда ясно просто область выборки ограничивается экраном.
Думаю что если область выборки буду ограничивать некоторым "коридором"
полилинии, то тоже выборка будет не большой и пересечения найдутся быстрее,
чем перебирать весь набор примитивов.

Оффлайн bargool

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
Для целей поиска пересечений прекрасно подойдёт R-Tree (или другие подобные структуры данных). Искать Spatial Index
Вот была большая тема, где обсуждали подобную задачу.
Алексей

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
bargool - индексация требуется если идет многократная проверка (каждой к каждому) например, или если чертеж однозначно "постоянный", при одноразовой проверке - смысла не имеет. Я бы отфильровал сначала по пересечением габаритов, а выбранные уже по факту.
« Последнее редактирование: 19-06-2014, 10:24:12 от Дима_ »

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
А у меня как раз тот случай, когда есть, к примеру, 150 отрезков, которые должны найти пересечение
с 40 000 многоугольниками и отрезками. И проверять пересечение 150 раз с 40 000 объектами - это очень долго будет.
По этому я распределяю объекты по квадратным зонам.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
По этому я распределяю объекты по квадратным зонам.
Инексируй по прямоугольным зонам. Потом фильтр по ним и непосредственно пересечение.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
А чем лучше прямоугольники вместо квадратов, то?

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Тебе не надо разбивать на "сетку" - не будет эффективно (надо подбирать размер ячейки и пр.) - индексацию надо делать непосредственно по габаритам объектов - http://ru.wikipedia.org/wiki/R-tree, если не осилишь - просто погугли готовый алгоритм.