РАЗРАБОТКА АЛГОРИТМОВ ВЫПОЛНЕНИЯ ТЕОРЕТИКО-МНОЖЕСТВЕННЫХ ОПЕРАЦИЙ С ОБЛАСТЯМИ НА СФЕРИЧЕСКОЙ ПОВЕРХНОСТИ
Иванов Дмитрий Валерьевич,
Инженер 1-й категории, МТУСИ, Москва, Россия, keyliaran@gmail.ru
Тяпкин Максим Алексеевич,
Инженер 1-й категории, МТУСИ, Москва, Россия, kell.gvd@gmail.com
Курахтенков Леонид Владимирович,
Заведующий лабораторией, к.т.н., МТУСИ, Москва, Россия, lkurakht@srd.mtuci.ru
Ключевые слова: контур, алгоритм, теоретико-множественные, сфера, область.
Статья посвящена созданию алгоритмов работы с областями и ориентированными контурами на поверхности сферы и сравнению их производительности с существующими аналогами. Под контуром на сфере подразумевается упорядоченный набор точек, соединенных взаимно не пересекающимися дугами большого круга. Под областью подразумевается объединение примитивных областей, где примитивная область - это часть поверхности сферы ограниченная контуром, возможно имеющая ограниченные другими контурами "отверстия". Необходимость работы с такими контурами и областями возникает при разработке программного обеспечения моделирования спутниковых систем различного назначения. При этом несмотря на широкую известность аналогичных алгоритмов на плоскости и существование соответствующих программных библиотек, известные методы решения подобных задач неприменимы на поверхности сферы. Поэтому авторами были разработаны следующие алгоритмы: проверка принадлежности точки контуру, проверка принадлежности точки области, осуществление теоретико-множественных операций с областями на сфере (объединение, пересечение, разность, симметрическая разность). Также разработаны структуры данных для хранения контуров и областей на сферической поверхности. Разработаны алгоритмы визуализации полученных контуров и областей на сферической поверхности.
Алгоритмы осуществления теоретико-множественных операций являются адаптацией алгоритма Вейлера-Азертона под сферическую поверхность, остальные алгоритмы были разработаны авторами. В ходе разработки алгоритмов теоретико-множественных операций с контурами на сфере, авторами были разработаны вспомогательные функции для работы с дугами большого круга. Визуализация полученных областей осуществлена при помощи адаптированного под поверхность сферы алгоритма закраски фигур на плоскости со списком активных ребер. Сравнение производительности разработанных алгоритмов проведено с аналогичными алгоритмами для плоскости, реализованными в библиотеке алгоритмов вычислительной геометрии СОЛЬ. В результате чего показано, что разработанные алгоритмы не уступают своим аналогам на плоскости и имеют тот же порядок времени вычисления. Разработанные алгоритмы применяются в комплексе имитационного моделирования спутниковых систем, созданном в МТУСИ.
Для цитирования:
Иванов Д.В., Тяпкин М.А., Курахтенков Л.В. Разработка алгоритмов выполнения теоретико-множественных операций с областями на сферической поверхности // T-Comm: Телекоммуникации и транспорт. 2017. Том 11. №2. С. 32-36.
For citation:
Ivanov D.V., Tyapkin M.A., Kurakhtenkov L.V. (2017). Development of algorithms of the set-theoretic operations with areas on the surface of the sphere. T-Comm, vol. 11, no.2, рр. 32-36. (in Russian)
■
У
Введение
Для расчетов характеристик спутниковых систем Алгоритмы пересечения контуров в двумерном случае [1| практически всех типов необходимо рассчитывать области видимости Земли с КЛ. Для систем навигации используются области видимости, рассчитанные, исходя из минимального угла возвышения спутника над горизонтом. Дня систем связи используются области видимости, рассчитанные исходя из раскрыва антенной системы или отдельных лучей антенной системы (в случае многолучевых антенн). Для систем дистанционного зондирования земли используются максимальные углы крена аппаратуры получения изображения. При этом расчет областей видимости может осложняться необходимостью учета рельефа местности, возвышением объектов нал земной поверхностью, положением Солнца и другими факторами. Однако, исходя из вышесказанного, видно, что базой для описания областей видимости может служить контур на земной поверхности, возможно, с отверстиями, При расчете характеристик спутниковых систем исходя из одновременной (или последовательной) видимости нескольких КА естественным образом возникает необходимость проведения теоретико-множественных операций с областями на сфере.
Для начала следует определить понятия, связанные с контуром и областью на сферической поверхности:
• Ребром Е(а,Ь) называется направленная дуга из точки а в точку Ь. Для точки Ь ребро Е - входящее, а для точки а - выходящее.
• Контур - упорядоченное множество точек. Порядок обхода точек контура а С = с увеличением индекса
будем называть прямым направлением обхода, а противоположный ему — обратным.
• Внутренность контура - это часть контура, которая при прямом направлении обхода лежит справа от контура.
• Отверстие - это контур, имеющий обратное направление обхода.
• Контур является выпуклым, если для любых двух вершин отрезок, соединяющий эти точки, будет лежать внутри контура.
• Область - часть поверхности, ограниченная контуром, возможно, имеющая отверстия.
Как и было отмечено ранее, алгоритмы, осуществляющие теоретико-множественные операции с областями на сфере, необходимы для расчетов характеристик спутниковых систем и различных задач нахождения областей видимости спутника для дальнейшего использования в комплексе имитационного моделирования спутниковых систем [2].
Алгоритмы пересечения контуров в двумерном случае
Для расчета мгновенной области видимости необходимо разработать алгоритм пересечения областей, который бы позволил рассчитать пересечение областей видимости КА. Для этого сначала необходимо выбрать алгоритм, который позволил бы найти пересечение областей на плоскости, а затем адаптировать выбранный алгоритм под сферическую поверхность. Далее представлены алгоритмы Сазерленда-Ходгмана [3], Вейлера-Азертона [3], О'Рурка [4], Маргалита-Киотта [5^ Выполним сравнение данных алгоритмов.
Основным недостатком алгоритма Сазерлеида-Ходгмана является то, что он не может находить пересечение областей.
Входными контурами для алгоритма являются не выпуклый контур и выпуклый отсекатель. Алгоритм имеет достаточно простую реализацию, что несомненно является плюсом.
Алгоритм О'Рурка, в отличие от алгоритма Сазерленда-Ходгмана, принимает на вход только выпуклые конт ура.
Алгоритм Вейлера-Азертона лишен недостатка предыдущего алгоритма, а именно, он умеет находить пересечение областей. Однако существует ряд случаев, когда данный алгоритм неработоспособен. Например, когда ребро одного контура проходит через вершину второго контура.
Алгоритм Маргалита-Кнотта аналогично предыдущим алгоритмам находит пересечение областей. Данный алгоритм использует основные идеи алгоритма Вейлера-Азертона, однако он проводит дополнительную классификацию ребер каждой из областей, что негативно сказывается на алгоритмической сложности данного алгоритма.
Результаты описания алгоритмов приведены в таблице 1. Введем обозначения для оценки алгоритмической сложности алгоритмов. Пусть п. - количество вершин первого контура, п2 - количество вершин второго контура г - общее число контуров областей А и 5, и. - количество новых точек пересечения сторон двух многоугольников, п - п0 + «,+/?,
Таблица 1
Сравнение алгоритмов
Алгоритм Тип конту ров Алгоритмическая сложность
Сазерленда-Ходгмана Один выпуклый, другой невыпуклый 0{)Щ2 кщ(я,))
Вейлера-Азертона Области
О'Рурка Выпуклые контуры 0{>Щ21о§(«2))
М аргал ита-К нотта Области 0(п2)
Из таблицы 1 видно, что алгоритмы Вейлера-Азертона, Маргалита-Кнотта позволяют обрабатывать области. Алгоритм О'Рурка позволяет обрабатывать пересечения только выпуклых областей и следовательно не удовлетворяет изначальным требованиям к разрабатываемым алгоритмам. Алгоритм Сазерленда-Ходгмана также не удовлетворяет изначальным требованиям.
Итого, для дальнейшей реализации следует выделить алгоритм Вейлера-Азертона, Однако данный алгоритм следует адаптировать под сферическую поверхность, а именно разработать набор операций с дугами и контурами на сфере.
Алгоритмы элементарных геометрических операций
нал геометрическими объектами на сфере
Почти все алгоритмы пересечения контуров основываются на задачах проверки точки на принадлежность другому контуру и поиска пересечения ребер.
Если в двумерном пространстве эти задачи решаются тривиальным образом, то на сфере эти задачи имеют некоторые трудности в реализации, рассмотрим задачи, которые потребуются для реализации алгоритма пересечения контуров на сфере:
1. пересечение двух дуг на сфере;
2. нахождение максимального значение широты на дуге;
3. нахождение расстояние от точки до дуги;
4. определение принадлежности точки контуру па сфере;
Т-Сотт Vol.ll. #2-2017
Рассмотрим каждую из задач в отдельности. Здесь и далее при вычислениях па сфере будем считать, что сфера имеет единичный радиус.
Пересечение двух дуг на сфере
11усть имеются две дуги А В и СО нужно определить, пересекаются ли дуги. Дуга на сфере задается двумя точками (начало, конец)
Для решения этой задачи необходимо:
1. Построить радиус векторы из центра сферы к началу и концу каждой дуги, в результате получается четыре радиус вектора:0А,0В,0С,05
2. Взять векторное произведение п = ОАхОВ и п2 = ОС х 00
3. Взять векторное произведение и = п{ х и, - вектор
нормали параллельный линии пересечения плоскостей,
4. Нормировать вектор и получить координаты точки Р, лежащей на единичной сфере, и, возможно, являющейся точкой пересечения дуг, но т.к не учитывался порядок перемножения векторов, знак вектора и мог поменяться на противоположный и, следовательно, необходимо рассмотреть еще и точку -Р. Проверить принадлежности секторам О А В и ОС£> для получившихся точек Р и -Р. Если ни одна из точек не принадлежит секторам, то пересечения нет.
Нахождение максимальною значение широты на дуге
Дана дуга на сфере, дуга задается двумя точками (начало, конец). Найти максимальное значение широты па дуге.
Для простоты рассмотрим нахождение максимального значения (минимальное находится аналогично).
1. 11айти вектор единичной нормали п к плоскости, содержащей дугу. Д]я этого векгорно перемножить два радиус вектора к началу и концу дуги. Точка Р с максимальным значением широты может быть либо начальной/конечной точкой дуги, либо находится на дуге (имеются широты такие, что дуга пересекает их в двух точках).
2. Предположим, точка лежит на дуге, тогда широта точки Р совпадает с максимальной широтой большого круга на которой лежит эта дуга. Для нахождения этой широты необходимо перевести координаты п в сферические и прибавить 90° к значению широты. Получившееся значение следует нормировать к допустимому интервалу. Таким образом получится значение широты р которое может быть максимальным для данной дуги. Воспользовавшись предыдущей задачей, находится пересечение параллели, соответствующей найденному значению широты и исходной дуги. Если пресечение найдено, то результатом является /?.
3. Если пересечение не найдено, то предположение оказалось неверным и точка с максимальным значением широты - либо конец дуги, либо начало.
Нахождение расстояние от точки до дуги
Дана дуга АВ и точка Р па сфере. Необходимо найти расстояние от точки до дуги.
Для решения этой задачи необходимо:
1. Построить радиус вектора ОАОВ ■
2, Взять их векторное произведение п = ОАхОВ. Нормировать вектор.
3. Рассмотреть проекцию точки Р на плоскость дуги. Если проекция точки попадает в сектор ОАВ, то найти косинус угла между точкой Р и вектором нормали к плоскости дуги. Однако косинус угла между радиус-вектором точки и плоскостью дуги равен синусу угла между вектором нормали плоскости и радиус-вектором точки, поэтому sin(Z(«,0/i))) = ^l-cos„í,cos„;,, где eos,,,, - косинус между
вектором нормали и радиус-вектором точки Р, Полученный синус будет равен косинусу радиус-вектором и вектором нормали. Возвращается arccos^l-cosacos,,,)■
4. Если проекция не попала в сектор, то рассматривается значение арккосинуса косинуса между радиус-вектором точки Р и началом, концом дуги. Возвращается минимальное из них.
Определение принадлежности точки контуру на сфере
Дан контур, который задается набором точек на сфере и дана точка Р на сфере. Необходимо проверить, где лежит точка Р по отношению к контуру.
Для того чтобы определить, с какой стороны лежит точка по отношению к контуру, необходимо найти ближайшую к этой точке дугу. Предположим, что ближайшая дуга найдена, тогда существует два случая:
1. Ближайшая точка от точки до дуги находится где-то па дуге.
2. Ближайшая точка попадает в начальную или конечную точку дуги.
В первом случае проверка тривиальна, достаточно определить, с какой стороны лежит точка по отношению к дуге. Пусть теперь кратчайшее расстояние попало в вершину (см. рис. 1), где ВР - кратчайшее расстояние, а В - вершина контура.
Для того чтобы правильно определить, где находится заданная точка по отношению к контуру, достаточно проверить, лежит ли эта точка внутри /ЛВС образованного тремя точками контура. Для этого возьмем точку М, лежащую в
ZЛВС ■ Для этого найдем середины сторон £ _ élL р = ^
2 ' 2
и снова возьмем середину дуги д/ = . Затем проведем
2
дугу из М к точке Р. Если МР пересекает А В или ВС и точка М лежит внутри контура, то Р лежит снаружи. Если М лежит снаружи контура и было пересечение с любой из дуг (АВ или ВС), то Р внутри контура.
Рис. 1. Поиск положения ТОЧКИ Р ПО отношению К контуру
У
Т-Сотт Vol.ll. #2-2017
Литература
СOMPUTER SCIENCE
Заключение
В рамках данной работы были разработаны алгоритмы, осуществляющие теоретико-множественных операций с контурами на сфере, которые были применены в комплексе имитационного моделирования спутниковых систем связи и навигации, разработанного в НИЛ МТУСИ.
Как показало тестирование, разработанные алгоритмы имеют такую же асимптотику как и алгоритмы из библиотеки ССАЦ но уступают по времени выполнения в 10 раз. Это связано с тем, что на плоскости для достижения тех же самых целей выполняется меньше операций.
Также была разработана библиотека, осуществляющая набор геометрических операций с дугами на поверхности сферы.
1. А джемов С.С.. Кузнецов Г..4., Кучумов А. А Имитационное моделирование спутниковых телекоммуникационных систем / Труды МТУСИ. Москва, 2007. С. 164-167'
2. Аджемов С.С., Кучумов А.А. Универсальный комплекс имитационного моделирования спутниковых систем «СатСтат» // Т-Coram: Телекоммуникации и транспорт, 2008. №2. С. 25-28.
3. Роджерс Д. Алгоритмические основы машинной графики. Пер. с англ. М,: Мир, 1989.
4. О'Rourke Joseph. A new linear algorithm for intersecting convex polygons// Computer Graphics and Image Processing. 1982.
5. Margalii A. Knott G,D, An algorithm for computing the union, intersection or difference of two polygons // Computers & Graphics V.13. No.2. 1989.
DEVELOPMENT OF ALGORITHMS OF THE SET-THEORETIC OPERATIONS WITH AREAS ON THE SURFACE OF THE SPHERE
Dmitry V. Ivanov, MTUCI, Moscow, Russia, keyliaran@gmail.com Maxim A. Tyapkin, MTUCI, Moscow, Russia, kell.gvd@gmail.com Leonid V. Kurakhtenkov, MTUCI, Moscow, Russia, lkurakht@srd.mtuci.ru
Abstract
The article focuses on the creation of algorithms working with areas and oriented contours on the surface of the sphere and the comparison theirs performance with existing analogues, The contour on a sphere is ordered set of points connected mutually intersecting arcs of a great circle. Area on the sphere is the union of primitive areas where the primitive area - is the area of sphere bounded by the contour, perhaps having limited other "holes." The need to work with such contours and areas occurs in the development of simulation software of satellite systems for various applications. At the same time despite the wide popularity of similar algorithms on the plane and the existence of the corresponding software libraries, known methods for solving such problems are not applied to the surface of the sphere. By this reason the following algorithms are developed by the authors: a check a point belongs to a contour, a check a point belongs to an area, an implementation of set-theoretic operations with areas on the sphere (union, intersection, difference, symmetric difference). The data structure for storing contours and areas on a spherical surface also is designed. Algorithms to visualize contours and areas on a spherical surface are developed. Algorithms of the set-theoretic operations at the spherical surface are adapted by using the Weiler-Atherton algorithm. Other algorithms are created by the authors. Auxiliary functions to make deal with the great circle arcs are constructed during the development of algorithms for set-theoretical operations with contours. Comparison of the performance of presented algorithms is carried out with the same algorithms for the plane, implemented in the library of computational geometry algorithms CGAL. Contour filling algorithm at the spherical surface is adapted by using the scan-line algorithm with a list of active edges at 2D. The algorithms are used in the complex simulation of satellite systems created in MTUCI.
Keywords: contour, algorithm, set-theoretic, sphere, area. References
1. Adzhemov S.S., Kuznecov G.A., Kuchumov A.A. (2007). Simulation modeling of satellite telecommunication systems. Moscow: MTUCI, 2007, pp. 164-167. (in Russian)
2. Adzhemov S.S., Kuchumov A.A. (2008). The universal complex of imitative simulations of satellite systems "SatStat". T-Comm, no.2, pp. 25-28. (in Russian)
3. Rogers D. Algorithmic foundations of computer graphics. Moscow: Mir, 1989. (in Russian)
4. O'Rourke Joseph (1982). A new linear algorithm for intersecting convex polygons. Computer Graphics and Image Processing.
5. Margalit A. Knott G.D. (1989). An algorithm for computing the union, intersection or difference of two polygons. Computers & Graphics, vol..l3, no.2.
Information about authors
Dmitry V. Ivanov, Engineer of the l-st category, MTUCI, Moscow, Russia Maxim A. Tyapkin, Engineer of the 1-st category, MTUCI, Moscow, Russia Leonid V. Kurakhtenkov, Head of the laboratory, c.t.s., MTUCI, Moscow, Russia