Поиск многоугольника, содержащего заданную точку
Анализ алгоритмов определения принадлежности точки многоугольнику. Особенность исследования метода трассировки луча. Расчет положения места относительно ребра. Проверка вхождения объекта в ограничивающий прямоугольник многоугольной геометрической фигуры.
Рубрика | Математика |
Вид | статья |
Язык | русский |
Дата добавления | 25.12.2017 |
Размер файла | 81,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Поиск многоугольника, содержащего заданную точку
автора:
А.В. Альтергот,
С.Н. Талипов
В статье рассматриваются алгоритмы определения принадлежности точки многоугольнику.
Предлагается способ ускорения поиска многоугольника, содержащего заданную точку.
Задача поиска многоугольника, содержащего заданную точку, является весьма распространенной в системах, где поверхность моделируется с помощью набора графических примитивов: систем 3D моделирования и проектирования, компьютерных играх и других. Как правило, но не обязательно, таким многоугольником является треугольник. Для того чтобы узнать, к какому многоугольнику относится точка, нужно определить, входит ли точка в данный многоугольник.
Задача принадлежности точки многоугольнику хорошо исследована и имеет множество решений. Некоторые из них являются универсальными и могут применяться к большому количеству типов многоугольников, другие являются специализированными для определенных условий. Чаще всего универсальные алгоритмы сложны в реализации и медленно работают, они применяются тогда, когда нет никакой информации о многоугольнике. В условиях, когда информации достаточно, применяются специализированные алгоритмы [1]. Однако даже самые быстрые алгоритмы принадлежности точки многоугольнику не могут обеспечить приемлимое время работы, если вопрос стоит о сотнях многоугольников. Требуется найти способ, который позволил бы исключить из поиска большую их часть, при этом не зависел бы от типа многоугольника, был простым в реализации и быстрым в работе.
Наиболее часто встречающимся алгоритмом является метод трассировки луча. Из точки проводится луч в произвольном направлении, затем подсчитывается количество пересечений луча и контура многоугольника. Если луч и контур пересекаются нечетное количество раз, то точка находится внутри многоугольника, если четное - снаружи (см. рисунок 1).
Рисунок 1 - Метод трассировки луча
В общем случае алгоритм подходит как для выпуклых, так и для невыпуклых многоугольников. Однако в некоторых ситуациях он не применим. Например, если луч, выпущенный из точки вне многоугольника, пересечет его вершину, тогда формально пересечение будет одно, что приведет к неправильному результату. Другими подобными случаями будут случаи, когда луч, проведенный из точки, полностью попадает на одно из ребер или точка лежит на ребре. Поэтому для корректного использования этого метода нужно учитывать большое количество исключительных ситуаций, что усложняет реализацию [2].
Другим подходом к решению задачи является тригонометрический алгоритм. Его суть состоит в том, что из точки проводятся лучи ко всем вершинам многоугольника. Для каждой пары вершин вычисляется разность углов лучей, проведенных из точки. Затем разности суммируются. Точка лежит вне многоугольника, если эта сумма равна нулю. Этот алгоритм требует большого количества вычислений обратных тригонометрических функций, поэтому для многоугольников с большим количеством вершин выполняется очень долго [3].
Следующим метод можно описать так: из точки проводятся отрезки ко всем вершинам многоугольника, затем подсчитывается сумма образовавшихся треугольников. Эта сумма в точности совпадает с площадью исходного многоугольника, если точка находится внутри фигуры. Недостаток данного алгоритма в том, что для многоугольника произвольной формы подсчет площади является непростой задачей, заметно усложняющий реализацию. Но в случаях простых многоугольников, например треугольников, этот метод является весьма эффективным [4].
Для сложных многоугольников применяется метод триангуляции, то есть разбиение многоугольника на составляющие его треугольники. Треугольник является весьма удобной фигурой для проверки вхождения в него точки. Проверить, входит ли точка в многоугольник, можно узнав, входит ли точка в хотя бы один из получившихся треугольников. Однако триангуляция не является простой задачей, поэтому к такому методу прибегают лишь в случаях, когда многоугольник слишком сложный для других алгоритмов [5].
Для выпуклого многоугольника существует еще один весьма эффективный алгоритм. Он основан на сравнении положения точки относительно ребер фигуры. В выпуклом многоугольнике любая точка, находящаяся внутри, будет находиться с одной стороны от каждого ребра. Слева или справа - зависит от обхода движения (по часовой стрелке или против).
Определить положение точки относительно ребра, можно, проведя прямую через вершины ребра.
По координатам этих вершин можно вывести уравнение прямой.
Уравнение прямой через две заданные точки:
Координаты точки подставляются в данное уравнение. Если результат равен нулю, то точка лежит на прямой (не обязательно на отрезке образованном вершинами ребра). Если число положительное, точка находится слева от прямой, если отрицательное - справа.
Перебрав подобным образом все ребра многоугольника, можно определить, находится ли точка внутри контура или нет [1].
Определившись со способом решения задачи вхождения точки в многоугольник, можно перейти к задаче поиска многоугольника содержащего заданную точку. Ведь перебор всех многоугольников на возможность вхождения в них точки может быть очень долгим процессом. Поэтому имеет смысл исключить из поиска многоугольники, в которые точка заведомо не входит. Наиболее простым и весьма эффективным методом решения этой проблемы является проверка вхождения точки в ограничивающий прямоугольник многоугольника (см. рисунок 2).
Хотя для ограничивающего прямоугольника могут быть применимы вышеперечисленные методы, более быстрым способом является простая проверка координат точки и максимальных координат вершин многоугольника. Очевидно, что если точка располагается левее, чем самая левая вершина многоугольника, то она в него не входит.
Рисунок 2 - Ограничивающий прямоугольник многоугольника
Обобщая вышенаписанное, можно составить алгоритм поиска многоугольника. Шаг 1: Составить список всех многоугольников.
Шаги 2, 3, 4: Исключить из списка все многоугольники, располагающиеся с одной стороны от точки. Затем со второй, с третьей, с четвертой.
Шаг 5: К оставшимся в списке многоугольникам применить один из алгоритмов определения вхождения точки в многоугольник.
Выигрыш от данного подхода будет тем больше, чем больше количество многоугольников и чем больше вершин они содержат, чем сложнее их форма. Ведь поиск максимальной координаты требует линейного времени O(N) и простых операций сравнения [6].
Таким образом, используя этот метод в комбинации с одним из алгоритмов определения вхождения точки в многоугольник, можно весьма эффективно решать задачу поиска многоугольника, содержащего заданную точку. точка многоугольник ребро геометрический
Литература
1. Препарата Ф., Шеймос М. Вычислительная геометрия: Введение. - М.: Мир, 1989. - 478 с.
2. Ласло М. Вычислительная геометрия и компьютерная графика на C++. - М.: БИНОМ, 1997. - 304 с.
3. Шикин Е.В. Компьютерная графика. Полигональные модели. - М.: ДИАЛОГ - МИФИ, 2005. -223 с.
4. Шикин Е.В. Начала компьютерной графики. - М.: ДИАЛОГ - МИФИ, 2000. - 374 с.
5. Скворцов А.В. Алгоритмы построения и анализа триангуляции. - Т.: Издательство Томского университета, 2006. - 167 с.
6. Седжвик Р. Фундаментальные алгоритмы на С++. - К.: ДиаСофт, 2001. - 688 с.
Размещено на Allbest.ru
...Подобные документы
Свойства и численное значение площади геометрической фигуры. Вычисление площади квадрата, прямоугольника, трапеции, и треугольника. Измерение отрезков. Значение и область применения теоремы Пифагора. Алгебраическое и геометрическое доказательства Евклида.
презентация [267,8 K], добавлен 04.09.2014Уравнение стороны треугольника и ее угловой коэффициент. Координаты точки пересечения медиан. Уравнение прямой, проходящей через точки. Область определения функции. Поиск производной и предела функции. Площадь фигуры, ограниченной заданными линиями.
контрольная работа [94,9 K], добавлен 12.05.2012Вычисление скалярного и векторного произведений векторов, заданных в прямоугольной декартовой системе координат. Расчет длины ребра пирамиды по координатам ее вершин. Поиск координат симметричной точки. Определение типа линии, описываемой уравнением.
контрольная работа [892,1 K], добавлен 12.05.2016Прямоугольник - параллелограмм, у которого все углы прямые. Описание основных свойств и признаков прямоугольника. Решение задачи, в условии которой дано прямоугольный участок земли, разделенный на две части биссектрисой. Нахождение площади прямоугольника.
презентация [260,5 K], добавлен 10.02.2011Способы задания прямой на плоскости. Уравнение с угловым коэффициентом. Рассмотрение частных случаев. Уравнение прямой, проходящей через заданную точку в заданном направлении. Построение графика прямой, проходящей через две точки. Рассмотрение примера.
презентация [104,9 K], добавлен 21.09.2013Обзор понятия геометрической фигуры призмы, ее основания и боковых граней. Построение отрезков, нахождение высоты прямой и наклонной призмы. Расчет полной и боковой площадей поверхности фигуры. Изучение теоремы о площади боковой поверхности прямой призмы.
презентация [82,8 K], добавлен 17.05.2012Основные виды симметрии (центральная и осевая). Прямая в качестве оси симметрии фигуры. Примеры фигур, обладающих осевой симметрией. Симметричность относительно точки. Точка как центр симметрии фигуры. Примеры фигур, обладающих центральной симметрией.
презентация [2,7 M], добавлен 30.10.2014Плоскость как простейший вид поверхности, ее задание тремя точками. Основные геометрические фигуры на плоскости. Определение геометрического места точек, примеры для угла и окружности. Сущность использования метода геометрических мест при решении задач.
курсовая работа [115,2 K], добавлен 10.01.2010Изменение порядка интегрирования функции. Расчет площади фигуры, ограниченной графиками функций. Поиск предела интегрирования. Определение производной скалярного поля в точке по направлению вектора. Поиск объема тела, ограниченного поверхностями.
контрольная работа [249,8 K], добавлен 28.03.2014Изменение порядка интегрирования функции. Поиск предела интегрирования. Расчет площади фигуры, ограниченной графиками функций. Поиск объема тела, ограниченного поверхностями. Определение производной скалярного поля в точке по направлению вектора.
контрольная работа [233,2 K], добавлен 28.03.2014Знакомство с примерами возникновения свободных колебаний. Поиск геометрической интерпретации главных координат. Анализ основных формул для нахождения нормальных координат. Поиск коэффициентов распределения, колебание координат на собственной частоте.
курсовая работа [366,2 K], добавлен 11.07.2012Рассмотрение особенностей метода построения полного проверяющего теста для недетерминированных автоматов относительно неразделимости для модели "черного ящика" и разработка предложений по его модификации. Исследование условий усечения дерева преемников.
курсовая работа [1,3 M], добавлен 20.08.2010Расчет производной функции. Раскрытие неопределенности и поиск пределов. Проведение полного исследования функции и построение ее графика. Поиск интервалов возрастания, убывания и экстремумов. Решение дифференциальных уравнений. Расчет вероятности события.
контрольная работа [117,5 K], добавлен 27.08.2013Доказательство линейной независимости системы векторов пирамиды. Расчет длины ребра, угла между ребрами. Составление уравнения прямой и плоскости. Выполнение операций для матриц. Величина главного определителя. Поиск алгебраических дополнений матрицы.
контрольная работа [156,0 K], добавлен 20.03.2017Поиск площади фигуры, ограниченной графиками функций с помощью двойного интеграла. Получение вращением объема тела вокруг оси ОХ фигуры, ограниченной указанными линиями. Пределы интегрирования в двойном интеграле по области, ограниченной линиями.
контрольная работа [166,9 K], добавлен 28.03.2014Область определения функции. Очки пересечения с осями координат, промежутки знакопостоянства. Исследование функции на непрерывность. Асимптоты, определение точки экстремума и точки перегиба. Расчет области определения функций, заданных аналитически.
контрольная работа [178,7 K], добавлен 14.06.2013Одномерная выборка, ее представление и числовые характеристики. Проведение исследования нормального, равномерного и экспоненциального распределения. Проверка гипотез по критерию Пирсона и Колмогорова-Смирнова. Особенность изучения двухмерных выборок.
курсовая работа [1,2 M], добавлен 22.11.2021Что такое симметрия, ее виды в геометрии: центральная (относительно точки), осевая (относительно прямой), зеркальная (относительно плоскости). Проявление симметрии в живой и неживой природе. Применение законов симметрии человеком в науке, быту, жизни.
реферат [1,3 M], добавлен 14.03.2011Геометрические понятия точки, луча и угла. Виды углов: развернутые, острые, прямые, тупые, смежные и вертикальные. Способы построения смежных и вертикальных углов. Равенство вертикальных углов. Проверка знаний на уроке геометрии: определение вида углов.
презентация [13,0 M], добавлен 13.03.2010Площадь как величина, измеряющая размер площади, ее основные свойства и характеристики. Порядок определения площади треугольника, прямоугольника, четырехугольника, ромба, параллелограмма. Интегральное вычисление как методика определения площади.
презентация [259,4 K], добавлен 13.12.2010