Design of a terrain surface visualization program using algebra-algorithmic tools
One of the important challenges in meteorological forecasting is a computer visualization of prognosis data, in particular, three-dimensional modeling of terrain surface relief. One of the most popular software tools for developing data visualization applications is OpenGL, a cross-language, cross-p...
Збережено в:
Дата: | 2019 |
---|---|
Автори: | , , |
Формат: | Стаття |
Мова: | Ukrainian |
Опубліковано: |
Інститут програмних систем НАН України
2019
|
Теми: | |
Онлайн доступ: | https://pp.isofts.kiev.ua/index.php/ojs1/article/view/356 |
Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
Назва журналу: | Problems in programming |
Завантажити файл: |
Репозитарії
Problems in programmingid |
pp_isofts_kiev_ua-article-356 |
---|---|
record_format |
ojs |
resource_txt_mv |
ppisoftskievua/3f/b1fbd621b501933ff3f6955133ab1e3f.pdf |
spelling |
pp_isofts_kiev_ua-article-3562024-04-28T11:02:47Z Design of a terrain surface visualization program using algebra-algorithmic tools Проектирование программы визуа-лизации земной поверхности с использованием алгебро-алгоритмического инструментария Проектування програми візуалізації земної поверхні з використанням алгебро-алгоритмічного інструментарію Doroshenko, А.Yu. Kushnirenko, R.V. Yatsenko, O.A. automated software design; algorithm algebra; data visualization; meteorological forecasting; terrain surface relief; software synthesis; three-dimensional modeling; OpenGL UDC 004.4'24 автоматизированное проектирование программ; алгебра алгоритмов; визуализация данных; метеорологическое прогнозирование; рельеф земной поверхности; синтез программ; трехмерное моделирование; OpenGL УДК 004.4'24 автоматизоване проектування програм; алгебра алгоритмів; візуалізація даних; метеорологічне прогнозування; рельєф земної поверхні; синтез програм; тривимірне моделювання; OpenGL УДК 004.4'24 One of the important challenges in meteorological forecasting is a computer visualization of prognosis data, in particular, three-dimensional modeling of terrain surface relief. One of the most popular software tools for developing data visualization applications is OpenGL, a cross-language, cross-platform application programming interface for rendering two-dimensional and three-dimensional vector graphics. Data visualization is a fairly complex task, therefore it is necessary to develop special tools intended for automated generation of source code for such tasks. The paper deals with the further development of previously developed algebra-algorithmic tools in the direction of automated design and synthesis of OpenGL programs. Automated construction of programs is implemented using a high-level language based on Glushkov’s system of algorithmic algebra. The approach is illustrated on designing a terrain surface relief visualization program for weather forecasting task. Одной из важных задач в рамках метеорологического прогнозирования является компьютерная визуализация полученных результатов прогноза, в частности, трехмерное моделирование рельефа земной поверхности. Одним наиболее популярных программных средств разработки приложений в области визуализации данных является OpenGL – спецификация, определяющая независимый от языка программирования кроссплатформенный программный интерфейс для написания приложений, использующих двумерную и трехмерную графику. Визуализация данных является достаточно сложной задачей, поэтому актуальным является вопрос создания специальных средств автоматизации, которые позволяли бы генерировать программный код для таких задач. В статье выполнена настройка ранее созданного алгебро-алгоритмического инструментария на проектирование и синтез OpenGL программ. Автоматизированное конструирование программ выполняется с использованием высокоуровневого языка, основывающегося на системах алгоритмических алгебр Глушкова. Подход продемонстрирован на проектировании программы визуализации рельефа подстилающей поверхности для задачи прогнозирования погоды. Однією з важливих задач в рамках метеорологічного прогнозування є комп’ютерна візуалізація отриманих результатів прогнозу, зокрема, тривимірне моделювання рельєфу земної поверхні. Одним із найпопулярніших програмних засобів розробки застосунків в області візуалізації даних є OpenGL – специфікація, що визначає незалежний від мови програмування кросплатформний програмний інтерфейс для написання застосунків, що використовують двовимірну й тривимірну графіку. Візуалізація даних є досить складною задачею, тому актуальним є питання створення спеціальних засобів автоматизації, що дозволяли б генерувати програмний код для задач з даної предметної області. У статті виконане налаштування раніше створеного алгебро-алгоритмічного інструментарію на проектування та синтез OpenGL програм. Автоматизоване конструювання програм здійснюється з використанням високорівневої мови, що ґрунтується на системах алгоритмічних алгебр Глушкова. Підхід продемонстровано на проектуванні програми візуалізації рельєфу підстильної поверхні для задачі прогнозування погоди. Інститут програмних систем НАН України 2019-06-16 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/356 10.15407/pp2019.02.003 PROBLEMS IN PROGRAMMING; No 2 (2019); 03-10 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 2 (2019); 03-10 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 2 (2019); 03-10 1727-4907 10.15407/pp2019.02 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/356/358 https://pp.isofts.kiev.ua/index.php/ojs1/article/downloadSuppFile/356/3 Copyright (c) 2019 PROBLEMS IN PROGRAMMING |
institution |
Problems in programming |
baseUrl_str |
https://pp.isofts.kiev.ua/index.php/ojs1/oai |
datestamp_date |
2024-04-28T11:02:47Z |
collection |
OJS |
language |
Ukrainian |
topic |
automated software design algorithm algebra data visualization meteorological forecasting terrain surface relief software synthesis three-dimensional modeling OpenGL UDC 004.4'24 |
spellingShingle |
automated software design algorithm algebra data visualization meteorological forecasting terrain surface relief software synthesis three-dimensional modeling OpenGL UDC 004.4'24 Doroshenko, А.Yu. Kushnirenko, R.V. Yatsenko, O.A. Design of a terrain surface visualization program using algebra-algorithmic tools |
topic_facet |
automated software design algorithm algebra data visualization meteorological forecasting terrain surface relief software synthesis three-dimensional modeling OpenGL UDC 004.4'24 автоматизированное проектирование программ алгебра алгоритмов визуализация данных метеорологическое прогнозирование рельеф земной поверхности синтез программ трехмерное моделирование OpenGL УДК 004.4'24 автоматизоване проектування програм алгебра алгоритмів візуалізація даних метеорологічне прогнозування рельєф земної поверхні синтез програм тривимірне моделювання OpenGL УДК 004.4'24 |
format |
Article |
author |
Doroshenko, А.Yu. Kushnirenko, R.V. Yatsenko, O.A. |
author_facet |
Doroshenko, А.Yu. Kushnirenko, R.V. Yatsenko, O.A. |
author_sort |
Doroshenko, А.Yu. |
title |
Design of a terrain surface visualization program using algebra-algorithmic tools |
title_short |
Design of a terrain surface visualization program using algebra-algorithmic tools |
title_full |
Design of a terrain surface visualization program using algebra-algorithmic tools |
title_fullStr |
Design of a terrain surface visualization program using algebra-algorithmic tools |
title_full_unstemmed |
Design of a terrain surface visualization program using algebra-algorithmic tools |
title_sort |
design of a terrain surface visualization program using algebra-algorithmic tools |
title_alt |
Проектирование программы визуа-лизации земной поверхности с использованием алгебро-алгоритмического инструментария Проектування програми візуалізації земної поверхні з використанням алгебро-алгоритмічного інструментарію |
description |
One of the important challenges in meteorological forecasting is a computer visualization of prognosis data, in particular, three-dimensional modeling of terrain surface relief. One of the most popular software tools for developing data visualization applications is OpenGL, a cross-language, cross-platform application programming interface for rendering two-dimensional and three-dimensional vector graphics. Data visualization is a fairly complex task, therefore it is necessary to develop special tools intended for automated generation of source code for such tasks. The paper deals with the further development of previously developed algebra-algorithmic tools in the direction of automated design and synthesis of OpenGL programs. Automated construction of programs is implemented using a high-level language based on Glushkov’s system of algorithmic algebra. The approach is illustrated on designing a terrain surface relief visualization program for weather forecasting task. |
publisher |
Інститут програмних систем НАН України |
publishDate |
2019 |
url |
https://pp.isofts.kiev.ua/index.php/ojs1/article/view/356 |
work_keys_str_mv |
AT doroshenkoayu designofaterrainsurfacevisualizationprogramusingalgebraalgorithmictools AT kushnirenkorv designofaterrainsurfacevisualizationprogramusingalgebraalgorithmictools AT yatsenkooa designofaterrainsurfacevisualizationprogramusingalgebraalgorithmictools AT doroshenkoayu proektirovanieprogrammyvizualizaciizemnojpoverhnostisispolʹzovaniemalgebroalgoritmičeskogoinstrumentariâ AT kushnirenkorv proektirovanieprogrammyvizualizaciizemnojpoverhnostisispolʹzovaniemalgebroalgoritmičeskogoinstrumentariâ AT yatsenkooa proektirovanieprogrammyvizualizaciizemnojpoverhnostisispolʹzovaniemalgebroalgoritmičeskogoinstrumentariâ AT doroshenkoayu proektuvannâprogramivízualízacíízemnoípoverhnízvikoristannâmalgebroalgoritmíčnogoínstrumentaríû AT kushnirenkorv proektuvannâprogramivízualízacíízemnoípoverhnízvikoristannâmalgebroalgoritmíčnogoínstrumentaríû AT yatsenkooa proektuvannâprogramivízualízacíízemnoípoverhnízvikoristannâmalgebroalgoritmíčnogoínstrumentaríû |
first_indexed |
2024-09-16T04:07:52Z |
last_indexed |
2024-09-16T04:07:52Z |
_version_ |
1818527910399574016 |
fulltext |
Інструментальні засоби та середовища програмування
© А.Ю. Дорошенко, Р.В. Кушніренко, О.А. Яценко, 2019
ISSN 1727-4907. Проблеми програмування. 2019. № 2 3
УДК 004.4'24 https://doi.org/10.15407/pp2019.02.003
А.Ю. Дорошенко, Р.В. Кушніренко, О.А. Яценко
ПРОЕКТУВАННЯ ПРОГРАМИ ВІЗУАЛІЗАЦІЇ
ЗЕМНОЇ ПОВЕРХНІ З ВИКОРИСТАННЯМ
АЛГЕБРО-АЛГОРИТМІЧНОГО ІНСТРУМЕНТАРІЮ
Однією з важливих задач в рамках метеорологічного прогнозування є комп’ютерна візуалізація отри-
маних результатів прогнозу, зокрема, тривимірне моделювання рельєфу земної поверхні. Одним із най-
популярніших програмних засобів розробки застосунків в області візуалізації даних є OpenGL – специ-
фікація, що визначає незалежний від мови програмування кросплатформний програмний інтерфейс для
написання застосунків, що використовують двовимірну й тривимірну графіку. Візуалізація даних є до-
сить складною задачею, тому актуальним є питання створення спеціальних засобів автоматизації, що
дозволяли б генерувати програмний код для задач з даної предметної області. У статті виконане налаш-
тування раніше створеного алгебро-алгоритмічного інструментарію на проектування та синтез OpenGL
програм. Автоматизоване конструювання програм здійснюється з використанням високорівневої мови,
що ґрунтується на системах алгоритмічних алгебр Глушкова. Підхід продемонстровано на проектуван-
ні програми візуалізації рельєфу підстильної поверхні для задачі прогнозування погоди.
Ключові слова: автоматизоване проектування програм, алгебра алгоритмів, візуалізація даних, метео-
рологічне прогнозування, рельєф земної поверхні, синтез програм, тривимірне моделювання, OpenGL.
Вступ
Системи прогнозування стають все
більш актуальними у зв’язку зі впрова-
дженням різноманітних автоматизованих
систем прийняття рішень, керування та
оцінки ризиків у різних сферах людської
діяльності. Зокрема, метеорологічне про-
гнозування [1], окрім задоволення потреб
звичайних користувачів, використовується
для розв’язання різноманітних задач у тра-
нспортній галузі (наприклад, авіації), сіль-
ському господарстві, наукових досліджен-
нях тощо. Суттєве значення має актуаль-
ність отриманого прогнозу, його достовір-
ність та оперативність його отримання. Не
менш важливим є наочність відображення
отриманих даних.
В роботі [2] спроектовано та реалі-
зовано сервісно-орієнтовану портальну си-
стему для надання послуг метеорологічно-
го прогнозування на мультипроцесорній
платформі. В рамках системи виконана
двовимірна візуалізація результатів про-
гнозу (ізоліній) за допомогою OpenGL на
графічному прискорювачі [3]. OpenGL [4]
є одним із найпопулярніших програмних
засобів розробки застосунків у області ві-
зуалізації даних. Він визначає незалежний
від мови програмування кросплатформний
програмний інтерфейс для написання про-
грам, що використовують двовимірну й
тривимірну графіку. Реалізація OpenGL
підтримується більшістю виробників апа-
ратних і програмних платформ і включає
декілька бібліотек. Відмітимо, що візуалі-
зація даних є досить складною задачею,
тому актуальним є питання розробки спе-
ціальних засобів автоматизації, що дозво-
ляли б генерувати програмний код для та-
ких задач.
В роботах [5–7] авторами запропо-
новані теорія, методологія та інструмента-
рій для автоматизованого проектування,
синтезу та перетворення програм, що ґру-
нтуються на засобах алгебр алгоритмів та
переписувальних правил. Предметною об-
ластю застосування інструментальних за-
собів, зокрема, є метеорологічне прогно-
зування.
У даній статті виконане налашту-
вання алгебро-алгоритмічного інструмен-
тарію на проектування та генерацію
OpenGL програм. Застосування інструмен-
тарію продемонстроване на задачі триви-
мірної візуалізації рельєфу підстильної по-
верхні. Підстильна поверхня є сукупністю
природних і перетворених (змінених та
створених людиною) ландшафтів на зем-
ній поверхні, що знаходяться у взаємодії з
атмосферою в процесі обміну теплом і во-
логою [1].
https://doi.org/10.15407/pp2019.02.003
Інструментальні засоби та середовища програмування
4
1. Інструментарій алгебр
алгоритмів та його налаштування
на конструювання OpenGL
програм
Підхід до проектування програм,
що розглядається в даній роботі, ґрунту-
ється на засобах систем алгоритмічних ал-
гебр (САА) В.М. Глушкова [5, 6]. САА
призначені для формалізованого подання
схем алгоритмів і програм та їх трансфор-
мації, зокрема, з метою оптимізації за пев-
ними критеріями. САА покладено в основу
інструментарію автоматизованої розробки
програмного забезпечення [5–7].
1.1. Основні конструкції та ін-
струментарій алгоритмічних алгебр.
САА Глушкова (або алгебра Глушкова) є
двоосновною алгеброю
> }; ,{< GAOpPrGA ,
де Pr й Op – множини логічних умов й
операторів, визначених на інформаційній
множині IS ; GA – сигнатура операцій.
Оператори є відображеннями (можливо,
частковими) інформаційної множини в се-
бе, логічні умови – предикати на множині
IS , які приймають значення тризначної
логіки μ} ,1 ,0{3 Е , де 0 – “хибність”, 1 –
“істина”, μ – “невизначеність”. Сигнатура
21 GA складається з системи 1
логічних операцій (диз’юнкції, кон’юнкції,
заперечення, лівого множення оператора
на умову), що приймають значення в мно-
жині Pr , і системи 2 операторних опе-
рацій, що приймають значення в множині
Op (композиції, альтернативи, циклу та
ін.). Операторні конструкції будуть розг-
лянуті далі.
Предикати й оператори поділяються
на базисні та складені. Базисні поняття
вважаються атомарними, неподільними
абстракціями та пов’язані з предметною
областю алгоритму, що проектується.
Складені елементи будуються з базисних
за допомогою операцій послідовного й па-
ралельного виконання операторів та/або
логічних операцій.
На САА ґрунтується алгоритмічна
мова САА/1 [5, 6], призначена для багато-
рівневого структурного проектування й
документування послідовних та паралель-
них алгоритмів і програм. Перевагою її ви-
користання є можливість опису алгоритмів
у природно-лінгвістичній формі. Подання
операторів мовою САА/1 називаються
САА-схемами.
Основними операторними констру-
кціями мови САА/1 є такі:
композиція (послідовне виконан-
ня операторів):
“operator 1”;
“operator 2”;
альтернатива (розгалуження):
IF ‘condition’ THEN
“operator 1”
ELSE
“operator 2”
END IF;
цикл:
WHILE ‘condition’
LOOP “operator”
END OF LOOP.
В роботах [5–7] розглядаються до-
даткові операції, призначені для формалі-
зованого проектування паралельних алго-
ритмів.
Інструментарій проектування та си-
нтезу програм (ІПС) ґрунтується на вико-
ристанні САА й інтегрує три форми по-
дання алгоритмів: аналітичну, природно-
лінгвістичну й графову.
Основними компонентами системи
ІПС є такі:
діалоговий конструктор синтак-
сично правильних програм (ДСП-конст-
руктор), призначений для проектування
схем алгоритмів та синтезу програм цільо-
вими мовами програмування Java, C, C++;
редактор граф-схем;
база даних, у якій зберігається
опис конструкцій САА і базисних понять,
а також шаблони їх програмних реалізацій;
Інструментальні засоби та середовища програмування
5
генератор САА-схем на основі
схем більш високого рівня (гіперсхем).
За допомогою ДСП-конструктора
виконується порівневе проектування схем
алгоритмів зверху вниз за допомогою де-
талізації мовних конструкцій САА. На ко-
жному кроці конструювання система надає
користувачу на вибір лише ті конструкції,
підстановка яких у текст схеми, що фор-
мується, не порушує її синтаксичну прави-
льність. ДСП-конструктор використовує
список конструкцій САА і дерево конс-
труювання алгоритму. У процесі проекту-
вання обрані користувачем операції відо-
бражаються в дереві з подальшою деталі-
зацією їхніх змінних. Залежно від типу об-
раної змінної (логічної або операторної),
система пропонує відповідний список опе-
рацій САА. На основі побудованого дерева
виконується генерація схеми алгоритму та
тексту програми цільовою мовою програ-
мування.
З метою налаштування системи ІПС
на проектування й синтез OpenGL про-
грам, в базу даних системи включені нові
конструкції, що розглядаються у наступ-
ному підрозділі.
1.2. Розширення САА конструк-
ціями, орієнтованими на проектування
OpenGL програм. Основним принципом
роботи OpenGL [4] є отримання наборів
векторних графічних примітивів у вигляді
точок, ліній та багатокутників з подаль-
шою математичною обробкою отриманих
даних та побудовою растрової картинки на
екрані та/або в пам’яті. Векторні трансфо-
рмації та растеризація виконуються графі-
чним конвеєром, який можна розглядати
як дискретний автомат. Команди OpenGL
потрапляють в одну з двох груп: вони або
додають графічні примітиви на вхід конве-
єра, або конфігурують конвеєр на різне ви-
конання трансформацій.
Основна бібліотека OpenGL оброб-
ляє і відображує у буфері кадру графічні
примітиви з урахуванням певного числа
вибраних режимів. Кожний примітив – це
точка, відрізок, багатокутник і т. д. Кож-
ний режим може бути змінений незалежно
від інших. Визначення примітивів, вибір
режимів та інші операції описуються за
допомогою команд у формі викликів фун-
кцій прикладної бібліотеки. Примітиви ви-
значаються набором з однієї або більше
вершин. Вершина визначає точку, кінець
відрізку або кут багатокутника. З кожною
вершиною асоціюються певні дані (коор-
динати, колір, нормаль, текстурні коорди-
нати і т. п.), що називаються атрибутами.
У переважній більшості випадків кожна
вершина обробляється незалежно від ін-
ших.
В рамках OpenGL використовується
VBO (Vertex Buffer Objects) – технологія,
що дозволяє зберігати координати вершин
спільно з їх атрибутами у відеопам’яті [4].
Робота з VBO складається з таких етапів:
1) створення буферів, передача в
буфери координат і атрибутів вершин, пе-
редача даних у відеопам’ять;
2) активація потрібного буфера,
візуалізація (рендерінг) буфера та його де-
активація;
3) видалення даних у відеопам’яті.
Існує низка бібліотек, створених
над або на додаток до OpenGL. Зокрема, в
програмі візуалізації поверхні, що розгля-
дається в даній роботі, використовується
GLFW (Graphics Library Framework) [8] –
кросплатформна бібліотека з відкритим
кодом для створення вікон, контексту
OpenGL і керування введенням, а також
бібліотека GLM (OpenGL Mathematics) –
математика для OpenGL [9].
Далі наведено список основних ба-
зисних операторів, призначених для прое-
ктування OpenGL програм і доданих в ал-
гебру алгоритмів.
1. Створення контролера вікна:
“Create and initialize window
controller (controller)”,
що включає ініціалізацію бібліотеки
GLFW та створення вікна застосунку.
2. Генерація імені масиву атрибутів
вершин зі збереженням його у змінній var:
“Generate vertex attribute array
name (var)”.
3. Генерація імені буфера:
“Generate buffer name (var)”.
Інструментальні засоби та середовища програмування
6
4. Зв’язування масиву атрибутів ве-
ршин з іменем:
“Bind the vertex attribute array to
name (var)”.
5. Зв’язування буферу з атрибутами
вершин:
“Bind the buffer (buffer) to vertex
attributes”.
6. Копіювання масиву даних корис-
тувача в буфер атрибутів вершин:
“Copy the user data (data) to the
vertex attributes buffer”.
7. Зв’язування буферу з індексами
масиву вершин:
“Bind the buffer (buffer) to vertex
array indices”.
8. Копіювання масиву даних корис-
тувача в буфер індексів вершин:
“Copy the user data (data) to the
vertex indices buffer”.
9. Зберігання положення атрибута
atr_name в шейдерній програмі program у
змінну var:
“Save the location of an attribute
(atr_name) in the shader program
(program) to variable (var)”.
10. Активація масиву атрибутів ве-
ршин:
“Enable a generic vertex attribute
array (arr)”.
11. Видалення зв’язку масиву атри-
бутів вершин з іменем:
“Unbind the vertex attribute array
to a name”.
12. Створення та використання
шейдерної програми (коду, що виконуєть-
ся на графічному прискорювачі) включає в
себе такі оператори:
“Create shader program (prog_id)”;
“Create vertex/fragment shader (var)
based on the source file (file)”;
“Attach shader (shader_id) to program
(prog_id)”;
“Link shader program (prog_id)”;
“Check shader program (prog_id)”;
“Use shader program (prog_id)”,
де prog_id – цілочислена змінна, у якій за-
даний ідентифікатор програми; file – файл
з вихідним програмним кодом вершинного
або фрагментного шейдера. Шейдери
під’єднуються до програми prog_id, після
чого виконується її збирання, перевірка та
використання.
13. Установка матриці моделі виду
проекції (Model View Projection, MVP) для
контролера і шейдерної програми:
“Set MVP matrix for controller
(controller) and shader program
(program)”.
14. Візуалізація трикутників на ос-
нові масиву даних користувача:
“Render triangles from the user array
data (data)”.
15. Видалення масиву атрибутів ве-
ршин:
“Delete vertex attribute array (arr)”.
16. Видалення буферу:
“Delete buffer (buffer)”.
Приклад використання вищерозгля-
нутих конструкцій наведено у розділі 2.
2. Застосування системи ІПС для
проектування програми
візуалізації рельєфу
У даному розділі розглядається ви-
користання інтегрованого інструментарію
для автоматизованої розробки OpenGL
Інструментальні засоби та середовища програмування
7
програми візуалізації рельєфу підстильної
поверхні.
Далі наведено САА-схему основно-
го алгоритму візуалізації, побудовану за
допомогою системи ІПС. Схема містить
один складений оператор – main, у якому
використовуються операції САА та базисні
оператори, розглянуті у попередньому ро-
зділі. У схемі, зокрема, вказано такі змінні:
terrain – масив даних користувача (точки
поверхні, задані координатами x, y, z), що
зчитуються з бінарного файлу input_bin;
VAO – масив атрибутів вершин; VBO – бу-
фер атрибутів вершин; EBO – буфер індек-
сів вершин.
SCHEME TERRAIN SURFACE
VISUALIZATION ====
“Terrain surface visualization using
OpenGL”
END OF COMMENTS
“main”
==== “Create and initialize window
controller (controller)”;
“Create mesh (terrain) based on the
binary data from file (input_bin)”;
“Create shader program (program)”;
“Declare the list of variables (VAO,
VBO, EBO) of type (unsigned int)”;
“Generate vertex attribute array name
(VAO)”;
“Generate buffer name (VBO)”;
“Generate buffer name (EBO)”;
“Bind the vertex attribute array to name
(VAO)”;
“Bind the buffer (VBO) to vertex
attributes”;
“Copy the user data (terrain) to the
vertex attributes buffer”;
“Bind the buffer (EBO) to vertex
array indices”;
“Copy the user data (terrain) to the
vertex indices buffer”;
“Save the location of an attribute
(aPos) in the shader program
(program) to variable (vertloc)”;
“Define an array of generic vertex
attribute data (vertloc) of type
(GL_FLOAT) and size
(3 * sizeof(float))”;
“Enable a generic vertex attribute array
(vertloc)”;
“Unbind the vertex attribute array
to a name”;
WHILE NOT ‘Window controlled by
(controller) should
close’
LOOP
“Specify clear values for the color
buffers (0.0f, 0.0f, 0.5f, 1.0f)”;
“Clear colour and depth buffers”;
“Enable depth test”;
“Disable polygon culling”;
“Use shader program (program)”;
“Set MVP matrix for controller
(controller) and shader program
(program)”;
“Bind the vertex attribute array to
name (VAO)”;
“Render triangles from the user array
data (terrain)”;
“Unbind the vertex attribute array
to a name”
END OF LOOP;
“Delete vertex attribute array (VAO)”;
“Delete buffer (VBO)”;
“Delete buffer (EBO)”;
“Return value (0)”;
END OF SCHEME TERRAIN SURFACE
VISUALIZATION
На рис. 1 показано копію екрану си-
стеми ІПС з побудованою схемою.
Далі наведено САА-схему
DATAREADER, що містить визначення
основних структур даних задачі (вершина
Vertex, вектори вершин Points та індексів
Indices, сітка Mesh), а також загальне ви-
значення класу DataReader, призначеного
для зчитування точок поверхні з файлу.
SCHEME DATAREADER ====
“Data reader for the terrain surface
visualization task (header file)”
END OF COMMENTS
Інструментальні засоби та середовища програмування
8
Рис. 1. Копія екрану системи ІПС з побудованою САА-схемою
алгоритму візуалізації поверхні
STRUCTURE Vertex (
“Declare a variable (x) of type (float)”;
“Declare a variable (y) of type (float)”;
“Declare a variable (z) of type (float)”);
“Define vector type (Points) of type
(Vertex)”;
“Define vector type (Indices) of type
(unsigned)”;
STRUCTURE Mesh (
CONSTRUCTOR Mesh(“Declare a
constant (points) of type (Points&)”);
“Declare a constant (points) of type
(Points)”;
“Declare a constant (indices) of type
(Indices)”);
CLASS DataReader
PUBLIC:
CONSTRUCTOR DataReader(“Declare a
string constant (filename)”);
METHOD getMesh(): Mesh;
PRIVATE:
“Declare a variable (mesh) of type
(Mesh)”
END OF CLASS DataReader;
END OF SCHEME DATAREADER
На основі побудованих САА-схем в
системі ІПС виконана генерація програм-
ного коду C++, що використовує OpenGL.
Окрім реалізації основної функції (main),
програма містить чотири основні класи:
Controller (контролер вікна застосунку),
DataReader (зчитування вхідних даних),
Shader та ShaderProgram (шейдерна про-
грама).
Проведено експеримент з виконан-
ня розробленої OpenGL програми на гра-
фічному прискорювачі. На рис. 2, а наве-
дено тривимірне зображення рельєфу підс-
тильної поверхні у межах області моделю-
вання. На рис. 2, б показано вертикальний
переріз поверхні уздовж 48 пн. ш.
Інструментальні засоби та середовища програмування
9
а б
Рис. 2. Результати роботи програми візуалізації рельєфу підстильної поверхні:
а – тривимірне зображення рельєфу у межах області моделювання,
б – вертикальний переріз поверхні уздовж 48 пн. ш.
Висновки
Виконане налаштування алгебро-
алгоритмічного інструментарію на проек-
тування та синтез OpenGL програм. Авто-
матизоване конструювання програм вико-
нується з використанням високорівневої
мови, що ґрунтується на системах алгори-
тмічних алгебр Глушкова та орієнтована
на природно-лінгвістичну форму подання
алгоритмів. В основу інструментарію пок-
ладене діалогове проектування схем алго-
ритмів зверху вниз на основі суперпозиції
операцій алгебри алгоритмів. На основі
схем виконується генерація коду цільовою
мовою програмування. Підхід продемонс-
тровано на проектуванні програми візуалі-
зації рельєфу підстильної поверхні для за-
дачі прогнозування погоди.
Література
1. Прусов В.А., Дорошенко А.Ю. Моделю-
вання природних і техногенних процесів в
атмосфері. Київ: Наукова думка, 2006.
542 с.
2. Дорошенко А.Ю., Іваненко П.А., Овдій
О.М., Павлючин Т.О., Вітряк Є.А. До
створення Інтернет-порталу надання пос-
луг метеорологічного прогнозування на
мультипроцесорній платформі. Проблеми
програмування. 2015. № 3. С. 24–32.
3. Бекетов О.Г., Вітряк Є.А., Мироненко І.О.,
Овдій О.М. Розвиток Інтернет-порталу ме-
теорологічного прогнозування на мульти-
процесорній платформі. Проблеми програ-
мування. 2016. № 2–3. С. 246–253.
4. OpenGL – The Industry Standard for High
Performance Graphics [Електронний ре-
сурс]. Режим доступу до ресурсу:
https://www.opengl.org (дата звернення
19.04.2019 р.).
5. Андон Ф.И., Дорошенко А.Е., Жереб К.А.,
Шевченко Р.С., Яценко Е.А. Методы алге-
браического программирования. Формаль-
ные методы разработки параллельных про-
грамм. Киев: Наукова думка, 2017. 440 с.
6. Андон Ф.И., Дорошенко А.Е., Цейт-
лин Г.Е., Яценко Е.А. Алгеброалгоритми-
ческие модели и методы параллельного
программирования. Киев: Академпериоди-
ка, 2007. 631 с.
7. Doroshenko A., Zhereb K., Yatsenko O.
Developing and optimizing parallel programs
with algebra-algorithmic and term rewriting
tools. Communications in Computer and
Information Science. Information and
Communication Technologies in Education,
Research, and Industrial Applications. Berlin:
Springer, 2013. Vol. 412. P. 70–92.
8. GLFW [Електронний ресурс]. Режим дос-
тупу до ресурсу: https://www.glfw.org (дата
звернення 19.04.2019 р.).
9. GLM. OpenGL Mathematics [Електронний
ресурс]. Режим доступу до ресурсу:
https://glm.g-truc.net/0.9.9/index.html (дата
звернення 19.04.2019 р.).
Інструментальні засоби та середовища програмування
10
References
1. Prusov V.A. & Doroshenko A.Yu. (2006)
Simulation of natural and anthropogenic
processes in the atmosphere. Kyiv: Naukova
dumka. (in Ukrainian)
2. Doroshenko A.Yu., Ivanenko P.A., Ovdii
O.M., Pavliuchyn T.O. & Vitriak I.A. (2015)
Creation of an Internet portal providing
meteorological forecasting services on
multiprocessor platform. Problems in
programming. (3). P. 24–32. (in Ukrainian)
3. Beketov O.G., Vitriak E.A., Myronenko I.O.,
Ovdii O.M. (2016) Development of
meteorological forecasting web portal on
multiprocessor platform. Problems in
programming. (2–3). P. 246–253. (in
Ukrainian)
4. OpenGL – The Industry Standard for High
Performance Graphics. [Online] Available
from: https://www.opengl.org [Accessed: 19
April 2019]
5. Andon P.I. et al. (2017) Methods of algebraic
programming. Formal methods of parallel
program development. Kyiv: Naukova
dumka. (in Russian)
6. Andon P.I. et al. (2007) Algebra-algorithmic
models and methods of parallel programming.
Kyiv: Akademperiodyka. (in Russian)
7. Doroshenko A., Zhereb K. & Yatsenko O.
(2013) Developing and optimizing parallel
programs with algebra-algorithmic and term
rewriting tools. In Proc. 9th International
Conference “ICT in Education, Research, and
Industrial Applications” (ICTERI 2013),
Revised Selected Papers. Kherson, Ukraine,
19-22 June 2013. Berlin: Springer. 412.
P. 70-92.
8. GLFW. [Online] Available from:
https://www.glfw.org [Accessed: 19 April
2019]
9. GLM. OpenGL Mathematics. [Online]
Available from: https://glm.g-truc.net/0.9.9/
index.html [Accessed: 19 April 2019]
Одержано 25.04.2019
Про авторів:
Дорошенко Анатолій Юхимович,
доктор фізико-математичних наук,
професор, завідувач відділу теорії
комп’ютерних обчислень,
професор кафедри автоматики та
управління в технічних системах
НТУУ “КПІ імені Ігоря Сікорського”.
Кількість наукових публікацій в
українських виданнях – понад 150.
Кількість наукових публікацій в
зарубіжних виданнях – понад 50.
Індекс Хірша – 5.
http://orcid.org/0000-0002-8435-1451,
Кушніренко Роман Владиславович,
магістр кафедри Теорії та технології
програмування факультету комп’ютерних
наук та кібернетики.
https://orcid.org/0000-0002-1990-8727,
Яценко Олена Анатоліївна,
кандидат фізико-математичних наук,
старший науковий співробітник.
Кількість наукових публікацій в
українських виданнях – 44.
Кількість наукових публікацій в
зарубіжних виданнях – 14.
Індекс Хірша – 2.
http://orcid.org/0000-0002-4700-6704.
Місце роботи авторів:
Інститут програмних систем
НАН України,
03187, м. Київ,
проспект Академіка Глушкова, 40.
Тел.: (044) 526 3559.
Київський національний університет
імені Тараса Шевченка,
01601, Київ, вул. Володимирська, 60.
E-mail: doroshenkoanatoliy2@gmail.com,
romashka1996@gmail.com,
oayat@ukr.net
mailto:oayat@ukr.net
|