Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
6 / 6 / 0
Регистрация: 15.05.2012
Сообщений: 40
1

Принадлежность многоугольника многоугольнику

14.12.2013, 12:27. Показов 1061. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Необходима помощь в решении задачи об определении принадлежности многоугольника многоугольнику. На плоскости даны 2 многоугольника, заданные набором своих вершин. Многоугольники могут быть как выпуклыми, так и не выпуклыми. Оба многоугольника простые, без самопересечений. Так вот каким образом можно определить принадлежит ли один другому. Пока единственное, что пришло на ум, это проверять каждую точку 2-ого многоугольника на принадлежность первому многоугольнику, и из их совокупности делать вывод о принадлежности всего многоугольника. Но не думаю, что это хорошее решение, если кто нибудь знает как оптимально решить эту задачу пожалуйста подскажите! И еще один вопрос , если все таки выбирать вариант с проверкой каждой точки, то какой из алгоритмов решении задачи об определении принадлежности точки многоугольнику вы бы предложили в таком случае! Заранее огромное спасибо!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2013, 12:27
Ответы с готовыми решениями:

Принадлежность отрезка многоугольнику
Здравствуйте, мне необходимо проверять, принадлежит ли отрезок многоугольнику с n вершинами....

Принадлежность точки многоугольнику
Хочу разобраться с алгоритмом нахождения точки в многоугольнике. Алгоритм нашел здесь. В общем, для...

Принадлежность точки многоугольнику
зная координаты вершин нужно определить принадлежность точки фигуре. количество вершин может быть...

Принадлежность точек многоугольнику
Подскажите пожалуйста. Только начиная заниматься прогораммированием. Требуется решить задачу...

4
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,745
14.12.2013, 12:53 2
Если площади всех треугольников одного знака - тестируемая точка внутри многоугольника, иначе снаружи. Каждый треугольник образуется тестируемой точкой + парой точек (отрезком) проверяемого. Знаковая площадь вычисляется как векторное произведение любых 2 сторон тр-ка (но с одинаковым порядком для всех тр-ков).

Все это работает только для выпуклых (convex) многоугольников. Термин "простой" ничего не говорит о выпуклости, поэтому сначала определитесь устраивает ли Вас этот простейший вариант. Вообще "принадлежит" имеет смысл для точки, для 2 фигур варианты "внутри", "изолированы", "пересекаются"
0
6 / 6 / 0
Регистрация: 15.05.2012
Сообщений: 40
14.12.2013, 13:17  [ТС] 3
Igor3D, спасибо большое за ответ! Я писал что Многоугольники могут быть как выпуклыми, так и не выпуклыми. Для выпуклых многоугольников у меня алгоритм уже есть. Термином простой, я хотел подчеркнуть что многоугольник не многосвязный, то есть не содержит «многоугольных дыр», может быть термин не правильный. Хотя в итоге нельзя сказать точно про один из этих 2-ух многоугольников, он как раз может быть многосвязным, поэтому термин простой можно и вычеркнуть. Если уточнять терминологию для 2-ух фигур, то необходим вариант "внутри".
0
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,745
14.12.2013, 14:14 4
Тогда надо делать odd-even. Из каждой проверяемой точки выбрасываете луч вдоль X или Y и считаете число пересечений со всеми отрезками др мн-ка. Если нечетное - точка внутри. Это работает для невыпуклых и неплохо оптимизируется, правда есть капризы с точностью (напр если луч совпадает с отрезком или пересекает точку)
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
16.12.2013, 15:29 5
Цитата Сообщение от Артем Смирнов Посмотреть сообщение
проверять каждую точку 2-ого многоугольника на принадлежность первому многоугольнику
Каждую точку - это как? Если каждую вершину, то неверно.

Цитата Сообщение от Igor3D Посмотреть сообщение
выбрасываете луч вдоль X или Y
Лучше под рандомным углом, чтобы минимизировать вероятность ошибки.

Цитата Сообщение от Артем Смирнов Посмотреть сообщение
кто нибудь знает как оптимально решить эту задачу
Насчёт оптимальности - не знаю. Предлагаю проверить факт отсутствия пересечения сторон разных многоугольников. Если пересечений нет, то проверить одну из точек, внутри она или снаружи.
1
16.12.2013, 15:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2013, 15:29
Помогаю со студенческими работами здесь

Принадлежность точки многоугольнику
Многоугольник на плоскости задается координатами своих N вершин в порядке обхода их по контуру по...

Принадлежность сектора к многоугольнику
У меня есть многоугольник (выпуклый), точнее его координаты. Мы разбили его на маленькие секторы,...

Принадлежность точки любому многоугольнику
Не подскажите нормальный алгоритм определения принадлежности точки многоугольнику на С++

Принадлежность каждой клетки к многоугольнику
У меня есть многоугольник, точнее координаты его вершин, я его как будто накладываю на клетчатую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru