Қазіргі заманғы визуализациялық құралдар

0
692
Иллюстрация: Freepik.com

Резюме

Осы мақалада Scilab бағдарламасындағы кіріктірілеген тіл функциясы бар пакет туралы қарастырдық, ал келесіде – бар кітапханада және C немесе Fortran тілдерінде жазылған функция базасында кеңею пакетін құруды зерттейміз.

Каталогтар құрылымы. Пакетке енетін барлық дерекқаптар бір ғана каталогта жатуы тиіс, оны атауы пакет атауымен сәйкес болуы тиіс. Пакеттің негізгі каталогының ішінде сегіз кеші каталогтар бар, олардың әрқайсысының өз қызметі бар:

  • macros: Scilab кіріктірілген тілінің макростары орналасқан, яғни .sci кеңею дерекқап-функциялар, сол сияқты buildmacros.sce жинақталған скриптері
  • src: егер пакет функциялары бағдарламалаудың бөгде тілінде жазылған болса, онда осы каталогта бағдарлама ішіндегі-функциялардың бастапқы кодымен дерекқаптар мен sce. оларды жинақтаған сценарий болуы қажет.
  • sci_gateway: бұл каталогта бағдарламалаудың (C, Fortran) бөгде тілінде жазылған функциялар үшін бағдарлама ішіндегі-интерфейстер орналасуы тиіс.
  • help: бұл каталогта нақты бір үлгіге сәйкес құрастырылған XML-файлдер жиынтығы болып саналатын анықтама мәтіндері орналасуы тиіс. Анықтамалық материалдар ағылшын және француз тілдерінде, ал кіші каталогтар engжәне fr атауларымен берілуі мүмкін. Бұдан басқа, осы каталогта анықтамалық материалдары жинақтаған дәстүрлі скрипт орналасуы қажет: builder_help.sce.
  • etc: егер пакет өз жұмысында тағы да басқа дерекқаптарды (.html, .pdf, .txt, .jpeg, …) қолданса, онда ол осы жерде орналасуы тиіс. Сол сияқты, пакеті жүйеден жүктеу мен алып тастауды дайындау скрипттері орналасады.
  • tests: бұл каталог, кеңею пакетінің жұмыс істеуі мен қамту сыпайлылығын тестілеу үшін қажет .tst кеңейтілген скриптері болады.
  • demos: бұл каталогта пакет жұмысын көрсететін мысалдар орналастырылады.
  • includes: С алдыңғы мәтін үшін атауы бар файлдер (.h кеңею) орналасады.

Сол сияқты, базалық каталогта тағы да төрт дерекқаптар орналасады:

  • txt: кеңею пакетін суреттеу, сонымен қатар, UNIX-жүйесі үшін стандартты болатын – оны орнату процесі.
  • sce: барлық пакетті жинаудың негізгі скрипті. Әдетте ол сәйкес ішкі каталогта орналасқан қалған барлық скриптерді біртіндеп шақырады.
  • sce: Scilab-қа кеңею пакетін жүктеудің негізгі скрипті.
  • txt: пакет таратылатын лицензия мәтіндерімен дерекқаптар.

Келтірілген құрылым базалық болып табылады, сондықтан пакетте болатын  барлық каталогты енгізеді, дегенмен бұл олардың міндетті түрде болуы мүмкін емес. Мысалы, егер пакет үшін тестілік мысалдар құрылмаса, онда ол tests каталогін құра алмайды, ал егер пакет үшін қолдану мысалдары дайындалмаса, онда ол demos каталогісіз жұмыс атқара алады.

Барлық скриптерді,  макростар мен дерекқаптарды қарапайым мәтіндік редакторда құруға болады, тек қана пакеті жинау және жұмыс атқара білуін тексеруде Scilab-ты жүргізу қажет.

Кей уақыттарда түрлі деректерді визуализациялау қажетілігі ойыма келеді. Әдетте, бұл қандай да бір математикалық моделдің есептеу нәтижесі. Әшейінде, мен, мысалы OpenDX дайын бағдарламасын қолдануға талпынамын. Кей жағдайда визуализация өз қосымшасына ықпалдандыруды (интегралдау) қажет етеді. Егер визуализация күрделі болмаса, онда өзін жүзеге асыру үшін күрделі болмайды, ал егер қандай да бір ең қиын керек болса, онда велосипед ойлап шығару үшін ынта болмай қалады.
Графика немесе бағдарламаны салу үшін қандай да болса кітапхананы табу ынтасы пайда болады.

Бұл орада ең қызығы басталады – мүмкіндігі жеткілікті және қолдануға ыңғайлы және жеңіл кітапхана/бағдарлама таңдау қажет. Коммерциялық нұсқалар қарастырылмайды.

Авторлар баяғыдан бері дербес таратылатын бағдарлама көмегімен инженерлік және ғылыми есептеулерге арналған кітап жазуды ойластырған. Біз дербес таратылатын Scilab компьютерлік математика жүйесіне өз таңдауымызды бағыттадық. Scilab инженерлік және ғылыми есептеулерді орындауға арналған. Өз мүмкіндігі бойынша Scilab белгілі математикалық пакет Mathcad-ке, ал өз интерфейсі бойынша MATLAB пакетіне ұқсас.

Алайда Scilab пакеті – дербес таратылатын бағдарлама, пайдаланушыға  ақысыз беріледі. Әртүрлі операциялық жүйлер үшін Scilab нұсқасы бар: ОС Linux үшін, ОС қожалығы Windows (оның ішінде MS Windows Vista үшін) және MacOS үшін. Кітапты жазу барысындағы ең соңғы нұсқасы 4.1.1 пакеті болды. Оның негізінде осы кітап жазылып шықты.

MathGL программалық пакеті

 Визуализация – адам көзіне көріне бермейтін сәулелендіру аймағын өзгерту әдісі (инфрақызыл, ультра күлгін, рентген, ультра дыбыс және тағы басқа.) және көрінетін (қара-ақ немесе түрлі-түсті)сәуле тарататын нысандар бейнесі. Визуализацияның бірнеше әдістері бар: фотографикалық (электрондық-оптикалық түрлендіргіш), жылылық  бөліну әдісі, көрінбейтін лазер сәулелігін көрінетіндікке өзгерту және тағы басқа. Визуализация кеңінен медицина, дефектоскопия,техникада қолданылады (ИнтроскопияТомография).

Формалды үлгілерді зерттеу процесінде олардың визуализациясы жүргізіледі. Алгоритмдерді визуализациялау үшін блок-сұлба қолданылады: нысандар арасындағы кеңістік үйлесімділік – сызбалар, электр тізбегінің үлгісі – электрикалық сұлба, қондырғылардың логикалық үлгісі – логикалық сұлбалар және тағы басқа [4].

Дербес тұғырлы MathGL кітапханасы ауқымды спекторлар графикасын құру үшін белгіленген (қисық, заттар беті, деңгейлер беті және тағы басқа.). Растрлік (PNG, JPEG) немесе векторлік (EPS, SVG, TeX, OBJ) форматтарға және консалдік режимде сурет салуда графиктерді экспорттау мүмкіндігі бар.

Жаңа нұсқада сурет салу жылдамдығы едәуір арттырылған, интерфейс сәйкестендірілген, жаңа типті графиктер мен қарапайымдылар (примитив), 3d форматтағы экспорт (OBJ, PRC, OFF,…) және LaTeX, тым көбірек ұсақ жақсартулар енгізілген [5].

GNU ғылыми кітапханасы  

Анықтамалық басшылық

Басылым 1.16, GSL үшін 1.16 нұсқасы

Бұл дерекқаптарды GNU (GSL) ғылыми кітапханасы құжаттайды, ғылыми есептеулер үшін сандық процедура топтамасы. Бұл 1,16 кітапхананың нұсқасына сәйкес келеді. Осы басшылықтағы қандай да қателер туралы баг-GSL на gnu.org. хабарласыңыз.

GSL туралы жан-жақты ақпаратты жобаның үй бетінде табуға болады http://www.gnu.org/software/gsl/.

Осы басшылықтың баспа данасы http://www.network-theory.co.uk/gsl/manual/. сайтындағы Network Ltd теориясынан табуға болады [30].

Басшылықты сату бойынша жинақталған ақша GSL дамуына көмек бере алады.

Осы басшылықтың жапон тіліндегі аудармасы Daisuke Tominaga. @insertcopying  арқасында GSL жобасының үй бетінде қол жетімді болып саналады.

Linux-та қолданылуы

Ubuntu және OpenSUSE сияқты көптеген Linux дистрибутивтары пакеттерді басқарудың үлкен жүйелеріне ие, әлденеше, бәлкім, GSL пакеттері бар. Егер сіз осы операциялық жүйелерді пайдаға асырып отырсаңыз, онда білетін боларсыз олардың пакеттер менеджерлерін пайдаға асыру жолын (google). Егер сіз осы операциялық жүйелерді қолданып отырсаңыз, онда сіз олардың пакет менеджерлерін қолдану жолын.

Әйтпесе, сізге GSL көзін жайма түрде жұмыс істетуге тура келеді:

—        http://www.gnu.org/prep/ftp.html сілтеме бойынша өтіңіз

—        GSL / каталогін табыңыз және оны басыңыз

—        1.14 немесе жоғары нұсқасы болатын GSL-version.tar.gz, дерекқапты табыңыз. Оны жүктеу үшін осы дерекқапқа басыңыз.

—        тар-xzf GSLversion.tar.gz қолдана отырып терминал терезесінен tar.gz дерекқапты шығарыңыз, сосын / Каталог GSL-НҰСҚАСЫ-на көшіңіз.

—        Нұсқаушы дерекқапқа қараңыз. Мүмкін ол сізге тез жүгіріңіз деп тұрған шығар. / Қалпына келтіріңіз, содан соң нұсқау беріңіз (сізге суперқолданушы (SUDO) ретінде жүйеге енуіңізге мүмкін болады)

Linux үшін сол тәртіпті орындаңыз, Xcode орнатқандығыңызға көз жеткізіңіз (который поставляется с C / C + + компилятордан жеткізіледі), егер g + + — нұсқасы 4.1.0. кем болса Xcode жаңартуды талап етуге мүмкін. Егер Mac OSX (<10,5) ескі нұсқасын қолдансаңыз, онда сізге GSL ескі нұсқасын қолдануға қажет.

Windows-та қолданылуы

Алдын-ала Windows-те компиляцияланған (құрастыру) GSL орнату талап етіледі. Windows дереккөзінен компиляцияланған GSL, сәтті жағдайда қиын, ал нашар санағанда өте жаман болуы мүмкін [31].  Мен Гордон Taft құрастырған ғылыми пакет Boost қолданамын:

  • GSL-тың әлде 32 биттік немесе 64 разрядтық нұсқасын көшірім алу (қолданып отырған R нұсқасы);
  • Орнатушымен жүретін дерекқапты ашыңыз. Қондырғы каталогі линукс стиле (бос орынсыз) сияқты жолы бар екендігіне көз жеткізіңіз. Мысалы, мен TOC: \ Boost_Science_library \ орнатым;
  • Пакет орнатылғаннан кейін, келесіге бағыт көрсетіп отырған қоршаудың ауыспалылығын орнату қажет;
  • Терезеде Қосу пернесін басыңыз, «компьютерде» тышқанның оң пернесін басыңыз және «Қасиет» тандаңыз;
  • «Қосымша параметрлер жүйелері» пернесін басыңыз;
  • «Ауыспалы орта» пернесін басыңыз;
  • «Жаңа . ..» биік пернесін басыңыз;
  • «Variable атау» үшін LIB_GSL енгізіңіз;
  • «Ауыспалының мағынасы» үшін каталог атауын енгізіңіз, ғылыми кітапхана желісті орнатыңыз, яғни (менің жағдайымда бұл «C :/ Boost_Science_Library /» болды.

Л. Гумилев атындағы Ұлттық университетінің ғылыми кітапханасы  (МОДЕЛДЕУДІҢ ӘМБЕБАП ТІЛІ) – C және C++ программистері (бағдарлама жасаушы) үшін сандық талдау кітапханасы болып табылады. Бұл – ГҰУ Генералына деген Қоғамның Лицензиясы бойынша ақысыз бағдарламалық қамтамасыз ету.

Кітапхана математикалық ішкі бағдарламаның кең диапозон қарастырады, мысалы кездейсоқ сандар генераторы, арнайы функциялар мен ең кіші квадратың ыңғайлылығы. Аумақты мәтіндік кешенмен, қорыта айтқанда жоғары 1000 функциясы бар деуге болады.

Егер сіз GSL-қа ерекшелікті қосқыңыз келсе, онда біздің ұсынамызды қабыл алыңыз, яғни бұны first жалғасы ретінде орындаңыз. Сөйтіп, адамдар  оны байқап көру үшін осында бұнын тізімін құрастырамыз. Жалғасы шынайы қолдану кезінде тексерілгеннен кейін ерекшеленуі мүмкін.

Барлық скриптерді,  макростар мен дерекқаптарды қарапайым мәтіндік редакторда құруға болады, тек қана пакеті жинау және жұмыс атқара білуін тексеруде Scilab-ты жүргізу қажет.

Циклдің келесі бөлімінде бағдарламалаудың басқа тілінде жазылған кодты қолдана отырып пакетті қалай құру екендігін қарастырдым.

Екі өлшемді графика үшін:

#include <mgl2/mgl.h>

void mgls_prepare2d(mglData *a, mglData *b=0, mglData *v=0){

register long i,j,n=50,m=40,i0;

if (a)

a->Create(n,m);

if (b)

b->Create(n,m);

if (v){

v->Create(9);

v->Fill(-1,1);

}

mreal x,y;

for (i=0;i<n;i++)

for(j=0;j<m;j++){

x = i/(n-1.);

y = j/(m-1.);

i0 = i+n*j;

if (a)

a->a[i0] = 0.6*sin(2*M_PI*x)*sin(3*M_PI*y)+0.4*cos(3*M_PI*x*y);

if (b)

b->a[i0] = 0.6*cos(2*M_PI*x)*cos(3*M_PI*y)+0.4*cos(3*M_PI*x*y);

}

} int sample(mglGraph *gr){

mglData a;

mgls_prepare2d(&a);

gr->SubPlot(2,2,0);

gr->Title(«Surf plot»);

gr->Light(true);

gr->Rotate(50,60);

gr->Box();

gr->Surf(a);

gr->SubPlot(2,2,1);

gr->Title(«вЂ™\\#’ style; meshnum 10″);

gr->Rotate(50,60);

gr->Box();

gr->Surf(a,»#»,»meshnum 10″);

gr->SubPlot(2,2,2);

gr->Title(«вЂ™.’ style»);

gr->Rotate(50,60);

gr->Box();

gr->Surf(a,».»);

gr->SubPlot(2,2,3);

gr->Title(«parametric form»);

mglData x(50,40),y(50,40),z(50,40);

gr->Fill(x,»0.8*sin(pi*x)*sin(pi*(y+1)/2)»);

gr->Fill(y,»0.8*cos(pi*x)*sin(pi*(y+1)/2)»);

gr->Fill(z,»0.8*cos(pi*(y+1)/2)»);

gr->Rotate(50,60);

gr->Box();

gr->Surf(x,y,z,»BbwrR»);

return 0;

}

int main(){

mglGraph gr;

gr.Alpha(true);

gr.Light(true);

sample(&gr);

gr.WritePNG(«test2D.png»);

gr.WriteEPS(«test2D.eps»);

return 0;

}

 

 

 

Пайдаланылған әдебиеттер тізімі:

1 Лофоре Р. Объектно-ориентированное программирование в С++. Классика Computer Science. – Санкт-Петербург, «Питер», – 2004. – 288 с.

2 Санкт-Петербург: «Питер», 2005. – 256 с.

3 Вирт Н. Алгоритм + структура данных = программы. – М.: «Мир», – 1985. – 245 с.

4  Бурин Е.А. Введение в основы информатики и ВТ – Алматы, «Мектеп», – 1989. – 209 с.

5  Касьянов В.Н., Сабельфельд В.К. Сборник заданий по практикуму на ЭВМ.-М.:Наука, – 1986. – 155 с.

6 Климова Л.М. Практическое программирование. Решение типовых задач. – М.:Кудиц-Образ, – 2000. – 95 с.

7 Любимский Э.З., Мартынюк В.В., Трифонов Н.П. Программирование.

– М.: Наука, – 1980. – 169 с.

8 Анисимов А.В. Рекурсивные преобразователи информации. – Киев: «Вища школа», – 1987. – 188 с.

9 Visualization in Scientific Computing, Special Issue, ACM SIGRAPH Computer Graphics, –1987. –V. 21, –N 6,  –P. 149.

10 Van Wijk J.J. Image Based Flow Visualization // Proceedings of ACM SIGGRAPH. ACM Transactions on Graphics. – 2002. –V.21. -N3. – P. 745-754.

11 Potiy O.A. Anikanov A.A. GPU-Based Texture Flow. –2004. -P. 155-158

12 Самарский А.А. Математическое моделирование и вычислительный эксперимент // Вестник АН СССР. – 1979. – 38-49 с.

13 Reed D., Scullin W., Tavera L., Shields K., Elford Ch. Virtual Reality and Parallel Systems Performance Analysis  // IEEE Computer. – 1995. – V.28. -N 11, – P. 57-67.

14 Красовский Н.Н., Субботин А.И. Позиционные дифференциальные игры. -М.: Наука, – 1974. –183-196 с.

15 Patsko, V.S., and Turova, V.L., Homicidal chauffeur game: Computation of Level Sets of the Value Function / Annals of the International Society of Dynamic Games, vol. 6: Advances in Dynamic Games and Applications, Altman, E., and Pourtallier, O., Eds., Birkhauser, Boston, M. – 2001, – P. 295-322.

16 Иванов А.Г., Краснов В.П., Кумков С.И. Расчет констант скоростей элементарных реакций процесса динамического кинетического расщепления // Алгоритмы и средства параллельных вычислений, вып. 4, Екатеринбург, ИММ УрО РАН, – 2000. 99-110 с.

17 Clyne J., Scheitlin T., Weiss J. B. Volume Visualizing High-Resolution Turbulence Computations // Theor. Computational Fluid Dyn. –1998, – P. 195—211.

18 Haidacher M., Patel D., Bruckner S., Kanitsar A., Groller M.E. Volume Visualization based on Statistical Transfer-Function Spaces // Proceedings of the IEEE Pacific Visualization. –2010, – P. 17-24.

Мусаматова Ш.Б,
«Global Education» мектебі, Шымкент


ПІКІР ҚАЛДЫРУ