Научная статья на тему 'Решение задачи о принадлежности точки многоугольнику с использованием языка программирования R'

Решение задачи о принадлежности точки многоугольнику с использованием языка программирования R Текст научной статьи по специальности «Математика»

CC BY
169
15
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГЕОМЕТРИЯ / ПОЛИГОН / ТОЧКИ / КАРТА

Аннотация научной статьи по математике, автор научной работы — Асылхан Толганай Максуткызы

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Решение задачи о принадлежности точки многоугольнику с использованием языка программирования R»

Числовые таблицы операций сложений: их сумма есть действие сложение.

Числовые таблицы операций умножений или таблицы для быстрого счёта: их сумма есть действие умножение. Эти таблицы нам известны с первого класса начальной школы.

Числовые таблицы операций сравнений (общепринятое понятие - по числовому модулю) или таблицы для сверхбыстрого и мгновенного счёта: их сумма есть действие сравнение.

Простой пример: число сто сравнимо с числом три или нет? Сложный пример: сравнимость простых чисел в числовых последовательностях [1].

В арифметике, как науке, математическое действие деление натуральных чисел на число отсутствует, потому что фактически оно не определено. Так как в числовых таблицах отсутствует операция деления, тогда сравнимость чисел (а) и (b) по модулю (q) означает только возможность представить (а) в виде (а = b + qt), где число (tj-целое [1].

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

Все вышеназванные таблицы имеются у автора данной публикации.

Литература 1. [Электронный ресурс]. URL: http://fib45.ru.

Решение задачи о принадлежности точки многоугольнику с использованием языка программирования Я Асылхан Т. М.

Асылхан Толганай Максуткызы /ЛззуШИап То1^апау Махи1ку2у - магистрант, кафедра алгебры и геометрии, механико-математический факультет, Евразийский национальный университет имени Л. Н. Гумилева, г. Астана, Республика Казахстан

Аннотация: в статье анализируются методы решения задачи о принадлежности точки многоугольнику, и рассматривается программа, разработанная на языке программирования Я.

Ключевые слова: геометрия, полигон, точки, карта, Я. Введение

Довольно нередко появляется спор о том, нужны ли задачи с интересным условием, задачи, оперирующие с конкретными, взятыми из жизни примерами? Тут не может быть двух мнений: такие задачи необходимы. Уже в наше время задачи по геометрии по-прежнему находят обширное использование в строительстве, архитектуре, а еще во множестве иных отраслей экономической индустрии [1].

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

Одно из вероятных применений — проверка попадания точки по координатам в определённый участок карты, обозначенный случайной фигурой. Постановка задачи:

В период выборов для проведения голосования образуются избирательные участки. Нам надо будет определить, к какому избирательному участку приписаны адреса избирателей. В нашем случае имеются избиратели (точки) и избирательный

участок (множество точек), у которого известны опорные точки. Нужно определить, входит точка в область полигона или нет.

Таблица 1. Множество точек

избирательного участка Табтца 2. Список избирателей

Ширина Долгота

51.127572 71.465127

51.130704 71.468389

51.135078 71.460922

51.136698 71.474226

51.142368 71.487358

51.127518 71.485555

51.128058 71.476886

51.125681 71.478088

51.124763 71.461780

51.127572 71.465127

Наименование Ширина Долгота

Избиратель 1 51.12819 771.46730

Избиратель 2 51.142531 71.470730

Избиратель 3 51.1400031 71.48044

Избиратель 4 51.12741 71.46670

Избиратель 5 51.12531 71.46730

Избиратель 6 51.13531 71.4730

Избиратель 7 51.14031 71.4800

Избиратель 8 51.132531 71.4730

Избиратель 9 51.13631 71.480030

Избиратель 10 51.12731 71.46250

Избиратель 11 51.13731 71.46530

Избиратель 12 51.12706 71.46897

Алгоритм проверки принадлежности точки полигону:

Для начала сориентируемся с теорией. Наш избирательный участок - это набор связанных векторов. Для проверки принадлежности точки полигону нам нужно определить положение нашей точки, относительно каждого из данных векторов по очереди.

Решение задачи:

Один из простых способов определения принадлежности точки произвольному простому полигону заключается в следующем. Выпустим луч из предоставленной точки в случайном направлении и сочтем, сколько раз луч пересекает рёбра многоугольника. Для этого достаточно пройтись в цикле по рёбрам многоугольника и определить, пересекает ли луч каждое ребро. Если количество пересечений нечётно, то объявляется, что точка лежит внутри многоугольника, если чётно — то снаружи.

В алгоритме появляется затруднение в вырожденном случае, когда луч пересекает вершину многоугольника. Один из способов для его преодоления заключается в том, чтобы считать, что такие вершины многоугольника лежат на бесконечно малую величину выше (или ниже) прямой луча, и, стало быть, пересечения на самом деле и нет [2].

Теперь попробуем решить задачу с помощью языка программирования R.

> suppressMessages(library(mgcv))

> suppressMessages(library(dplyr))

> latg <-c(71.487358, 71.485555, 71.476886, 71.478088, 71.461780, 71.465127, 71.465127, 71.468389, 71.460922, 71.474226)

> long <-c(51.142368, 51.127518, 51.128058, 51.125681, 51.124763, 51.127572, 51.127572, 51.130704, 51.135078, 51.136698)

> pol <-as.matrix(cbind(latg, long))

> plot(pol, type = "n")

> polygon(pol)

> lat <-c(71.48044, 71.46730, 71.470730, 71.46670, 71.46730, 71.4730, 71.4800, 71.4730, 71.480030, 71.46250, 71.46530,71.46897)

> lon <-c(51.12819, 51.142531, 51.1400031, 51.12741, 51.12531, 51.13531, 51.14031, 51.132531, 51.13631, 51.12731, 51.13731,51.12706)

> name<-c("Избирателъ_1", "Избирателъ_2", "ИзбирателъЗ", "Избиратель_4", "Избиратель_5", "Избирателъ_6", "Избирателъ_7","Избирателъ_8", "Избирателъ_9", "Избирателъ_10", "Избирателъ_11", "Избирателъ_12")

> checkübject <-as.matrix(cbind(lat, lon))

> list<-data.frame(name,checkübject)

> inside <- in.out(pol, checkübject)

> ins<-data.frame(list,inside)

> all<-ins%>%filter(grepl("TRUE",inside))

> points(checkübject, col = as.numeric(inside) + 9)

В результате вычисления из 12 избирателей только 7 могут голосовать в заданном в нашей задаче избирательном участке. Результаты, которые получили с помощью R, показаны в таблице 3 и на рис. 1-2.

Рис. 1. Избирательный участок на Яндекс-карте Таблица 3. Список избирателей, которые входят в участок

Наименование Ширина Долгота inside

Избиратель 1 Избиратель 4 Избиратель 5 Избиратель 6 Избиратель 8 Избиратель 9 Избиратель 12 51.12819 51.12741 51.12531 51.13531 51.132531 51.13631 51.12706 71.46730 71.46670 71.46730 71.4730 71.4730 71.480030 71.46897 TRUE TRUE TRUE TRUE TRUE TRUE TRUE

Рис. 2. Принадлежность точки к избирательному участку

Заключение

Задачи, построенные на живом примере, вызывают у учащихся интерес. Академик С. Л. Соболов считает, что «было бы хорошо по возможности, раскрывать математические правила и законы на специально подобранных задачах из жизни». Специальная тематика практических задач позволяет показать учащимся важность геометрических знаний в повседневной жизни и быту, что способствует повышению интереса к геометрии. «Иллюстрированные примеры следует выбирать такими, - замечает Б. В. Гнеденко, - чтобы они пробуждали у учащихся дух познания, сохранились в памяти на долгие годы и возбуждали стремление сделать полезное для общества».

Литература

1. Геометрические задачи с практическим содержанием. [Электронный ресурс]. Режим доступа: http://www.hintfox.com/artide/geometricheskie-zadachi-s-prakticheskim-soderzhaniem.html/ (дата обращения: 01.09.2016).

2. Препарата Ф., Шеймос М. Раздел 2.2: Задачи локализации точек // Вычислительная геометрия: Введение. Москва: Мир, 1989.

i Надоели баннеры? Вы всегда можете отключить рекламу.