РАЗРАБОТКА АЛГОРИТМА ПОСТРОЕНИЯ ИЗОЛИНИЙ ПО РАССЧИТАННЫМ ДАННЫМ НА СФЕРИЧЕСКОЙ
ПОВЕРХНОСТИ
Курахтенков Леонид Владимирович,
МТУСИ, Москва, Россия, lkurakht@srd.mtuci.ru
Кучумов Андрей Александрович,
МТУСИ, Москва, Россия, kuchumov@gmail.com
Ключевые слова: изолинии, динамическое Шкиль Константин Юрьевич, программирование, алгоритмы,
МТУСИ, Москва, Россия, shkil-k@mail.ru аппроксимация, интерполяция.
Визуализация значений функций многих переменных и, в частности, функций на плоскости имеет важное практическое значение для анализа описываемых этими функциями процессов. Изолинии, они же линии уровня - одно из средств такой визуализации. Перед авторами статьи стояла задача разработать алгоритм, сопоставляющий множеству значений функции на плоскости набор замкнутых ориентированных кривых без самопересечений, ограничивающих исследуемые области. Для каждой кривой ориентацию следовало выбрать такой, чтобы в процессе её обхода область находилась справа. Данные свойства кривых позволяют однозначно определить ограничиваемую зону, даже если она содержит отверстия, что позволяет применять к ней алгоритмы закраски. Так же стояла дополнительная задача: адаптировать алгоритм для случая, когда плоскость трансформируется в сферу, реализовав корректный переход линии через края плоскости. Отдельно рассмотрен случай контура, проходящего через особые точки сферы, в которые преобразуются более одной точки плоскости. В процессе построения изолинии учитывается интерполяция промежуточных значений функции, не попавших в дискретную сетку данных. Алгоритм был разработан на языке С++ и протестирован средствами OpenGL. Разработанная визуализация применяется в комплексе имитационного моделирования спутниковых систем, созданном в МТУСИ. Для наглядного графического представления рассчитанных контуров был так же разработан алгоритм аппроксимации точек контура, обеспечивающий сглаживание углов. Алгоритм может добавлять новые точки в контур, тем самым искусственно повышая разрешение исследуемой дискретной сетки данных. В конечной реализации степень сглаживания является параметром, с увеличением значения которого повышается гладкость контура. Актуальность данной работы заключается в том, что отсутствует готовое решение, применимое для двумерной модели данных, которая рассматривается как трехмерный сферический объект. Полученная реализация может быть применена в областях, исследующих околоземные процессы или процессы на земной поверхности, таких как метеорология или спутниковая связь.
Информация об авторах:
Курахтенков Леонид Владимирович, Заведующий лабораторией, к.т.н., МТУСИ, Москва, Россия Кучумов Андрей Александрович, Заместитель начальника отдела, к.т.н, МТУСИ, Москва, Россия Шкиль Константин Юрьевич, Инженер 1-й категории, МТУСИ, Москва, Россия
Для цитирования:
Курахтенков Л.В., Кучумов А.А., Шкиль К.Ю. Разработка алгоритма построения изолиний по рассчитанным данным на сферической поверхности // T-Comm: Телекоммуникации и транспорт. 2017. Том 11. №5. С. 21-25.
For citation:
Kurakhtenkov L.V., Kuchumov A.A., Shkil K.Yu. (2017). Development of an isolines creation algorithm for the calculated data on the spherical surface. T-Comm, vol. 11, no.5, рр. 21-25. (in Russian)
У
Т-Сотт Том 1 1. #5-20 1 7
Сканирование
На этапе сканирования осуществляется проход по массиву с целью определения начальных позиции и направления для построения новой изолинии. Движение по плоскости осуществляется слегка странным способом, изображенном на рис. 3, смысл этого будет раскрыт позже.
50 50 50 50 50 50 50
2% 30 40 50 60 бр 90 4L -f
Ж 20 30 43 _8g| J 2 Д? 4L
20 40 20 80 83 45 76 39 29 30
Рис. 3. Этап сканирования плоскости
Рассматриваются два основных события: вход в зону и выход из неё. В случае входа, построение изолинии начинается из предыдущей точки маршрута (красные звездочки на рис. 3), в случае выхода — из текущей точки (зеленые звездочки на рис. 3). Уже на этом этапе следует учитывать то, что точка справа от последней точки в строке - первая точка строки. При входе в зону движение начинается влево от направления сканирования, при выходе - вправо, таким образом, рассмотренная точка области окажется справа от изолинии. Например, на рисунке, первая зеленая звездочка -точка начала построения изолинии. Событие было получено при выходе из зоны, направление сканирования было «вверх». Таким образом, построение начинается из точки со звездочкой в направлении «вправо», а точка со значением 90 оказывается справа от изолинии, как это и требуется. После того как стал понятен принцип определения точек для построения кривых, можно догадаться, почему сканирование не осуществляется построчно или по столбцам (иначе, не будут обнаружены зоны, содержащиеся в строках/столбцах). Данное сканирование осуществляется для каждой строки исходного массива. Во избежание повторного построения одних и тех же изолиний, точки сетки, ограничивающие зону, вокруг которой уже была построена изолиния (те точки, по которым осуществляется движение во время построения), маркируются в отдельном массиве меток.
Если событие входа/выхода произошло в маркированной точке, построение изолинии не производится. Может показаться неправильным, что после построения изолинии точки вокруг зоны становятся недоступными для нового события, хотя могут быть так же внешними точками для другой зоны (как например на рис. 2 в бой строке). Это не несет ошибки, так как каждая зона имеет как минимум одну уникальную внешнюю точку, которая при данном методе сканирования будет обнаружена либо при входе, либо при выходе.
Построение изолинии
Псевдоязыком алгоритм движения можно описать следующим образом:_
I [ока (текущая позиция пе совпадает со стартовой или Не было движения или
Текущее направление не совпадает со сортовым направлением) { Пока спереди свободно и справа занято { переместиться на позицию вперед};
Если справа свободно - повернуть направо; Иначе - повернуть налево;
Где «занято» и «свободно» следует понимать, как принадлежность точки в заданном направлении к исследуемой зоне.
Как видно из алгоритма, зона всегда будет оставаться справа по направлению движения. В силу «закольцованно-сти» сетки как по горизонтали, так и по вертикали, движение в конечном итоге достигнет стартовой позиции (или совершит 4 поворота на месте в вырожденном случае отверстия из одной точки). Выбор соседней точки в массиве данных осуществляется с учетом будущих преобразований плоскости к сфере. Например, для выбора точки справа от точки с координатами (i,j), выбирается точка (i, j+1), если j+1 не превосходит ширины массива, и точка (i, 0) в противном случае. С выбором точек по вертикали сложнее. Вводится параметр Yinv, определяющий, произошла ли инверсия оси Y. Инверсия может произойти, если в процессе построения изолинии был пересечен один из полюсов будущей сферы (первая и последняя строка массива). Тогда, двигаясь в том же направлении по оси Y в нашей сферической модели, на двумерной плоскости мы должны двигаться в обратном, пока снова не пересечем полюс.
Таким образом, при выборе точки в направлении вверх от точки (i, j), выбирается точка (i+Yjnv, j), если i+Y|nv лежит в диапазоне допустимых значений строк. Так как вся верхняя/нижняя строка представляют собой одну и ту же точку (значения предварительно усреднены для всей строки), обрабатывать их нужно отдельно. Например, при запросе точки из второй строки в направлении вверх (инверсии нет), проверяется, доступен ли полюс для перехода (является ли он зоной). Если полюс не зона, то переход осуществляться не будет и алгоритм повернет направо в этой точке, поэтому возвращается точка с координатой {i+Yinv, j), иначе, будет осуществлен переход через полюс, тогда меняется знак Yinv и возвращается точка (i, j ± width/2), где знак зависит от того, в левой или правой половине таблицы находилась предыдущая точка, a width — ширина массива.
Теперь о самом построении изолинии. На каждом шаге движения зона находится справа по направлению движения. Если обозначить значение в текущей точке вне зоны как О, а значение в зоне справа от текущего как I, то исследуемое значение V е(0, /], при чем расстояние от точки вне зоны
до точки в которой функция принимает исследуемое значение в силу линейности интерполяции можно посчитать по следующей формуле:
dJ^-
I-O
С учетом этого расстояния в процессе движения расставляются точки, составляющие изолинию (рис, 4),
Аппроксимация точек построенных кривых
В качестве дополнительного этапа алгоритма можно провести аппроксимацию точек полученных ломанных, что приведет к «сглаживанию» углов, которые могут быть острыми (рис. 4, угол на точке со значением 4). Метод вполне себе эвристический и вкратце представляет собой следующее:
Для каждых 3 точек контура строим 2 точки, координаты которых усредняют координаты исходных точек, и заменяем новыми точками среднюю из трех.
T-Comm Vol. 1 1. #5-201 7
Рис. 6. Результат построения изолиний
ООО
12 3
Рис. 4. Построение изолинии
На рисунке 5 красным цветом отмечены исходные точки, желтым цветом отмечена точка, полученная после первого усреднения, зеленым - точки, полученные в результате усреднения точек двух из трех треугольников.
Повторное применение алгоритма приносит дополнительное увеличение гладкости, однако, еще сильнее снижает точность результирующей изолинии.
Результат
После преобразования плоскости, представляемой сеткой данных, к сфере, полученный набор изолиний становится пространственными кривыми и готов к визуализации на трехмерной модели. В качестве примера можно привести использование данного алгоритма в комплексе имитационного моделирования спутниковых систем, созданном в МТУСИ [4], [5] (рис. 6).
Вывод
В результате проделанной работы был получен алгоритм, принимающий на вход прямоугольную сетку данных и исследуемое значение, и возвращающий набор замкнутых, ориентированных кривых без самопересечений. Координаты данных кривых на сфере, представляемой массивом данных, соответствуют положению на этой сфере исследуемых значений (с учетом модели интерполяции). Ориентация кривых позволяет однозначно определить исследуемые зоны, даже если зона сложная и имеет некоторое семейство вложенных отверстий. В качестве дополнительного параметра алгоритм может принимать параметр аппроксимации, с учетом которого построенные кривые приводятся к более «гладкому» виду.
1. Переберин А.Б. Построение изолиний с автоматическим масштабированием. Вычислительные методы и программирование, 2001. Т. 2. С. 22-32.
2. Акимов A.A., Курахтепков Л.В.. Смирнов С.А., Чазов ВВ. Оценка состояния орбитальной группировки системы связи «Гло-балстар» и связанных с ним ограничений в обслуживании абонентов // Технологии и средства связи. №1. 2016. С. 58-63.
3. Акимов A.A., Курахтепков Л.В., Смирнов С.А., Чазов ВВ. Система персональной спутниковой связи Iridium: 18 лет на орбите //Технологии и средства связи. №2. 2016. С. 56-61.
4. Аджемов С.С,, Кучумов A.A. Универсальный комплекс имитационного моделирования спутниковых систем "СатСтат" // Т-Сошш: Телекоммуникации и транспорт. 2008. №2, С. 25-28.
5. Аджемов С.С.. Кузнецов Г.А., Кучумов A.A. Имитационное моделирование спутниковых телекоммуникационных систем. Труды МТУСИ. Москва, 2007. С. 164-167. "
Литература
7Т>
COMPUTER SCIENCE
DEVELOPMENT OF AN ISOLINES CREATION ALGORITHM FOR THE CALCULATED DATA
ON THE SPHERICAL SURFACE
Leonid V. Kurakhtenkov, MTUCI, Moscow, Russia, lkurakht@srd.mtuci.ru Andrei A. Kuchumov, MTUCI, Moscow, Russia, kuchumov@gmail.com Konstantin Yu. Shkil, MTUCI, Moscow, Russia, shkil-k@mail.ru
Abstract
Visualization of multivariable functions and, in particular, functions on the plane has important practical importance for the analysis of the processes described by these functions. Isolines (also named contour lines) - one of such visualization methods. Authors of the article have been faced with a task to develop the algorithm matching function range on the plane with a set of closed oriented curves without self-intersections, which bounds researched areas. Orientation for each curve should be selected in such way that in process of movement along it area will be at the right side. These curves' properties allow to define unambiguous bounded area even if it contains holes. That makes possible applying to them filling algorithms. Also there was another problem to adapt an algorithm for a case when the plane is transformed to the sphere. It was necessary to carry out correct plane's borders crossing. The case when special point of the sphere (point to which more than one point of the plane are related) belongs to a curve was considered separately. The algorithm was developed in C++ language and tested by OpenGL toolset.
The developed visualization is applied in the complex of simulation modeling of satellite systems created in MTUCI. In addition, approximation algorithm, which provides smoothing of angles for better graphical representation of the calculated curves, was developed. This algorithm can add new points to a curve, thereby artificially increasing resolution of the researched discrete grid of data. In final implementation, the level of smoothing is the parameter on which smoothness of curves depends. Relevance of this work is that there is no ready solution, applicable for a two-dimensional data model which is considered as a three-dimensional spherical object. This implementation can be applied in the fields researching near-earth processes or processes on the earth's surface such as meteorology or satellite communication.
Keywords: isolines, dynamic programming, algorithms, approximation, interpolation. References
1. Pereberin A.B. (2001). Creation of isolines with automatic scaling. Computing methods and programming, vol. 2, pp. 22-32. (in Russian)
2. Akimov A.A., Kurakhtenkov L.V., Smirnov S.A., Chazov V.V. (2016). Assessment of a status of orbiting group of a communication system "Globalstar" and the related restrictions in service of subscribers. Technologies and communication devices, no 1, pp. 58-63. (in Russian)
3. Akimov A.A., Kurakhtenkov L.V., Smirnov S.A., Chazov V.V. (2016). System of personal satellite communication "Iridium": 18 years in an orbit. Technologies and communication devices, no. 2, pp. 56-61. (in Russian)
4. 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)
5. Adzhemov S.S., Kuznetcov, G.A., Kuchumov A.A. (2007). Simulation modeling of satellite telecommunication systems. MTUCI works. Moscow, pp. 164-167. (in Russian)
Information about authors:
Leonid V. Kurakhtenkov, Head of the laboratory, c.t.s., MTUCI, Moscow, Russia Andrei A. Kuchumov, Deputy chief of department, c.t.s., MTUCI, Moscow, Russia Konstantin Yu. Shkil, Engineer of the l-st category, MTUCI, Moscow, Russia