84
UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Simon Irmančnik REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV LETAL IN JADRALCEV Diplomska naloga Maribor, november 2010

REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Embed Size (px)

Citation preview

Page 1: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

UNIVERZA V MARIBORU

FAKULTETA ZA ELEKTROTEHNIKO,

RAČUNALNIŠTVO IN INFORMATIKO

Simon Irmančnik

REKONSTRUKCIJA IN

VIZUALIZACIJA POLETOV LETAL

IN JADRALCEV

Diplomska naloga

Maribor, november 2010

Page 2: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Diplomska naloga univerzitetnega študijskega programa

REKONSTRUKCIJA IN

VIZUALIZACIJA POLETOV LETAL

IN JADRALCEV

Študent:

Študijski program:

Smer:

Mentor:

Somentor:

Simon IRMANČNIK

univerzitetni, Računalništvo in informatika

Programska oprema

prof. dr. Nikola GUID

doc. dr. Damjan STRNAD

Maribor, november 2010

Page 3: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija
Page 4: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

i

ZAHVALA

Zahvaljujem se svojemu mentorju, prof. dr.

Nikoli Guidu, in svojemu somentorju, doc. dr.

Damjanu Strnadu, za pomoč in vodenje pri

opravljanju diplomske naloge. Prav tako se

zahvaljujem podjetju Naviter d.o.o. in vsem

zaposlenim za pomoč in omogočitev izdelave

diplomske naloge.

Posebna hvala velja mami, ki mi je omogočila

študij in me skupaj z vsemi bližnjimi podpirala

skozi celotno obdobje.

Page 5: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

ii

REKONSTRUKCIJA IN VIZUALIZACIJA

POLETOV LETAL IN JADRALCEV

Ključne besede: rekonstrukcija, projekcija, genetski algoritem, prikaz, polet,

vektorski podatki

UDK: 004.92(043.2)

Povzetek

Cilj diplomske naloge je narediti realistično in efektivno predstavitev leta jadralnih

in drugih letal, konstruiranega iz diskretnih podatkov, ki jih beležijo letala sama. Ključni

elementi diplome bodo procesiranje podatkov, rekonstrukcija leta in vizualizacija. Vsi

podatki o letu se shranjujejo v zakodirano datoteko, ki jo je potrebno dekodirati, let pa

rekonstruirati, da dobimo dejanske podatke. Zaradi velikih časovnih intervalov predstavlja

rekonstrukcija velik problem pri vizualizaciji poleta. Ker je nabor točk diskreten, je težko

interpolirati verodostojno krivuljo poleta, še posebno, če letalo kroži. V diplomskem delu

uporabljamo interpolacijo in druge metode za rekonstrukcijo kredibilne krivulje poleta iz

diskretnega nabora točk. Nazadnje dekodirane podatke in rekonstruirane krivulje poleta

prikažemo na zaslonu.

Page 6: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

iii

RECONSTRUCTION AND VISUALIZATION OF

FLIGHTS AND GLIDERS

Ključne besede: reconstruction, projection, genetic algorithm, visualization, flight,

vector data

UDK: 004.92(043.2)

Abstract

The goal of this thesis is to make a realistic and effective flight visualisation of

glider planes from the discrete data, which is being recorded by the planes itselves. The

key elements of this thesis are data processing, flight reconstruction and visualization. All

flight data is being saved into an encoded file, which needs to be parsed and reconstructed

in order to receive actual data. Due to frequent wide timeframes, flight reconstrution

represents a major problem in visualising a flight. Because of the discrete point sets, it is

hard to interpolate a credible flight curve, especially if the plane is circling. This thesis will

focus on interpolations and other methods in order to reconstruct a credible flight curve out

of a discrete set of points. Finally, the decoded data and the reconstructed flight curves and

patterns will be projected on screen.

Page 7: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

iv

VSEBINA

1 Uvod ................................................................................................................................... 1

1.1 Opredelitev problema .................................................................................................. 1

1.2 Cilji in teze .................................................................................................................. 2

1.3 Predpostavke in omejitve ............................................................................................ 3

1.4 Predvidene metode dela ............................................................................................... 4

1.5 Struktura diplomskega dela ......................................................................................... 5

2 Pregled stanja .................................................................................................................... 7

3 Razvojno okolje .............................................................................................................. 13

3.1 Arhitektura ................................................................................................................. 14

3.2 Razširljivost ............................................................................................................... 18

3.3 Hitrost razvijanja ....................................................................................................... 19

3.4 Meta programiranje ................................................................................................... 19

3.5 Napredno objektno orientirano programiranje .......................................................... 20

3.6 Prenosljivost .............................................................................................................. 21

4 Zapis podatkov ................................................................................................................ 23

4.1 Podatkovne vrstice ..................................................................................................... 23

4.2 Obvezni elementi in praktični primer ........................................................................ 25

4.3 Pretvorba in posebnosti ............................................................................................. 27

5 Rekonstrukcija ................................................................................................................ 30

5.1 Fizikalni model letenja .............................................................................................. 31

5.2 Metode reševanja ....................................................................................................... 33

5.3 Metoda krožnih lokov ................................................................................................ 34

5.4 Interpolacija ............................................................................................................... 37

5.5 Genetski algoritem ..................................................................................................... 38

5.5.1 Predstavitev rešitve ............................................................................................. 39

Page 8: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

v

5.5.2 Funkcija uspešnosti ............................................................................................ 40

5.5.3 Genetski operatorji ............................................................................................. 44

5.5.4 Inicializacija........................................................................................................ 46

5.5.5 Metoda minimalnega obsegajočega pravokotnika ............................................. 48

5.5.6 Konveksna lupina ............................................................................................... 51

5.5.7 Brentova metoda ................................................................................................. 52

5.5.8 Generiranje kroženja........................................................................................... 55

5.5.9 Zagon genetskega algoritma ............................................................................... 55

5.5.10 Pristop »Deli in vladaj« .................................................................................... 62

6 Vizualizacija .................................................................................................................... 64

6.1 Projekcija ................................................................................................................... 64

6.2 Transformacija ........................................................................................................... 66

6.3 Izris ............................................................................................................................ 68

7 Sklep ................................................................................................................................. 69

8 Priloge .............................................................................................................................. 70

8.1 Viri ............................................................................................................................. 70

Page 9: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

vi

KAZALO SLIK

SLIKA 1: PRIKAZ PODATKOV OSM Z ORODJEM MAPNIK ............................................................................................... 11

SLIKA 2: PRIKAZ PODATKOV OSM Z ORODJEM OSMARENDER ....................................................................................... 12

SLIKA 3: STRUKTURA OGRODJA .NET 2.0.................................................................................................................. 15

SLIKA 4: PRIKAZ LETA V RAVNINI XY .......................................................................................................................... 32

SLIKA 5: VETROVNI TRIKOTNIK ................................................................................................................................ 33

SLIKA 6: PREDPOSTAVKE PRI METODI KROŽNIH LOKOV ................................................................................................. 34

SLIKA 7: DEMONSTRACIJA REKONSTRUKCIJE S KROŽNIMI LOKI ....................................................................................... 36

SLIKA 8: REŠITEV KROŽENJA Z METODO OSTRIH KROŽNIH LOKOV .................................................................................... 37

SLIKA 9: PRIMER SLABEGA KROŽENJA PO FUNKCIJI PRILAGAJANJA ................................................................................... 41

SLIKA 10: PRIMER GENERIRANEGA KROŽENJA Z NAPAČNIM VRSTNIM REDOM .................................................................... 43

SLIKA 11: DEFINIRANJE SMERI VEKTORJA VETRA ......................................................................................................... 47

SLIKA 12: DEFINIRANJE CENTRA KROŽNICE S PROJEKCIJO VHODNIH TOČK NA PREMICO, PRAVOKOTNO NA SMER GIBANJA ........... 48

SLIKA 13: PRIKAZ ROTIRAJOČIH KALIPROV ZA IZRAČUN MINIMALNEGA OBSEGAJOČEGA PRAVOKOTNIKA .................................. 49

SLIKA 14: PRIMER KONVEKSNE LUPINE...................................................................................................................... 51

SLIKA 15: ROTACIJA KOORDINATNEGA SISTEMA IN PROJEKCIJA TOČK NA ABSCISO .............................................................. 57

SLIKA 16: REKONSTRUKCIJA - TESTNI PRIMEREK .......................................................................................................... 59

SLIKA 17: REKONSTRUKCIJA – PRIMER NAPAČNE REŠITVE TESTNEGA PRIMERKA ................................................................. 60

SLIKA 18: REKONSTRUKCIJA: PRIMER DOBRE REŠITVE TESTNEGA PRIMERKA ...................................................................... 60

SLIKA 19: PRIMER REALNEGA KROŽENJA Z VISOKIM ČASOVNIM INTERVALOM .................................................................... 61

SLIKA 20: PRIMER REŠITEVE REALNEGA PROBLEMA ...................................................................................................... 62

SLIKA 21: PROJEKCIJA SVETA .................................................................................................................................. 65

SLIKA 22: PRIMER MERCATORJEVE PROJEKCIJE ........................................................................................................... 67

SLIKA 23: VIZUALIZACIJA LETA ................................................................................................................................. 68

Page 10: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

vii

KAZALO TABEL

TABELA 1: STRUKTURA VRSTICE B ............................................................................................................................ 24

TABELA 2: STRUKTURA VRSTICE I ............................................................................................................................. 25

KAZALO PROGRAMSKE KODE

PROGRAMSKA KODA 1: RAZŠIRITVE V OGRODJU .NET ................................................................................................. 18

PROGRAMSKA KODA 2: METAPROGRAMIRANJE V OGRODJU .NET ................................................................................. 20

PROGRAMSKA KODA 3: PRIMER ZAPISA LETA V FORMATU IGC ....................................................................................... 26

PROGRAMSKA KODA 4: EVOLUCIJSKI ALGORITEM ........................................................................................................ 39

PROGRAMSKA KODA 5: PSEVDOKOD BRENTOVE METODE ............................................................................................. 54

PROGRAMSKA KODA 6: PSEVDOKOD REKONSTRUKCIJSKEGA ALGORITMA ......................................................................... 58

Page 11: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

viii

UPORABLJENE KRATICE

GPS (Global Positioning System),

IGC (International Gliding Commission),

XML (Extended Markup Language),

RAD (Rapid Application Development),

OSM (Open Street Map),

NASA (National Aeronautics and Space Administration),

COM (Component Object Model),

CTS (Common Type System),

IL (Intermediate Language),

UTC (coordinated universal time),

MBR (Minimum Bounding Rectangle),

HTTP, ZIP

Page 12: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 1

1 Uvod

Jadralni piloti in padalci se pri letenju srečujejo s svojevrstnimi problemi. Njihov

način letenja se razlikuje od letenja motornih letal in drugih, saj kot vir energije

uporabljajo skoraj izključno termodinamiko, so bolj gibčni in precej bolj nepredvidljivi. V

zrak poletijo s pomočjo motornega letala, nato pa so povsem odvisni od naravnih virov. Za

njihovo dviganje je tako kritično, da najdejo potencialne termične stebre, tako imenovane

termične žepe, kjer se giblje toplejši zrak. Tam zavzamejo za njih značilno gibanje

kroženja.

1.1 Opredelitev problema

Vsako jadralno letalo je dandanes opremljeno s sodobnim GPS-sprejemnikom in

napravo, ki omogoča prestrezanje in analizo prejetih podatkov. S tem se lahko beleži

lokacija leta, ki je tako natančna, da je lahko kasneje uporabljena v zapisu celotnega leta.

Pri beleženju moramo upoštevati dejstvo, da čas postane striktno diskreten z relativno

določenim časovnim intervalom, ki dovoljuje tudi odstopanja.

Problem se pokaže pri starih GPS-sprejemnikih, kjer ni največja pomanjkljivost

natančnost, temveč časovni interval med posameznimi časovnimi rezinami, ko dobivamo

podatke. Pri časovnem intervalu, dolgem do 4 sekunde, je mogoče relativno enostavno

razbrati in procesirati podatke na tak način, da je končni produkt jasno viden potek

preletenega leta. Za intervale, večje od omenjenega, pa se problematičnost stopnjuje

eksponentno, saj pri letu večinoma ne gre zgolj za premočrtno gibanje, ki smo ga vajeni od

večjih letal, temveč se velikokrat pojavi krožno gibanje, ki se ga v kasnejšem procesiranju

podatkov ne da enostavno predstaviti kot nabor daljic med zapisanimi GPS-koordinatami.

V dovolj neugodnih primerih ni dovolj niti interpolacija med zabeleženimi točkami. Ker

številni aeroklubi, ki v večini primerov skrbijo za opremo letalstva, dostikrat uporabljajo

staro opremo, je ta problem še vedno aktualen.

Podatki so navadno spravljeni po dogovorjenem standardu mednarodne jadralne

komisije (International Gliding Commission, v nadaljevanju krajše IGC), ki pa je za

človeka v nasprotju z zapisoma JSON in XML le delno berljiv in ga je treba procesirati

Page 13: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 2

posebej. Hkrati je potrebno odpraviti napake, kot so anomalije v točkah, datumski

preskoki, časovna usklajenost in posledice šibkega standarda, vidne v dostikrat nejasnih

podatkih.

Naposled je za jadralne pilote najbolj zanimiva končna obdelava, analiza in prikaz

podatkov. Tu se srečamo s problematiko lokalizacije terena, saj same točke ne pomenijo

ničesar, če ne vidimo terena, nad katerim je bil izvršen let. Prav tako se vedno postavlja

vprašanje projekcije terena, ukrivljanje terenskih poslikav, mnogokotnikov in točk,

računanje lokacije, dolžine, zračne hitrosti in hitrosti na zemlji. Vse to je seveda odvisno

tudi od postavitve modela površja, o katerem se stroka še dandanes ne more zediniti, saj na

tem temelji večina računanja.

1.2 Cilji in teze

Cilj diplomske naloge je sistematično reševanje opisanih problemov v srednje

dolgem časovnem razponu in z omejenimi sredstvi. Ker gre za problematike, ki se rešujejo

v poslovni sferi, so rešitve praktične narave, ki se jih na določeni točki preneha

izboljševati, ko dosežejo svoj namen – zadostiti pričakovanju nalogodajalca, posledično pa

tudi koristnikov oziroma odjemalcev.

Cilj je predstaviti uspešno procesiranje vhodnih podatkov, ki so bili po standardu

IGC zabeleženi na letu jadralnih letal in padalcev, jih ustrezno procesirati in odpraviti

napake.

Cilj je prav tako rekonstruirati popačene podatke, ko je časovni interval prevelik in

bi z izvornimi podatki dobili popačeno sliko ter s tem zgolj namig o tem, kje in kako je let

potekal. To je še posebej pomembno pri letih, pri katerih se je dogajalo kroženje z visokim

časovnim intervalom beleženja vhodnih GPS-podatkov, kjer na koncu na mesto jasnega

krožnega gibanja dobimo nerazumljive in nerazpoznavne odrezave krivulje, ki ne odražajo

karakteristike gibanja v zraku. Zastavljeni cilj mora biti, da se po rekonstrukciji utegne

razbrati, kje približno je opazovani subjekt letel, kakšne so bile takrat karakteristike leta in,

če le možno, kakšna je bila krivulja letenja.

Po procesiranju in rekonstrukciji leta so na voljo še vedno zgolj točke v prostoru in

času – cilj je približati predstavitev leta jadralnemu pilotu, da bo zanj še posebej zanimivo.

Page 14: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 3

To vključuje preračunavanja hitrosti, postavljanja točk, daljic in mnogokotnikov v prostor

v skladu z izbrano projekcijo.

1.3 Predpostavke in omejitve

Pri procesiranju podatkov je edina omejitev sam vir, ki pa ne predstavlja večjega

problema, saj so jadralci in padalci po svetu ustvarili veliko skupnost, ki med sabo deli

bogate izkušnje, h katerim spadajo tudi leti. Na spletu je tako na voljo ogromna baza letov,

saj je za pilote značilno, da si radi ogledujejo tudi tuje lete.

Predpostavljati moramo, da procesiran let vsebuje napake. To se rado zgodi pri

letih, ki so bili zapisani s starejšimi GPS-napravami, kjer je bila pogostost anomalije v

zapisanih točkah bistveno večja. To je potrebno upoštevati pred analizo leta, saj utegne

zanemarjena anomalija povsem popačiti končne rezultate, ki dostikrat niso popolnoma nič

robustni in jih že manjša odstopanja porušijo.

Glavnega problema, na katerega se bo diplomsko delo osredotočilo, se lotimo s

sledečo pomembno predpostavko: kroženje je konstantno. Kaj to pomeni, bomo razložili v

nadaljevanju, ko se bomo lotili fizičnega modela kroženja, za zdaj pa lahko omenimo, da je

idealno kroženje predstavljeno s konstantno kotno hitrostjo, zamaknjeno gibanje, ki

spominja na vijačnico ali vzmet, pa je posledica komponente vetra, ki konstantno gibanje v

krogu vektorsko zamakne v smeri vetra. Smer vetra je prav tako neznanka v enačbi, ki jo je

potrebno izračunati ali predvideti, torej smo omejeni z zgolj oceno komponente vetra, ne

pa tudi z dejanskimi podatki.

Predpostaviti je treba, da je rekonstrukcija težek problem in vsak primerek

predstavlja svojo specifično problematiko, za katero ni nujno, da je rešljiva. Zato bo

potreben lasten fizikalni model, ki bo generiral umetna kroženja, ki bodo nato predmet

obravnave pri uravnavanju rekonstrukcijskih algoritmov. Le-ti bodo nato po uspešnih

testiranjih prestavljeni na dejanske vzorce iz realnega življenja.

Omejeni smo z virom informacij o terenskih razmerah, nad katerimi je bil let

izvršen. Ne poznamo vremena, niti vetra. Vemo sicer lokacijo in točno pozicijo v vsakem

diskretnem trenutku leta, a moramo to tudi funkcionalno vizualizirati, pri čemer je

omejitev ravno ta vir informacij, od koder bi naj črpali. Natančni in kvalitetni viri so po

Page 15: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 4

navadi dragi in redki, oba faktorja pa sta za komercialno rešitev pomembna. Dobre rastrske

karte niso dovolj dobra rešitev za pilote, ki se orientirajo po zelo specifičnih elementih na

zemljevidu – poleg lepljenja satelitskih slik na površje bo zagotovo potrebno razmisliti tudi

o vektorskih kartah, ki vsebujejo podatke v naborih mnogokotnikov, točk in relacij.

Količina tovrstnih vektorskih podatkov je ogromna. Z večanjem natančnosti in števila

raznovrstnih elementov v kartah se bistveno poveča sama velikost podatkov. Potrebno bo

ustrezno ravnanje s to količino, redukcija podatkov, redukcija na ravni samih poligonov ter

filtriranje glede na čas izrisa, saj si po vsej verjetnosti ne bomo želeli izrisati vseh

elementov ob vsakem trenutku in na vsaki dani višini.

V kolikor bomo operirali z velikimi datotekami, bo potrebno optimizirati tudi

mehanizme dostopanja do njih, hkrati pa optimizirati mehanizme branja zahtevanih

formatov. Ob ogromnih datotekah bo predvidoma treba razmisliti tudi o stiskanju z

namenom varčevanja virov.

Nazadnje je potrebno predvideti tudi, da gre za zelo širok spekter uporabnikov, ki

uporablja različne operacijske sisteme. Omejitev je zagotovo tudi prenosljivost, ki sicer ni

pogoj, je pa zagotovo eden izmed faktorjev, ki ga je potrebno upoštevati pri izbiri

razvijalnega okolja. Navsezadnje je to področje potencialno zanimivo tudi za vse

kompaktne naprave, kjer bi katera izmed nakazanih rešitev bila nadvse sprejemljiva.

1.4 Predvidene metode dela

Ker je za eno izmed omejitev postavljen čas razvoja, je potrebno izbrati

programsko razvojno okolje, ki omogoča tako imenovani RAD (rapid application

development), je hitro priučljivo (v kolikor bi končni produkt uporabljal kdo drug, ki ni

vešč izbranemu programskemu jeziku), lahko razumljivo, omogoča vrsto razširitev in

priključitev ter je, če je le mogoče, prenosljivo.

Za razvijalno okolje smo zato uporabili Visual Studio 2008 z ogrodjem .NET (.NET

Framework), kot programski jezik pa C#. Glavni razlogi za to so:

• hitrost razvoja,

• enostavnost in berljivost kode,

Page 16: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 5

• prenosljivost,

• razširljivost.

Hitrost razvoja je mogoče upravičiti z relativno hitrim prehodom iz družine C-

jezikov in jezikov z notacijo C, ki velja za najbolj razširjeno. S prihodom ogrodja .NET se

propagira tako imenovana kamelja (CamelCase) notacija, ki omogoča bolj jasno in manj

dvoumno interpretacijo programske kode, hkrati pa se poslavlja t.i. madžarska notacija, ki

je bila značilna za zgodnje C in C++ začetke ter dandanes še vedno najde privržence, a je

za branje precej težja.

Za rekonstrukcijo podatkov je potrebna inovativnost, saj navadna interpolacija ne

zadosti vsem problemskim nišam. Preučitev različnih pristopnih strategij (tako imenovani

»od spodaj navzgor« (bottom-up) in »od zgoraj navzdol« (top-down) je obvezna, čeprav so

najbolj uporabne prav slednje. Med drugim so med njimi prirejene interpolacije, genetski

algoritmi in rekurzivni algoritmi tipa »deli in vladaj« ter različni drugi aritmetični

algoritmi.

1.5 Struktura diplomskega dela

V diplomskem delu bomo v prvem delu naredili pregled stanja. Pogledali si bomo

obstoječe rešitve, na hitro pretehtali njihovo uporabnost in zahtevnost za uporabo oziroma

nadgradnjo. Osredotočili se bomo na grafične algoritme, projekcijske sisteme,

rekonstrukcijske in genetske algoritme. Preučili bomo interpolacijo in druge postopke za

rekonstruiranje poti, opisane z diskretnim naborom točk. Dotaknili se bomo tudi

kartografskih projekcij, s pomočjo katerih bomo predstavili zabeležen let. Podrobno bomo

spoznali princip lokalizacije GPS, njegovo uporabo in merske karakteristike, ki nam bodo

pri rekonstrukciji podatkov izdatno pomagale. Ogledali si bomo tudi možnosti prikaza

terena ob vizualizaciji samega leta. Pri tem se bomo osredotočili predvsem na podatke s

strani Google Maps in Open Street Maps.

V nadaljevanju bomo preučili razvojno okolje, za katerega smo se odločili. Navedli

bomo zahteve in pretehtali razloge za odločitev. Prikazali bomo samo strukturo razvojnega

okolja, pokazali, zakaj je za nas pomembna, in prikazali smernice razvoja, kakršnega si s

Page 17: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 6

izbranim naborom orodij želimo. Pogledali si bomo tudi prenosljivost aplikacij, hitrost

izvajanja in moderne principe objektno orientiranega programiranja.

Sledil bo pregled implementacije zastavljenih ciljev. Prikazali bomo procesiranje

podatkov, preučili standard IGC, ki definira format, v katerem je zapisanih večina letov

jadralnih letal in padalcev. Podrobno bomo spoznali strukturo formata in pokazali

implementacijo tovrstnega razčlenjevalnika, skupaj s praktičnim primerom vhodne

datoteke. Opozorili bomo na posebnosti, na katere moramo paziti, in definirali anomalije,

ki jih je v rekonstrukciji potrebno odpraviti.

Rekonstruiranje je razdeljeno na tri dele. V prvem bomo obravnavali lokacijske

anomalije, ki so posledica napake pri zapisovanju naprav GPS. V drugem delu bomo

reševali časovne anomalije, katerih izvor ravno tako leži v napačnem zapisovanju

podatkov. Tretji del, kjer se bomo lotili prevelikih časovnih intervalov, bomo zaradi

obsežnosti problema obravnavali bolj temeljito.

Za dobro razumevanje problema bomo definirali fizikalni model letenja, ki nam bo

pri rekonstruiranju izdatno pomagal. Preučili bomo dva različna pristopa reševanja

problemov in za vsakega izmed njiju podali implementacijo rešitve. Prikazali bomo

metodo krožnih lokov, ki sledi principu reševanja »od spodaj navzgor«. Podrobneje si

bomo pogledali interpolacijo kot eno izmed rešitev »od zgoraj navzdol«. Ob koncu bomo

prikazali še rešitev z genetskimi algoritmi. Prikazali bomo vse segmente evolucijskega

programiranja – funkcijo uspešnosti in kazenske funkcije, definirali genetske operatorje,

prikazali postopek iskanja začetnih približkov rešitev ali zasilne rešitve, ob tem pa

spoznavali različne algoritme, ki jih bomo na tej poti potrebovali. K temu spadajo metoda

minimalnega obsegajočega pravokotnika, iskanje konveksne lupine, Brentova

optimizacijska metoda in pristop »deli in vladaj«.

Na koncu bomo pregledali rezultate in naredili analizo. Predstavili bomo hitrost in

uspešnost uporabljenih algoritmov, hkrati pa kritično označili pomanjkljivosti. Naredili

bomo primerjavo z obstoječimi rešitvami in predstavili možne izboljšave ter zastavili

smernice za morebitni nadaljnji razvoj.

Končali bomo z navedenimi viri in priloženo izvorno kodo implementacije opisanih rešitev.

Page 18: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 7

2 Pregled stanja

Preden se lotimo problema, velja narediti hitro analizo obstoječih rešitev, ki

zadostujejo našim potrebam, ne kršijo naših predpostavk in omejitev ter so trenutno na

voljo. Pri analizi trenutnega stanja pravzaprav iščemo rešitve na področju grafičnih

algoritmov, projekcijskih sistemov, predvsem pa tudi hitrostnih mehanizmov, nastavkih in

tehnikah hitrega procesiranja podatkov ter končno tudi na področju povratnih informacij

uporabnikov, ki se v glavnem ukvarjajo s končnimi aplikacijami.

Pri samemu procesiranju podatkov se je potrebno zanesti na lastne rezultate, saj

bodo pripravljene za posebno nišo uporabnikov, ki jim je morda važen samo posamezni

aspekt predstavljenega rezultata, kjer nam morebitne obstoječe rešitve ne morejo prav dosti

pomagati.

Podobno velja za rekonstrukcijo podatkov, pri čemer pa se je kljub temu vredno

opreti na določene obstoječe rešitve. Kot smo opisali, je vhodni podatek diskretno opisana

pot jadralnega letala ali padalca, kjer posamezna točka pomeni koordinato v

geopozicijskem sistemu. Če govorimo o koordinatah točke, mislimo na komponento x in y

oziroma longitudo in latitudo, medtem ko koordinato z oziroma višinski podatek

izpustimo. To storimo zaradi več razlogov, četudi je primarni ta, da tega podatka

pravzaprav ne potrebujemo. Če se vrnemo na opis problema, ki pravi, da nas pri

rekonstrukciji ovira izrazita diskretnost časa, ugotovimo, da velika razlika dveh sosednjih

vrednosti v večini primerov velja predvsem za koordinate x in y, ne pa tudi za višinske

podatke. Kot smo že povedali, se letalo ob dviganju povzpne v tako imenovani zračni žep

toplega predela zraka. V tem predelu kroži, dviganje pa poteka počasi – tako počasi, da je

razlika sosednjih koordinat z zanemarljiva v primerjavi s podatki v 2D projekciji. Zato

lahko pri rekonstrukciji tretjo dimenzijo zanemarimo. To pa seveda ne velja za prikaz,

zlasti če hočemo pripraviti vse nastavke za morebitno tridimenzionalno vizualizacijo leta

nad tlemi.

Pri odločitvi o zanemarjanju tretje komponente točke v prostoru nam izdatno

pomaga dejstvo o natančnosti starejših naprav GPS pri višinskih podatkih. Ta je precej

slaba, saj je še v začetku tisočletja za najnovejše naprave relativna napaka znašala 15

metrov. Ker si želimo zaobjeti tako novejše kakor tudi starejše posnetke letov, moramo to

dejstvo upoštevati. Toda zakaj pride do takšne napake?

Page 19: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 8

Poglejmo si GPS (Global Positioning System) sistem. Kot že ime namiguje, gre za

satelitski navigacijski sistem, ki se uporablja za lokalizacijo (geopositioning) objektov na

površini zemlje. Zasnovalo ga je ameriško obrambno ministrstvo, tako da je sprva bilo

namenjeno zgolj v vojaške namene, a se je zavoljo dobre zasnove in seveda z zeleno lučjo

lastnikov začel uporabljati tudi v komercialnih vodah. Dobra zasnova se navezuje

predvsem na sam sistem lokalizacije, ki deluje na zelo enostaven način in ne potrebuje

posebno kompliciranih ali dragih komponent v posameznih sprejemnikih.

V vsakem trenutku kroži okoli zemlje 30 satelitov na oddaljenosti približno 20 tisoč

kilometrov. Vsak izmed njih je opremljen z atomsko uro, ta pa je kritična za samo

lokalizacijo sprejemnika. Iz imena je razvidno, da imamo v sprejemnikih GPS samo

sprejemnik signala, torej lahko dobivamo le paketke, ki jih ves čas pošiljajo sateliti. V

posameznem paketku so shranjene štiri informacije: čas oddaje paketa in satelitove

koordinate x, y in z. Ko sprejemnik GPS dobi te pakete, mora preračunati, kolikšen je

zamik med trenutnim in oddajnim časom satelita. Preko tega lahko nato določi, kakšna je

oddaljenost sprejemnika od satelita - signal namreč potuje s svetlobno hitrostjo, a ima

vendarle nezanemarljivo majhen zamik. Pozicijo sprejemnika GPS lahko približno

določimo (predpostavimo, da je nekje na zemeljski obli), zato bi v idealnem primeru bilo

dovolj, da dobimo signale iz treh satelitov, seveda pod pogojem, da je v našem

sprejemniku GPS atomska ura. Tega pa v večini primerov ni, zato potrebujemo dodatni

četrti satelit, ki popravi uro. Natančen čas je izrazito pomemben - zaradi relativnostne

teorije je občasno potrebno popraviti celo atomske ure na satelitu, saj le-te tečejo 38 µs

hitreje od tistih, ki se nahajajo na površju Zemlje.

Ker se podatki o položaju računajo iz ločenih komponent, dostikrat pride do napak.

Te napake so posledično radikalne narave. Ali je podatek relativno točen – torej je točen z

določeno toleranco odstopanja – ali pa je napaka tako radikalna, da pride do odstopanja

več 100 metrov ali še več.

Naslednji izmed razlogov, zakaj višinske podatke zanemarjamo, leži v hitrosti

samih algoritmov. Želimo si učinkovit, hiter in robusten algoritem. Hitrost se bistveno

poveča, ko zanemarimo eno izmed treh komponent, pri čemer je cena pogreška

zadovoljivo nizka. Robustnost pa se toliko bolj poveča, če lahko zanemarimo najbolj

občutljivo komponento v obliki višinskih podatkov.

Page 20: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 9

Medtem ko se še vedno lahko pogodimo s tovrstno magnitudo merske napake

ameriškega pozicijskega sistema, je potrebno kljub vsemu preveriti alternativne storitve, ki

jih ponujajo drugod. Obstajata evropski in rusko-indijski ekvivalent, GALILEO in

GLONASS, a oba v tem trenutku še zaostajata za vzorčnim sistemom, četudi bosta v

prihodnosti zagotovo predstavljali resno alternativo.

Vrnimo se k rekonstrukciji. Diskretne poti ne moremo enostavno opisati same po

sebi, saj bi potencialno animacija zabeležene poti prinesla zgolj preskoke, ki bi bili

neestetski in v določenih primerih, ki se jih bomo lotevali kasneje, ne bi predstavljali

poteka leta, kakršen je bil v resnici. Tu se v začetku in pri trivialnih primerih najlažje

opremo na obstoječe algoritme in vsem dobro znano interpolacijo, ki izrazito diskretno pot

dopolni tako, da vstavi interpolirane vmesne točke med dvema diskretnima oziroma

sosednjima trenutkoma (točkama) v času. Še vedno gre za diskretno pot, navsezadnje bi

analitičen opis poti letala zahteval kompleksne izračune brez posebne praktične prednosti.

Vendar dobimo lep, na videz gladek opis poti, ki si jo želimo predstaviti.

Število obstoječih rešitev se na žalost drastično zmanjša, ko preidemo h

kompleksnejšim primerom, ki jih želimo rešiti. Ko hočemo opisati kroženje, včasih niti ne

vemo, da gre za dejansko kroženje, saj imamo za vhodne podatke diskreten nabor točk.

Kompleksen primer za nas pomeni izrazito velik časovni interval, navadno nad 10 sekund,

kar je značilno predvsem za stare naprave GPS, ter seveda kroženje. V tem primeru

dobimo nelogično in nerazumljivo postavljene točke, iz katerih moramo nato predvideti,

ali gre za kakšno posebno manevriranje, morebiti za kakšno anomalijo v delovanju naprave

GPS (tega zagotovo ne gre zanemariti), ali pa dejansko let predstavlja kroženje. Tu seveda

interpolacija ne pride v poštev, saj bi jo lahko uporabili predvsem v primerih, ko lahko

intuitivno sklepamo o vmesnih odsekih preletene poti. Tu bo potrebno uporabiti

kombinacijo inovativnih in manjši izbor že obstoječih rešitev.

Čisto mogoče je namreč, da letalo izvaja sunkovite manevre, ki so ob velikih

časovnih intervalih predstavljene zelo nerazumljivo. Hkrati je treba upoštevati, da so stare

GPS naprave podajale podatke hitreje, kakor so jih brale. Kako je to mogoče? Imejmo čas

T, ki je pretekel med prejšnjim C(n-1) in aktualnim C(n) prejetim podatkom. V času T je

naprava interpolirala podatke, ki pa so zgolj ocena ali približek, v času T pa je namesto

Page 21: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 10

enega podala N podatkov, novi časovni interval pa je postal T/N. Tako je točnost položaja

treba dostikrat jemati z rezervo.

Stanje obstoječih rešitev pri vizualizaciji letov je po drugi strani bistveno boljše.

Sicer se moramo pri samem letu še vedno opreti na posamezne projekcijske tehnike,

vendar si lahko za prikaz terena izdatno pomagamo z že obstoječimi viri terenskih

poslikav, ki jih želimo uporabiti v ozadju prikaza našega leta. Tu pridemo do razpotja med

rastrskimi in vektorskimi mapami. Medtem ko so rastrske karte kolekcija slik oziroma

poslikav terena, vektorske karte predstavljajo skupek vektorskih podatkov, ki jih je šele

potrebno ustrezno obravnavati in narisati, preden za nas postanejo uporabne. Vendar so

ravno vektorski podatki tisti, ki so za nas zanimivi, saj jadranje dostikrat zahteva zelo

specifične informacije o terenu.

Pri pregledu za rastrske rešitve se lahko takoj ustavimo ob najbolj popularnem

ponudniku tovrstnih rešitev, Google Maps. Le-ti za svoje poslikave terena uporabljajo

posnetke, ki jih je zagotovila NASA. So precej natančni, četudi natančnost vsepovsod ni

uniformna – to denimo lahko opazimo pri večjih mestih, kjer je faktor povečave dostikrat

maksimalen, v nasprotju z redkeje poseljenimi predeli, kjer natančna povečava ni na voljo,

a je za nas precej velikega pomena. Dodaten problem nam predstavlja Googlovi pogoji

uporabe, ki nam sicer ne onemogočajo proste in zastonjske rabe njihovih kartografskih

ekstraktov, nam pa prepovedujejo uporabo v komercialni sferi. Za akademske potrebe v

diplomski nalogi bomo podatke lahko kljub vsemu uporabili. Google ima v te namene

pripravljen poseben vmesnik uporabniškega programa oziroma t.i. API (application

programming interface), s katerim lahko preko javascripta njihove storitve koristimo kar v

spletnem brskalniku. Po vsej verjetnosti pa nam to ne bo dovolj in si bomo želeli njihov

API prenesti v našo aplikacijo.

Kot rečeno pa si bolj kot rastrskih želimo vektorske podatke. Tu se opremo na

izjemno močno odprtokodno skupnost, ki upravlja projekt imenovan Open Street Maps.

Gre za »živ« organizem, saj se širi, obnavlja in verificira sam od sebe. Za vnašanje,

popravljanje in brisanje podatkov je namreč odgovorna skupnost sama.

Izris samih podatkov ravno tako že obstaja in je na voljo v več programskih jezikih.

Prvi izmed njih in hkrati najbolj pogost je Mapnik. Za tovrstno dvodimenzionalno

rasterizacijo potrebuje sicer okolje Linux, PostgreSQL in najrazličnejše knjižice C++, tako

Page 22: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 11

da bi bili precej omejeni, v kolikor bi se odločili zanj. Po drugi strani je program hiter in

primeren za strežniške aplikacije, ki pa za nas niso zanimive.

Slika 1: Prikaz podatkov OSM z orodjem Mapnik

Druga alternativa po vrsti je Osmarender. Pri njej gre za transformacijo iz XML v

skalarno vektorsko grafiko oziroma format SVG (Scalable Vector Graphic), ki omogoča

morebitno popravljanje po dejanski transformaciji. To za nas ni posebno uporabno, saj s

takšno transformacijo v bistvu še ne napravimo ničesar, saj nam še vedno ostanejo

vektorski podatki, ki jih je potrebno šele izrisati. Oba načina se uporabljata v spletni

različici Open Street Map.

Page 23: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 12

Slika 2: Prikaz podatkov OSM z orodjem Osmarender

Tretja alternativa se imenuje Kozmus in je plod dela slovenskega avtorja Igorja

Brejca. Ker uporablja za izris knjižice GDI+ ter .NET, je za nas zelo atraktiven, vendar ni

osnovan za hitro ali količinsko obdelavo podatkov. V našem primeru obstoječe rešitve

vendarle ne bodo tako pomembne, saj po eni strani potrebujemo precej specifične podatke,

po drugi pa bo količina le-teh tako majhna, da nam izris vektorsko opisanih poti oziroma

poligonov ne bo predstavljal potrebe po integraciji oziroma posegu po obstoječih rešitvah.

Page 24: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 13

3 Razvojno okolje

Pri izbiri programskega jezika in razvojnega okolja nasploh si moramo ogledati,

kakšne so naše zahteve in katere rešitve temu potencialno ustrezajo.

Za nas so pomembni naslednji faktorji:

• razširljivost,

• hitrost razvijanja,

• meta programiranje,

• možnost naprednih prijemov objektno orientiranega programiranja in

• prenosljivost.

Izbrali smo si C# oziroma ogrodje .NET z razvijalnim okoljem Visual Studio 2008,

ki je bilo v času izvajanja projekta najnovejše integrirano razvojno okolje (integrated

development environment oz. v nadaljevanju krajše IDE) na tržišču. Zanj smo se odločili,

ker pokriva večino, če ne vseh naših zahtev, ki jih do razvijalnega okolja imamo. C# ima

podobno sintakso kakor Java, kakor tudi vrsto drugih značilnosti, ki so nekoč Javo naredile

najbolj obetaven programski jezik na tržišču. Pomemben faktor je povezljivost z različnimi

jeziki. Želimo si, da bi programi, ki so bili napisani izven ogrodja .NET, delovali tudi v

aplikacijah C#, kar je mogoče rešiti s komponentnim objektnim modelom oziroma tako

imenovanimi objekti COM (component object model) in dostopi do njihovih

funkcionalnosti.

Izvajalno okolje splošnih jezikov ali CLR (Common Language Runtime) je na

javanskem principu baziran virtualni stroj, ki skrbi za izvajanje vseh programov .NET. Vse

izvajanje se dogaja pod drobnogledom CLR, ki skrbi tudi za upravljanje s pomnilnikom,

varnost in izjeme, kar nam pri razvijanju izdatno olajša delo. Ogrodje .NET je prav tako

izrazito varen sistem, saj so prekoračitve obsega pomnilniškega vmesnika (buffer

overflows) obravnavane povsem ločeno in ne pustijo skoraj nič prostora za manipulacije

kode.

Neodvisnost jezikov je lastnost ogrodja .NET, pri kateri vsi vsebovani jeziki

uporabljajo skupen tipski sistem (Common Type System) ter razredna knjižnica tipov (Base

Type Library), zaradi česar so navezave med katerimi koli jeziki .NET neproblematični in

Page 25: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 14

pravzaprav precej pogosti, kar sicer za naše aktualne zahteve ni potrebno, je pa vsekakor

dobrodošlo.

Ogrodje .NET je osnovano z idejo o prenosljivosti. Ker se dosti vzorcev izvajanja

kopira iz Jave, je tudi ideja o izvajanju programov .NET na različnih sistemih prioriteta.

Tukaj so snovalci programsko-razvijalnega paketa uvedli vmesni jezik ali IL (intermediate

language), ki se interpretira v zagonskem času. Teoretično je bila prenosljivost med

različnimi platformami zastavljena in predvidena že ob sami zasnovi prvega ogrodja .NET,

četudi Microsoft še do danes – vsaj uradno – ni podal nobenega alternativnega ogrodja

zunaj domene operacijskih sistemov Microsoft Windows. Tudi tu pa se lahko zatečemo k

odprtokodni skupnosti, ki je razvila ogrodje MONO – polno združljiv programski paket, ki

ga je moč pognati tako pod sistemih Linux, kakor tudi na manj razširjenih platformah, kot

so na primer Solaris ali FreeBSD.

Meta programiranje je močan konstrukt, ki se ga v .NET ogrodju lahko

poslužujemo. Četudi je vmesni jezik, v katerega prevedemo program v denimo jeziku C#,

samo-opisujoč, lahko kot programerji ustvarimo lastne metapodatke z uporabo atributov, ki

so povsem nov in moderen konstrukt v programskih jezikih. Atribute lahko uporabljamo

nad razredi, funkcijami ali spremenljivkami in s tem dvignemo opisno moč meta objekta

ali pa celo spremenimo potek izvajanja programa, v kolikor uporabljamo reflektivno

programiranje (reflection).

Kot rečeno, je tudi varnost v ogrodju .NET najvišja prioriteta, to pa hkrati pomeni,

da zaradi tega trpi hitrost izvajanja. Navadno v C# nimamo enakega dostopa do kazalcev,

kakor smo to vajeni v C oziroma C++ [Troelsen, 2007].

3.1 Arhitektura

Za lažji pregled si oglejmo strukturo ogrodja .NET (slika 3), ki opisuje najbolj

razširjeno verzijo, 2.0, na kateri temeljijo vse prihodnje verzije.

Page 26: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 15

Slika 3: Struktura ogrodja .NET 2.0

Nasprotno od navadnega programskega jezika C, kjer so ukazi prevedeni direktno v

zbirni jezik, se izvorna koda vsakega programskega jezika .NET pretvori v vmesni jezik.

Za to je potrebna infrastruktura splošnih jezikov (Common Language Infrastructure ali

CLI), ki omogoča jezikovno-nevtralno podlago za razvoj in izvajanje aplikacij, vključno z

upravljalcem pomnilnika (garbage collector), upravljalcem varnosti in medoperacijsko

povezljivostjo. Te lastnosti ne veljajo izključno za en programski jezik, temveč opisujejo

več jezikov, ki jih ponuja ogrodje .NET. Implementacija te infrastrukture se imenuje

izvajalno okolje splošnih jezikov (common language runtime ali CLR) in je specifična za

Microsoftovo ogrodje .NET. Alternativne implementacije najdemo na drugih sistemih (npr.

Page 27: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 16

ogrodje MONO za operacijske sisteme Linux), ki iz istega nabora programskih jezikov

.NET prevajajo in izvajajo (ali bolje rečeno interpretirajo vmesni jezik). Tu se že kažejo

principi prenosljivosti, ki pa še čaka na razcvet, saj so alternativne implementacije

prepuščene bolj ali manj odprtokodni skupnosti.

Upravljalec pomnilnika, dostikrat poimenovan kot smetar, skrbi za sproščanje

pomnilnika in s tem razbremeni razvijalce pri hitrem razvijanju aplikacij. Iz starejših

programskih jezikov C ali Pascal smo vajeni, da rezervacije in sproščanje pomnilnika

delamo sami, tu pa ogrodje .NET skrbi za to s pomočjo upravljane kopice (managed heap),

območja prostega pomnilnika, ki ga upravlja CLR. Klasično pojmovanje življenjske dobe

spremenljivke se zato spremeni: kolikor dolgo obstaja referenca na opazovani objekt, tako

dolgo bo CLR rezervirani del pomnilnika tudi ohranjal. To velja seveda za upravljano kodo

(managed code), ki ne vključuje prijemov na nižjem nivoju, kot na primer kazalcev. S

prehodom v neupravljano kodo moramo za upravljanje pomnilnika skrbeti sami.

Ogrodje .NET ima vgrajene posebne varnostne mehanizme. Dva tipična testa sta

validacija in verifikacija. Prva preko CLR preverja, ali so metapodatki o IL pravilni,

medtem ko verifikacija preverja zgolj, če napisana koda posega v tako imenovano

»nevarno« območje. Pod to območje štejemo med drugim tudi upravljanje s kazalci. Če

koda ne prestane obeh testov, program ne bo preveden. Prav metapodatki so močan

konstrukt, saj dosežejo, da je programska koda samoopisljiva, kar omogoča lažje reševanje

kompleksnejših problemov v programiranju. Ogrodje .NET prav tako skrbi za prekoračitev

obsega (buffer overflow), izgubo prostora v pomnilniku (out of memory) in podobne

probleme.

Za dostop aplikacij do podatkov skrbi komponenta ADO.NET (ActiveX Data

Object .NET). Predstavlja nabor manjših komponent za dostop in modifikacijo podatkov.

Sestoji iz podatkovne množice (Data Set) in ponudnika podatkov (Data Provider).

Podatkovna množica je (v smislu povezave do podatkovne baze) odklopljena kopija

podatkov v pomnilniku, lahko pa jih rečemo tudi preprosto lokalna kopija. Nad njo se

vršijo spremembe, le-te pa se po končanem sklopu ukazov storijo še nad tako imenovano

centralno podatkovno bazo. Ponudnik podatkov pa je odgovoren za vzpostavitev in

vzdrževanje povezave do podatkovne baze. ADO.NET je posebna izvedba že dolgo

obstoječih modelov ADO, ki pa so iz vidika učinkovitosti in hitrosti že zastarali.

Page 28: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 17

Oddaljen dostop .NET je Microsoftov aplikacijski programski vmesnik (application

programming interface ali API) za medprocesno komunikacijo. Je naslednik tehnologij kot

so objektno povezovanje in vključevanje (object linking and embedding ali OLE). Še danes

zelo aktualen komponentni objektni model (component object model ali COM) pa so

temeljne komunikacije Windows (Windows Communication Foundation ali WCF), njegov

naslednik v ogrodju .NET 3.0. Omogoča povezave med različnimi programskimi jeziki in

oddaljenimi spletnimi aplikacijami.

V naslednjem nivoju sledijo ASP.NET, manjše ogrodje za razvoj spletnih aplikacij

v povezavi z vsemi prednostmi, ki jih ponuja .NET. V istem nivoju najdemo še gradnike

Windows (Windows Forms), grafični API, ki je skupen vsem programskim jezikom .NET.

Gradniki so takšni, kakršne najdemo v operacijskem sistemu Windows in niso prenosljivi

(alternativno implementacijo morajo vsa ogrodja priskrbeti sama). Nazadnje imamo v tem

nivoju še konzolo, ki omogoča programiranje na nižjem nivoju s pomočjo ukazne vrstice.

Razredna knjižnica .NET (base class library) vsebuje tipe razredov, ki so skupni

vsem jezikom .NET. Imenujemo jo lahko tudi knjižnica funkcionalnosti, saj omogoča

hitro in pregledno razvijanje enostavnih in kompleksnih aplikacij. Vsebovani razredi

ponujajo številne splošne in pogoste funkcionalnosti, kot na primer grafično oblikovanje,

dostop do datotek, metaprogramiranje itd.

Sem ne spadajo splošni tipi, ki jih najdemo v sistemu splošnih tipov (common type

system ali CTS). Specifikacija CTS definira vse možne podatkovne tipe in strukture, ki jih

podpira CLR. Definira tudi njihovo interakcijo, obenem pa jih ni mogoče modificirati ali

od njih dedovati. Na podlagi tega je dosežena interakcija med aplikacijami, napisanimi v

različnih jezikih .NET.

Naslednji nivo pa že ponuja specifikacijo vseh programskih jezikov .NET. V

prejšnjih nivojih je bilo definirano že večino podpornih komponent, tu pa so podana vsa

sintaktična in leksikalna pravila, ki označujejo programski jezik. Sem spadajo osnovni

objektno orientirani pojmi, kot so vidnost, sistem tipov in dedovanja, prekrivanje, pravila

poimenovanja, dogodki, izjeme itd. Tu je vsak jezik definiran sam zase, a še vedno

najdemo veliko skupnih točk med jeziki (med drugim tudi C++, C#, Visual Basic, J#) v

ogrodju. V novejših ogrodjih najdemo tudi funkcijski jezik F#, pa tudi grafični opisovalni

Page 29: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 18

jezik WPF, ki temelji na XML notaciji, služi pa kot alternativa poprej omenjenim

gradnikom Windows.

3.2 Razširljivost

Razširljivost je sposobnost prilagajanja aplikacije na prihodnji razvoj. Pri tem

implementacija upošteva prihodnjo rast aplikacije. Ker si želimo, da naša aplikacija ohrani

možnost rasti, moramo to upoštevati tudi pri izbiri razvojnega okolja .NET.

Naše izbrano okolje nam omogoča tudi enostavno dodajanje komponent, ki jih

nismo razvili sami. Dostikrat se namreč zgodi, da v aktualnem razvoju ne moremo

predvideti, katere komponente bodo uporabljene v prihodnosti. V takšnim primerih ima

ogrodje .NET na voljo posebno komponento razširljivosti (AddIn component), s katero

nam ni treba vnaprej poznati podrobne strukture vključevalnega objekta. Poglejmo si

praktičen primer (programska koda 1).

static void Main()

{

// Predvidevamo, da bodo razširitve nameščene v aktualni mapi

String addInRoot = Environment.CurrentDirectory;

// Preverimo namestitev

AddInStore.Rebuild(addInRoot);

// Poiščemo ustrezne razširitve

Collection<AddInToken> tokens =

AddInStore.FindAddIns(typeof(Calculator), addInRoot);

// Sprožimo povpraševanje, katero razširitev naj vzamemo

AddInToken calcToken = ChooseCalculator(tokens);

// Aktiviramo izbrano razširitev z varnostnim nivojem za splet

Calculator calculator =

calcToken.Activate<Calculator>(AddInSecurityLevel.Internet);

// Uporabimo objekt iz razširitve, katerega vmesnik poznamo

RunCalculator(calculator);

}

Programska koda 1: Razširitve v ogrodju .NET

Najprej potrebujemo samo namestitev razširljive komponente. Najlažje jo

namestimo kar v mapi, kjer se bo nahajal naš aktualen program, ki ga želimo razširiti.

Poprej moramo seveda preveriti, ali je razširitev, ki si jo želimo namestiti, bila ustrezno

Page 30: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 19

nameščena. Potem s povpraševanjem po želeni zbirki sprožimo iskanje. Ker se lahko

zgodi, da dobimo več možnih rezultatov kot odgovor na povpraševanje, moramo izbrati

pravega. Šele nato ga lahko aktiviramo, pri čemer podamo ustrezen nivo varnosti. Sedaj je

objekti pripravljen za uporabo.

Naša aplikacija utegne iti po drugi poti, saj se bo zelo verjetno sama vključevala v

druge že obstoječe programe. Z ogrodjem .NET je to mogoče narediti dovolj enostavno.

3.3 Hitrost razvijanja

Hitro razvijanje aplikacij je v današnjem informacijskem razvojnem svetu

izrednega pomena. Je metodologija, ki se osredotoča bolj na razvijanje prototipov in manj

na načrtovanje. Samo načrtovanje pri t.i. aplikacijah RAD je največkrat zajeto kar v samem

pisanju programske kode. Zaradi tega je aplikacija v večini primerov bolj fleksibilna in

dovzetna do potencialnih sprememb.

Te metodologije se bomo deloma posluževali tudi v našem diplomskem delu, pri

čemer pa načrtovanja ne bomo zanemarjali – takšno metodologijo bomo uporabili

predvsem pri samem pisanju kode, ne pa tudi ob raziskovanju.

Hitro razvijanje kode pride v poštev pri morebitnem nadaljnjem razvoju, ki ga bo

naša aplikacija deležna.

3.4 Meta programiranje

Meta programiranje je sinonim za pisanje programov, ki manipulirajo z drugimi

programi ali pa celo sami s seboj. Jezik, v katerem je napisan meta program, se imenuje

metajezik. Po drugi strani pa se jezik manipuliranega programa imenuje objektni jezik.

Sposobnost programskega jezika, da lahko samemu sebi predstavlja metajezik, se imenuje

refleksija (reflection) in je pomemben del ogrodja .NET.

Z refleksijo lahko počnemo veliko več, kot smo bili doslej vajeni. Lahko

generiramo primerke razredov v izvajalnem času (programska koda 2). Lahko prožimo

delegirane metode. Lahko dobimo natančne podatke o strukturi razreda objekta, ne da bi ga

Page 31: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 20

poznali. Predvsem pa lahko dodajamo atribute k objektom, razredom, metodam in drugim

komponentam v ogrodju .NET. S tem povečujemo samoopisljivost naše aplikacije, širimo

njeno uporabnost in povečujemo enostavnost uporabe ter verjetnost, da se bo naša

programska koda v prihodnosti kdaj spet uporabila.

// ustvarimo objekt tipa DateTime

DateTime dateTime =

(DateTime)Activator.CreateInstance(typeof(DateTime));

// ustvarimo objekt tipa DateTime, tokrat s parametri

DateTime dateTime = (DateTime)Activator.CreateInstance(typeof(DateTime),

new object[] {

2008, 7, 4 });

Programska koda 2: Metaprogramiranje v Ogrodju .NET

V našem primeru se bomo posluževali predvsem atributov, ki jih lahko pripišemo

razredom, metodam in drugim elementom. To bomo storili predvsem zaradi hitrega

razvijanja, saj lahko iste funkcionalnosti dosežemo tudi na druge načine.

3.5 Napredno objektno orientirano programiranje

Objektno orientirano programiranje je stara programerska paradigma in del vsakega

kompleksnejšega programskega jezika, s katerim je moč ustvariti aplikacije za širšo rabo.

Ogrodje .NET osnovne pojme, kot so razred, objekt ali dedovanje, seveda realizira. Pri

naprednem objektno orientiranim programiranju pa ne gre toliko za lastnosti programskega

jezika, kakor za vzorce (design patterns), ki jih lahko tvorimo.

V grobem poznamo tri tipe:

• ustvarjalni vzorci,

• strukturni vzorci in

• vzorci obnašanja.

Ustvarjalni vzorci počnejo točno to, kar jim ime veleva – ustvarjajo objekte. Za nas

sta zanimiva predvsem enolični vzorec (singleton pattern) in vzorec proizvajalne metode

(factory method pattern). S pomočjo prvega lahko predstavimo razred, ki ni statičen, na

statičen način. Skrijemo konstruktor in definiramo metodo, ki vrne instanco objekta. Le-to

Page 32: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 21

ustvarimo zgolj enkrat, tako da imamo vedno opravka samo z enim objektom, s čimer se

precej približamo principu statičnega razreda. Pridobimo pa še vse lastnosti navadnega

razreda, med drugim tudi zelo pomembno dedovanje, ki pri statičnih razredih po principih

objektno orientiranega programiranja seveda ni mogoče. Drugi vzorec proizvajalne metode

nam pomaga ustvariti objekt razreda. To je uporabno predvsem, ko uporabljamo vmesnike

namesto razredov – pri prireditvi bo spremenljivka tipa vmesnika dobila instanco razreda,

o katerem nam ne bo treba vedeti ničesar, razen tega, da implementira sam vmesnik. To bo

zelo praktično pri definiciji točke v prostoru, ki bo omogočala nadaljnje dedovanje

(osnovna točka bo imela 2 koordinati, točka v 3D prostoru bo imela še dodatno koordinato,

točka v času pa še časovno itd.).

Strukturni vzorci na enostaven način realizirajo relacije med entitetami. Uporabljajo

se pri maskiranju kompleksnih objektov za enostavnimi vmesniki, grupiranju objektov,

poenostavljanju kompleksnih vmesnikov in še kje. Vzorci obnašanja pa se po drugi strani

uporabljajo predvsem pri poenostavljanju kompleksnih funkcionalnosti. Kot lahko

opažamo, gre pri načrtovalnih vzorcih v glavnem za poenostavitev. Slednjih dveh v

diplomski nalogi ne bomo uporabili [Gamma, Design Patterns].

3.6 Prenosljivost

Lastnost prenosljivosti omogoča vmesni jezik, ki ga ogrodje .NET uporablja. Ta

vmesni jezik je skupen vsem alternativnim implementacijam sličnih ogrodij. Najbolj

razširjena alternativa ta hip je zagotovo ogrodje MONO, ki teče pod okoljem Linux in

omogoča, da lahko programe, napisane in prevedene v okolju Windows, zaženemo

kjerkoli, kjer je MONO tudi nameščen.

Ker si želimo, da našo aplikacijo požene čim več uporabnikov, moramo

programsko kodo pisati tako, da bo združljiva tudi z ogrodjem MONO, četudi jo bomo v

prvi vrsti zaradi hitrosti razvijanja pisali v Visual Studiu .NET pod okoljem Windows.

Združljivost z ogrodjem MONO se morda zdi trivialna, a je treba upoštevati dvoje pravil:

• prepovedano je vključevanje knjižic DLL, specifičnih za okolje Windows in

• držati se je potrebno konstruktov zadnje podprte verzije, to je ogrodje .NET 2.0.

Page 33: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 22

Vključevanje knjižnic iz okolja Windows se lahko zgodi, če hočemo spremeniti vizualne

gradnike. Žal v ogrodju MONO ni veliko poudarka na atraktivnosti vizualnih komponent,

težko pa je prenosljivost narediti že za enostavno lastnost gradnika kot na primer

transparentnost.

Zastran tega so podprte vse kritične komponente, ki jih za nemoteno izvajanje

aplikacije potrebujemo. Zato se moramo držati zgolj podprtih vizualnih gradnikov in sproti

napisano kodo preverjati tudi v okolju Linux [Bornstein, 2004].

Page 34: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 23

4 Zapis podatkov

Standard IGC je format, v katerem je zapisan let jadralnih letal. Gre za datoteko, ki

sestoji iz vrstic znakov, od katerih vsaka vrstica daje nabor informacij za najrazličnejše

stvari, bodisi je to točka v prostoru, informacija o vetru, glasnost motorja ali pa zgolj ime

pilota.

Format je bil sprva razvit s strani skupine zastopnikov IGC, proizvajalcev jadralnih

letal in številnih neodvisnih razvijalcev programske opreme, ki so se ukvarjali zlasti z

analizo poletov. Prvič so format potrdili leta 1995, od takrat pa se vseskozi razvija in

doživlja redne posodobitve. Znan je po vsem svetu, saj se uporablja pri vseh aktivnostih, ki

vključujejo kakršno koli obliko pozicijskega shranjevanja ob jadranju. Pomemben je postal

tudi pri raznih tekmovanjih, kjer ga je promovirala mednarodna jadralska zveza.

4.1 Podatkovne vrstice

Če si pogledamo format, ugotovimo, da za človeka ni enostavno berljiv, četudi

lahko iz njega razberemo vrsto relevantnih podatkov. Sestavljen je iz vrstic, kjer vsaka

pove kakšno informacijo. Če govorimo o vrstici A, govorimo o vrstici, ki se začne na črko

A in neha pri znaku za končanje vrstice (line terminator). Prva črka določa tudi tip

informacije, ki se nahaja v posameznih vrsticah. Poglejmo si jih:

• Vrstica A je vedno na prvem mestu, se pojavi samo enkrat in vsebuje informacije o

proizvajalcu snemalnika leta ter identifikacijo.

• Vrstica B (tabela 1) je za nas najpomembnejša, saj vsebuje informacije o točkah

(programska koda 3). Normalno se pojavlja največkrat v celotni datoteki. Določajo

jo čas, pozicija in dodatni podatki, ki jih določimo preko vrstice I.

Page 35: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 24

Tabela 1: Struktura vrstice B

parameter velikost format opis parametra

čas UTC 6 zlogov HHMMSS veljavni numerični znaki od 0 do 9, pri čemer

HH stoji za uro, MM minuto in SS sekundo

latituda 8 zlogov DDMMmmmN

/S

Veljavni numerični znaki in N ter S, kjer DD

stoji za stopinje [-90°, 90°], MM za minute [0',

60'] in mmm za sekunde [0'', 60'']

longituda 9 zlogov DDDMMmmm

E/W

podobno kot pri Latitudi, a z enim znakom več

za prikaz stopinj [-180°, 180°]

tip točke 1 zlog A or V vsebuje 'A', če vsebuje točka tudi altitudo, sicer

'V'

altituda nad

morsko

gladino

5 zlogov PPPPP nadmorska višina v metrih

altituda

GNSS 5 zlogov GGGGG višina nad WGS84 elipsoidom

• Vrstica C označuje nalogo, ki jo mora letalo opraviti. To se uporablja pri

tekmovanjih, kjer ima letalo točno določene lokacije, ki jih mora preleteti, da

opravi nalogo.

• Vrstica D nam pove, da se uporablja diferencialni GPS, in se lahko pojavi na več

mestih v datoteki IGC, v kolikor uporabljamo več modulov GPS.

• Vrstica E stoji za dogodke (events), ki se med letom dogajajo v neenakomernih

intervalih.

• Vrstica F prikaže konstelacijo satelitov.

• Vrstica G definira varnost s kodiranjem v datoteki IGC.

Page 36: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 25

• Vrstica H vsebuje splošne informacije o poletu (header).

• Vrstica I (tabela 2) je za nas ravno tako pomembna kot B vrstica, služi pa za

razširitev podatkov za omenjeno vrstico (programska koda 3).

Tabela 2: Struktura vrstice I

parameter velikost element opis parametra

število

razširitev 2 zloga NN

veljavni numerični znaki od 0 do 9, stojijo za

število razširitev v B vrstici

začetna

pozicija 2 zloga SS

končna

pozicija 2 zloga FF

3-črkovna

koda

razširitve

3 zlogi CCC alfa-numerični znaki

• Vrstica J deluje podobno kot I vrstica, vendar nudi razširitve za K vrstico.

• Vrstica K se pojavlja manj pogosto kot B in razkriva dodatne informacije preko J

vrstice, osnovana pa je iz časa ter razširitev.

4.2 Obvezni elementi in praktični primer

V datoteki IGC se morajo obvezno pojaviti sledeče vrstice v ravno takšnem

vrstnem redu: A, H, I, B, F in G. Izkušnje kažejo, da včasih dobimo slabo strukturirane

vhodne datoteke, zato se na to ne smemo preveč ozirati. Za nas so pomembne predvsem

točke leta, zato si poglejmo enostaven primer zapisa leta.

Page 37: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 26

ALXN16306FLIGHT:1

HFDTE130706

HFFXA100

HFPLTPILOT:Janez Novak

HFGTYGLIDERTYPE:Ciriss_Std.

HFGIDGLIDERID:YU-4305

HFDTM100DATUM:WGS-1984

HFGPSGPS:JRC/CCA-450,16,max9000m

HFFTYFRTYPE:LXNAVIGATION,COLIBRI

HFRFWFIRMWAREVERSION:3.0

HFRHWHARDWAREVERSION:3.0

HFCIDCOMPETITIONID:05

HFCCLCOMPETITIONCLASS: Open Class

I013638ENL

B0927324520510N02027150EA0004600083488

B0927444520510N02027150EA0004600083496

B0927564520510N02027150EA0004600083472

B0928084520510N02027150EA0004600083464

B0928204520510N02027150EA0004600083488

B0928324520510N02027150EA0004700081472

B0928444520510N02027150EA0004700081488

B0928564520510N02027150EA0004800081488

B0929084520510N02027150EA0004800083496

B0929204520510N02027150EA0004700085496

B0929324520510N02027150EA0004800085488

B0929564520510N02027150EA0004900085472 Programska koda 3: Primer zapisa leta v formatu IGC

Podatki so seveda izmišljeni, gre pa za let Janeza Novaka, ki je letel s Ciriss_Std in

uporabljal napravo Colibri podjetja LxNavigation. Obstaja 12 zapisov njegovih lokacij, pri

Page 38: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 27

čemer se ob vsaki lokaciji (vrstica B) še zapisuje glasnost motorja (ENL) preko razširitve v

vrstici I.

Poglejmo si praktični primer natančneje (programska koda 3). Naš zapis leta se

začne z vrstico A. Ta vrstica vsebuje podatke o zapisovalniku (LXN16306) in dodatne

informacije o letu (FLIGHT:1). Zapisovalniki lahko namreč zapisujejo več letov zapored,

kar pride do izraza pri letalih, ki so v lasti klubov in si jih deli več članov kluba.

Imamo samo eno vrstico A, zato pa je vrstic tipa H bistveno več. Intuitivno si lahko

razlagamo, da H pomeni glavo datoteke (header), vrstice pa nosijo informacije o že poprej

omenjenem Janezu Novaku, tipu letala (YU-4305), geodetskem sistemu (WGS-1984),

zapisovalniku GPS (JRC/CCA-450,16,max9000m) in o morebitnem tekmovanju (Open

Class). Teh vrstic je 12.

V nadaljevanju naletimo na pomembno vrstico I, ki služi kot razširitev vrstice B.

Drugi in tretji znak (01) določata število razširitev – v našem primeru je to ena. Četrti in

peti znak (36) definirata začetno pozicijo razširitve v vrstici B, šesti in sedmi (38) pa

končno pozicijo. Naslednji trije znaki (ENL) nam povedo tip razširitve – v našem primeru

je to glasnost motorja.

Sledijo dejanske lokacije letala v času. Imamo 12 vrstic B, podrobno pa si poglejmo

kar prvo (programska koda 3). Kot smo že zapisali v definiciji strukture, nam vrstica B

najprej poda čas v formatu UTC (coordinated universal time), kar v našem primeru

pomeni, da je čas lokacije 9:27:32. V nadaljevanju zvemo lokacijo, kjer je latituda enaka

45°20'510'' na severni polobli, longituda pa 20°27'150'' na vzhodni polobli. Znak 'A' nam

pove, da vrstica B vsebuje tudi višinske podatke, in sicer 46 metrov nad morsko gladino

oziroma 83 metrov nad WGS84 elipsoidom. Sedaj smo prebrali 35 znakov, kar se sklada s

podatki o prvi razširitvi, ki se začne pri 36. znaku in je dolga 3 znake. Tako nam 488

pomeni nivo glasnosti motorja, ki lahko zaseda vrednosti med 0 in 999. S tem smo

definirali lokacijo v času z vsemi obrobnimi informacijami [FAI, 2008].

4.3 Pretvorba in posebnosti

Glavni cilj pretvorbe je procesiranje stavka B in ustrezno obravnavo njegovih

razširitev preko vrstice I. Dogovorimo se, da definiramo število -1684 kot NODATA ali

Page 39: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 28

NULL za osnovne tipe, saj je to število predstavljivo tako pod int, float in double tipom

oziroma je mogoče delati uspešne primerjave. Želimo si hitrega procesiranja podatkov, saj

nam je cilj isto kodo uporabiti tudi na prenosnih napravah, kjer je časovna zahtevnost velik

faktor.

Najprej je za nas aktualna vrstica I, na katero naletimo zagotovo pred vrstico B.

Razberemo število razširitev in si vsako shranimo. Hkrati definiramo za vsako razširitev

faktor množenja, s katerim bomo dejansko vrednost v vrstici B nato pomnožili. Praktični

primer tega lahko pokažemo pri vrednostih hitrosti in usmerjenosti – ker bi radi hitrost

beležili v metrih na sekundo, usmerjenost pa v radianih, v prvem primeru uporabimo faktor

f1, v drugem pa f2. Izračunamo ju po sledečih formulah:

�� = 13.6 ∗ 10š�� �������

�� = �180

Pomen teh faktorjev pride do izraza, ko beremo dejanske podatke razširitev iz

vrstice B. Hitrosti, ki jih dobimo kot vrednost kilometrov na uro, želimo zapisati v metrih

na sekundo. Zato bomo vrednost razširitve iz vrstice B pomnožili z faktorjem f1. Z

vrednostmi, ki so izmerjene v stopinjah, kot sta longituda in latituda, si zaradi lažjega

računanja želimo zapisati v radianih. Zato bomo tovrstne prebrane razširitve iz vrstice B

pomnožili z f2.

Nadaljujemo z beleženjem točk iz vrstic B. Datum oziroma čas preberemo kot

celotno število in ga z aritmetičnimi operacijami razdelimo na komponente dan, mesec in

leto. Isto naredimo tudi za Longitudo in Latitudo skupaj. V nadaljnjem koraku bi lahko

prebrali še razširitve, vendar nas le-te za naše potrebe ne zanimajo.

Paziti moramo na posebnosti v obliki okvar sprejemnika GPS. Posledično bomo

opazili anomalije v točkah, saj se lahko zgodi, da bo v urejenem nizu katera izrazito

izstopala. To je potrebno popraviti v rekonstrukciji, skupno z neurejenim časovnim

intervalom. Pogosto se dogaja, da zapisovalnik poti zapiše točko T2 pred T1, čeprav je

časovno gledano letalo preletelo T1 pred T2. Posledica je neurejena črta, ki povsem popači

prikaz leta – to je v rekonstrukciji potrebno upoštevati.

Page 40: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 29

Točke shranimo v seznam, imenovan »Flight«, ki bo osnova za kasnejše

procesiranje.

Page 41: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 30

5 Rekonstrukcija

Pred seboj imamo seznam točk, diskreten nabor parov Longituda – Latituda,

zapisanih v radianih. V rekonstrukciji moramo odpravljati tri stvari:

• lokacijske anomalije,

• časovne anomalije in

• prevelike časovne intervale.

Lokacijske anomalije se dogajajo kot posledica napake pri zapisovanju GPS

naprav. Odpravljanje je dokaj enostavno, če predpostavimo naslednjo stvar: anomalija v

zapisu bo vedno izrazita. Ker imamo koordinate zapisane v radianih, vemo, da bodo

vrednosti v vsakem trenutku obsegale interval [–π, π] za longitude oziroma [− ��, ��] za

latitude. Intervali so določeni zaradi načina zapisa geoprostorskih koordinat, pri čemer

poldnevniki obsegajo interval [0, 180] stopinj na obeh hemisferah, vzporedniki pa [0, 360]

stopinj od juga proti severu. Definirane intervale dobimo tako, da stopinje pretvorimo v

radiane. Torej velja sledeče: imamo zapis koordinate izven teh meja, lahko z gotovostjo

trdimo, da gre za anomalijo.

Ker pa se na to ne smemo zanašati, uporabimo odstopanje v preleteni razdalji.

Beležimo zadnjih 10 razdalj in računamo aktualno. Če le-ta odstopa od povprečne za več

kot 30%, lahko zopet trdimo, da gre za anomalijo, ki jo je potrebno odstraniti. Odstranjeno

točko v času lahko sicer rekonstruiramo linearno (torej ji priredimo točko, ki razpolovi

daljico med prejšnjo in naslednjo – v tem primeru praktično ne storimo ničesar), lahko pa

jo interpoliramo. Interpolacijo si bomo podrobneje ogledali v rekonstrukciji časovnih

intervalov.

Časovne anomalije se dogajajo ob napakah vrstnega reda zapisovanja koordinat

GPS. Imejmo točko P1 v času T1 ter P2 v času T2, pri čemer je T1 < T2. Časovna anomalija

se zgodi, ko se točka P1 zaradi napake pri pisanju zapiše za P2. Te anomalije rešimo še

enostavneje kakor lokacijske, saj jih ni potrebno odstranjevati, temveč celoten nabor točk

enostavno uredimo. Ker pa bo šlo v večjem delu za že urejeno zaporedje točk, moramo

uporabiti takšen razvrščevalni algoritem, ki bo imel časovno odvisnost v najslabšem

primeru O(� ∗ log (�)). .NET ima vgrajeno hitro urejanje (quicksort), ki pa pri že

urejenem polju nima najboljših lastnosti, saj se njegova časovna odvisnost poveča na

Page 42: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 31

O(��). Zato porabimo implementacijo urejevalnega algoritma s kopico (HeapSort), ki se v

naših pogojih obnaša najbolje.

Urejanje s kopico je v večini primerov in na večini konfiguracij počasnejše od

hitrega urejanja, vendar pa se od slednjega obnaša bolje, če je večino elementov v nizu že

urejenih. Urejanje s kopico ni stabilni urejevalni algoritem. To pomeni, da za več parov

ključ-vrednost, pri katerem bodo ključi isti, vrednosti pa ne, ne bo vedno zagotovljen

originalni vrstni red po sortiranju. Drugače povedano: imejmo omenjeni točki P1 in P2 s

časoma T1 in T2 pri pogoju, da je T1 = T2, kjer nam čas pomeni ključ, točka pa vrednost.

Algoritem je stabilen, če velja, da bo vrstni red P1 in P2 enak po urejanju. To za urejanje s

kopico ne drži, vendar za nas ne predstavlja bistvenega problema, saj bomo za ključe vzeli

čase Tn, kjer se bodo sosednji primerki vedno razlikovali za vsaj eno sekundo – kakor je

omejeno že v specifikacijah slehernega zapisovalnika GPS. Za razvrščanje s kopico bomo

uporabili obstoječo implementacijo (http://en.csharp-online.net/Heap_Sort) v C#.

Odprava prevelikih časovnih intervalov zahteva posebno pozornost, ki predstavlja

zlasti ob kroženjih dostikrat nerešljiv problem. Zato si bomo sprva pogledali fizikalni

model letenja ter nato razmislili o možnostih in metodah reševanja problema.

5.1 Fizikalni model letenja

Let jadralnega letala se od navadnega precej razlikuje. Jadralna letala so zmožna

precej sunkovitih premikov ter izrazitih kroženj. Pri gibanju, kjer je kotna hitrost nizka,

poti ni težko opisati. Dovolj je že, če točke med seboj povežemo v daljice, da dobimo bolj

jasno sliko o tem, kako je dejanski let potekal. Pri visoki kotni hitrosti pa temu ni več tako,

saj dobimo precej nenavadno sliko, ki ni več intuitivna.

Page 43: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 32

Slika 4: Prikaz leta v ravnini xy

Poglejmo si let, ki ima visok časovni interval (slika 4). Na sliki je z rdečo debelejšo

krivuljo označena 2D projekcija leta, kakršna bi naj bila v resnici. Črne točke predstavljajo

znane podatke, medtem ko črna krivulja predstavlja interpolacijo celotnega nabora točk.

Hitro ugotovimo problem, ki nam ga visok časovni interval predstavlja – točke ne

opisujejo več dejanske poti gibanja.

Predpostavimo lahko, da se kotna hitrost glede na zrak ne spreminja, temveč je

konstanta. Bolje rečeno, letalo ob dviganju konstantno kroži z isto kotno hitrostjo (v

kolikor sam let preslikamo v 2D ravnino), za zamik kroženja pa je zadolžena komponenta

vetra.

V splošnem lahko opisano definiramo z vetrovnim trikotnikom, ki je grafična

predstavitev razmerja jadralnega letala in vetra.

Vetrovni trikotnik (slika 5) je definiran iz treh komponent:

Page 44: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 33

• zračni vektor predstavlja gibanje letala glede na zrak,

• vetrovni vektor predstavlja gibanje zraka nad zemljo in

• zemeljski vektor predstavlja gibanje letala glede na zrak.

Slika 5: Vetrovni trikotnik

Vrnimo se na kroženje. Če upoštevamo dejstvo, da je kroženje konstantno in

predstavlja gibanje glede na zrak, moramo dodati samo še vetrovno komponento, ki

celotno kroženje zamakne v smer vetrovnega vektorja. Opisano gibanje letala glede na

zemljo predstavlja vetrovni trikotnik (slika 5).

5.2 Metode reševanja

Problem lahko rešimo na dva načina. Prvi je modularen in se imenuje »od spodaj

navzgor«. To pomeni, da obravnavamo točko po točko posebej in šele pri zadnji dobimo

zaključeno celoto. Drugi način je celostni in se imenuje »od zgoraj navzdol«. Pri tem

principu zaobjamemo nabor točk kot celoto in vršimo algoritme nad celotnim naborom

točk hkrati. Vse predpostavke, ki smo jih postavili pri definiciji fizikalnega modela, nam

pridejo prav predvsem pri slednjem principu. A sprva si bomo ogledali prvi, bolj intuitiven

pristop in metodo, ki smo jo razvili sami.

Page 45: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 34

5.3 Metoda krožnih lokov

Metoda temelji na krožnih lokih. Predpostavimo, da naše gibanje zavzema obliko

krožnega loka, saj smo poprej definirali fizikalni model, ki pravi, da pri kroženju v

glavnem s preleteno potjo zasedamo obliko pravilnega kroga.

Bistvo metode krožnih lokov je, da povežemo točke med seboj s krožnimi loki. Pri

tem mora biti prehod med dvema krožnima lokoma v opazovani točki čim bolj gladek in

nepretrgan. Kako bi to dosegli?

Poznamo kot, pod katerim letalo vstopa v kroženje. Torej poznamo kot pri vhodni

točki krožnega loka. Center krožnega loka bo, v kolikor hočemo, da je prehod maksimalno

gladek, ležal nekje na premici, ki je pravokotna na smer gibanja, saj je centripentalna sila

ob kroženju ravno tako pravokotna. Vemo tudi, da bo oddaljenost centra od vhodne točke

enaka kot od izhodne točke, saj le tako lahko potegnemo lep krožni lok, ki se konča na

naslednji točki. Če torej povzamemo, predpostavimo, da:

• se center krožnega loka nahaja na ortogonalni premici, ki poteka skozi vhodno

točko in

• je dolžina daljice med centrom in vhodno točko enaka dolžini daljice med centrom

in izhodno točko (slika 6).

Slika 6: Predpostavke pri metodi krožnih lokov

Page 46: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 35

Preostane nam torej zgolj, da izračunamo, kje leži center. Imamo torej vhodno

točko p1 (x1, y1), izhodno točko p2 (x2, y2) in središče c(x, y), katerega koordinati sta v

linearnem razmerju, saj center leži na premici s, ki je ortogonalna na smer gibanja v vhodni

točki. To premico torej definirata točki p1 in c. V ravninskem kartezičnem koordinatnem

sistemu je premica s graf linearne funkcije:

= !" + �

Zapišemo, da sta dolžini $�% in $�% enaki.

&(" − "�)� + ( − �)� = &(" − "�)� + ( − �)�

Namesto c(x, y) lahko zapišemo kar c(x, kx + n), saj smo predpostavili, da center

kroženja c leži na premici s. V enačbo namesto y vstavimo kx + n. Enačbo razrešimo tako,

da obe strani kvadriramo.

(" − "�)� + (!" + � − �)� = (" − "�)� + (!" + � − �)�

"� − 2""� + "�� + (!" + �)� − 2 �(!" + �) + ��= "� − 2""� + "�� + (!" + �)� − 2 �(!" + �) + ��

−2""� + "�� − 2 �(!" + �) + �� = −2""� + ""�� − 2 �(!" + �) + ��

−2""�� − 2 �(!" + �) + 2""� + 2! � + 2� � = −""�� − �� + �� + ��

−2""� − 2! �" − 2� � + 2""� + 2! �" + 2� � = "�� − "�� + �� − ��

"(−2"� − 2! � + 3"� + 2! �) + 2� � − 2� � = "�� − "�� + �� − ��

"("� − "� + ! � − ! �) + � � − � � = "�� − "�� + �� − ��

"("� − "� + !( � − �)) = "�� − "�� + �� − ��

" = "�� − "�� + �� − �� − 2�( � − �)2("� − "� + !( � − �))

Končna rešitev za center je torej c(x, kx+n), pri čemer koeficiente k in n dobimo iz

premice s, ki je pravokotna na smer gibanja v vhodni točki. Proces v naslednjem koraku

ponovimo tako, da izračunamo center c2 za krožni lok med točkama p2 in p3 (slika 7).

Nadaljujemo do konca vseh točk.

Page 47: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 36

Slika 7: Demonstracija rekonstrukcije s krožnimi loki

V naslednjem koraku (slika 7) imamo definirane točke p1, p2 in naslednjo p3. Točke

so označene s črno piko, rdeča linija pa predstavlja generirane krožne loke. Zelene premice

s1 in s2 predstavljajo ortogonalne linije glede na smer vhodne točke, modre točke pa so

središča krožnih lokov. Če si pogledamo celotni proces na tem praktičnem primeru še

enkrat, naprej vzamemo točko p1 in ji določimo pravokotno premico s1. Tej premici

določimo koeficiente k in n. Nato po definirani formuli izračunamo center krožnega loka

na p2 in ga izrišemo. To ponovimo za vsako naslednjo točko, dokler nismo zaobjeli

celotnega nabora točk.

Page 48: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 37

Slika 8: Rešitev kroženja z metodo ostrih krožnih lokov

Za zahtevne primere, kakršnega smo definirali na začetku poglavja, lahko naredimo

modifikacijo algoritma. Krožne loke lahko naredimo ostrejše tako, da pomaknemo center

krožnega loka nazaj v smeri razpolovišča kota. Obenem ne potegnemo več čistega

krožnega loka, saj bi rezultat bil preveč grob. Namesto tega dodamo nekaj referenčnih

točk, ki ležijo na generiranem krožnem loku, ostale pa skupaj s preostalim naborom

vhodnih točk interpoliramo. Rešitev začetnega specificiranega težkega primera prikazuje

slika 8.

5.4 Interpolacija

Interpolacijo smo skozi celotno diplomsko delo omenjali kot način nadomeščanja

manjkajočih podatkov. Posebej smo jo omenili pri premočrtnem gibanju, kjer samo gibanje

nima pospeškov, temveč je relativno predvidljivo, obenem pa smo jo uporabili tudi pri

prejšnji metodi krožnih lokov oziroma izpeljav le-teh.

Page 49: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 38

Ob vsem tem pa je vredno poudariti, da je interpolacija že sama po sebi

rekonstrukcijska metoda, in sicer tipa »od spodaj navzgor«, a z nekaj vplivi tehnik tipa »od

zgoraj navzdol«, saj rekonstruiramo pot med vsakim parom sosednjih točk posebej.

Za naše potrebe smo se oprli na že obstoječo implementacijo Kubičnih B-zlepkov

(Cubic B-splines) (http://itrunk.googlecode.com/svn/trunk/SPLINE/Spline.h), ki

so nam generirali manjkajoče vmesne interpolirane točke.

5.5 Genetski algoritem

Genetski algoritem je metoda, ki oponaša naravni proces evolucije. Pomembno pri

genetskih ali evolucijskih algoritmih nasploh je, da se zavedamo dejstva, da v večini

primerov algoritem ne poda optimalne rešitve, temveč zgolj njen približek. Ravno tako je

potrebno imeti v mislih, da je verjetnost, da bomo v dveh zaporednih izvajanjih algoritma

dobili dva enaka rezultata, precej majhna oziroma skoraj nič. Pozitivna stran tovrstnih

algoritmov pa je, da generirajo rešitve, na katere človek redkeje pomisli.

Za uspešno delovanje tako evolucijskih kot genetskih algoritmov je potrebno:

• rešitve primerno predstaviti (predstavitveni problem),

• določiti funkcijo uspešnosti, ki oceni uspešnost oziroma kvaliteto rešitve in

• določiti genetske operatorje [Mernik, 2003].

Princip genetskih algoritmov je sledeč. Imamo populacijo osebkov ali kromosomov, ki

tvorijo genotip ali genom. Kromosomi so možne rešitve našega problema, ki ga zastavimo

v algoritmu, naša naloga pa je, da te rešitve ovrednotimo. To storimo s posebno funkcijo

uspešnosti, ki nam ovrednoti (evaluate) kromosom. Začetno populacijo moramo seveda

sprva generirati – temu pravimo inicializacija. Pri inicializaciji moramo paziti, da je

začeten nabor rešitev (kromosomov) oziroma populacija čim bolj splošna, če ne poznamo

nobenega spektra rešitev. Če pa se nagibamo k določeni veji rešitev, lahko podamo bolj

specifično začetno populacijo. Le-to nato ovrednotimo s funkcijo uspešnosti, nato pa

podvržemo genetskim operatorjem. Ti so popolnoma odvisni od nas, izbiramo pa lahko

med križanjem, mutacijo in selekcijo. Poglejmo si splošen psevdokod evolucijskega

algoritma (programska koda 4).

Page 50: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 39

Psevdokod Evolucijski algoritem

• Inicializiraj populacijo

• Ovrednoti vsakega posameznika v populaciji

• Dokler ne bo končni pogoj (posameznik je dovolj dober ali čas je potekel) zadoščen:

o Izvedi selekcijo nad populacijo za izvajanje genetskih operatorjev

o Izvajaj genetske operatorje

o Ovrednoti populacijo

Programska koda 4: Evolucijski algoritem

5.5.1 Predstavitev rešitve

Naš cilj je iz nabora točk sestaviti smiselno kroženje. Ob tem se opremo na dejstvo,

da je kroženje pri dviganju letala konstantno, nanj pa vpliva zgolj komponenta vetra, ki

povzroči, da gibanje izoblikuje spiralo. Če vzamemo torej pot kot kromosom, ni smiselno,

da za pot uporabimo predstavitev z naborom točk. Namesto tega lahko pot opisujemo kot

tako imenovano dinamično kroženje. To kroženje pa lahko potem pretvorimo v nabor

vmesnih točk, ki sovpadajo z vhodnimi podatki. Poglejmo si zastavljeni opis kromosoma.

public class CircularPath

{

public PointF Center;

public Double Diameter;

public Double Speed; //counterclockwise if negative

public Double WindSpeed;

public Double WindFactor;

}

Vse, kar pri opisu poti potrebujemo, so center kroženja, polmer kroženja, kotna

hitrost (katere predznak pomeni, v katero smer letalo kroži) in komponenta vetra. Pri vetru

moramo upoštevati tako jakost kakor tudi vpliv. Jakost ali hitrost vetra določa zgolj, kako

hitro se bo kroženje gibalo v smeri vetra. Vpliv ali faktor vetra pa predvideva, da bo imelo

letalo največjo hitrost, ko bo tangenta kroženja enaka vektorju smeri vetra, najmanjšo pa,

Page 51: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 40

ko bo tangenta kroženja nasprotna smeri vetra. Ker je ta odvisnost sinusna funkcija, bo ta

faktor nastopal prav v njej.

5.5.2 Funkcija uspešnosti

Evalvacija kromosoma oziroma funkcija uspešnosti nam v numeričnem smislu

ovrednoti kromosom. Naša naloga je, da definiramo tovrstno funkcijo, ob tem pa moramo

postaviti še kazensko funkcijo, ki bo tako rekoč kaznovala kromosom ob nepravih oblikah.

V praktičnih primerih to pomeni, da bi denimo kromosom, ki uprizarja rešitev

logaritemske enačbe, kaznovali z maksimalno kaznijo, če bi vmesna rešitev bila negativna.

Mi se bomo osredotočili na tri možne funkcije uspešnosti, ki pridejo v poštev. Prva je

najbolj intuitivna, najlažje pa bi jo označili kot prilagajanje. Funkcija bo preverila, kako

dobro se generirano kroženje prilagaja vhodnemu naboru točk, dejansko pa bo evalvacijska

vrednost seštevek minimalnih razdalj vhodnih točk do kroženja. Druga funkcija se bo

osredotočila na interne kumulativne razdalje med točkami. Izračunale se bodo razdalje

med vsakima sosednjima točkama, ki imata enolično referenco na eno od točk v vhodnem

naboru, razdalje same pa bodo podane v kumulativni ureditvi. Tretja funkcija bo

enostavnejša, saj bo preverjala zgolj vrstni red točk, po katerem bo kroženje zaobjelo

vhodni nabor točk.

5.5.2.1 Prilagajanje

Evalvacija prilagajanja je definirana kot seštevek minimalnih razdalj vhodnih točk

do generiranega kroženja. Za vsako vhodno točko se izračuna najmanjša razdalja do

generiranega kroženja, seštevek pa služi kot evalvacijsko število, ki nam pove, koliko je

kroženje »vredno«. Manjše kot je število, boljše je kroženje. Funkcijo eval lahko zapišemo

kot:

*+,-($,.ℎ) = 0 mindist(p8, path)<�=>

kjer je path generirano kroženje, p nabor vhodnih točk in n število le-teh. Funkcija mindist

za parametra prejme točko pi in generirano kroženje path, vrne pa najmanjšo razdaljo med

Page 52: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 41

njima. Analitično je to funkcijo težje definirati, saj generirano kroženje oziroma koordinate

kroženja opišemo kot:

x = r cos(φ) + C φ cos(D)

y = r sin(φ) + C φ sin(D),

pri čemer r stoji za polmer kroženja, w za jakost vetra, D za smer vetra in φ za kot kroženja

oziroma kot, ki je ortogonalen na tangento kroženja. Ta kot teče v intervalu [0, ∞] in ga

uporabimo za realizacijo pomikanja kroženja v smeri vetra. Ker nastopa tako v

trigonometričnih funkcijah kot tudi izven njih, po analitični poti minimalno razdaljo od

poljubne točke do obravnavanega kroženja težje rešimo. Zato si pomagamo z fizikalnim

modelom, s pomočjo katerega smo na začetku generirali testne vzorce. Spremenimo

generirano kroženje v gosti diskretni nabor točk, da lahko minimalno razdaljo točke do

kroženja definiramo kot:

FG�HGI.($, J) = min>KLKM N("O − "P,L)� + ( O − P,L)�

Še vedno imamo vhodno točko v oziroma njeni koordinati xp in yp ter diskreten nabor m

točk generiranega kroženja g. Razdalje računamo sproti, ko generiramo nabor točk.

Če bo kroženje dobro, se bodo vhodne točke prilagajale generiranemu kroženju, minimalne

razdalje pa bodo majhne. Na primeru slabega kroženja (slika 9) pa lahko opazimo, da

posebej izstopata točki p2 in p3, ki sta od kroženja, ki je obarvano sivo, preveč oddaljeni.

Slika 9: Primer slabega kroženja po funkciji prilagajanja

Page 53: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 42

5.5.2.2 Interne kumulativne razdalje

Interne kumulativne razdalje so bolj kompleksna funkcija uspešnosti in izpolnjujejo

dva namena: preverjajo preleteno razdaljo med dvema točkama in vrstni red obletelih točk.

Predpostavimo še nekaj: lahko predvidevamo, kako dolga bo pot med dvema

točkama v kroženju. Povprečno vrednost razdalj med diskretnim naborom vhodnih točk,

pomnožimo s faktorjem, ki ga določimo sami, da dobimo predvideno dolžino poti. Iz

testiranj se izkaže, da dovolj dobro deluje faktor ��, vendar je izbira prepuščena nam samim,

uporaba konstante π pa je tu zgolj naključna. S tem dobimo predvideno dolžino poti davg.

Ko torej vemo, kako dolgo lahko opazujemo posamezno vhodno točko pri

generiranem kroženju, pričnemo meriti razdalje. Vsakič, ko se z generiranim kroženjem

približamo kateri izmed vhodnih točk, preverimo, ali je razdalja do nje minimalna. Do tu je

postopek isti kot pri funkciji prilagajanja, vendar v tem primeru ne shranimo samo

minimalne razdalje do vhodne točke, temveč tudi doslej izmerjeno razdaljo, ki smo jo

opravili ob kroženju. Razdalje se tako predstavijo kot kumulativni seštevek. To predstavlja

prednost predvsem pri vrstnem redu obletelih točk, saj mora takšen kumulativni seštevek

biti po velikosti urejen seznam. Če se izkaže, da ni urejen po velikosti, pomeni, da je

kroženje napačno in se ne prilagaja vhodnim točkam.

Imejmo vhodni diskretni nabor m točk p. Pri točki p0 bo kumulativna razdalja 0, saj

s kroženjem še nismo opravili nobene poti. Pri točki p1 se bo shranila razdalja d1, za katero

si želimo, da bo absolutna razlika od davg čim manjša. Čim dobimo večje odstopanje, lahko

predvidevamo, da imamo opravka s slabim vzorcem. Pri točki p2 se bo shranila razdalja d2,

za katero velja, da je večja od d1 oziroma gre dejansko za razdaljo od točke p0. V

splošnem lahko zapišemo:

QH� − H�R� − HS PQ < U, H� > H�R�∀G ∈ [1, F] Vsaka naslednja razdalja je večja od prejšnje in absolutna razlika med sosednjima

dvema in povprečno predvidevano razdaljo naj bo za dobre vzorce manjša od ℰ, ki nam

predstavlja pragovno vrednost. Le-te dejansko ne potrebujemo, temveč nam služi samo kot

vodilo. Ko namreč obravnavamo vse vhodne točke in zapišemo vse kumulativne razdalje,

izračunamo varianco preletenih razdalj. Ker imamo razdalje zapisane v kumulativni obliki,

jih moramo najprej pretvoriti v relativne. Za poljubno razdaljo di bomo izračunali:

Page 54: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 43

H� = H� − H�R�

To storimo za vse razdalje. Če nismo obravnavali vseh točk v pravilnem vrstnem

redu, bomo dobili tudi negativne razdalje, kar bo ravno tako pokazatelj, da vzorec ni

primeren. Ko pretvorimo vse razdalje, izračunamo mero razpršenosti razdalj s pomočjo

variance \�:

\� = 0(H� − HS P)M�=>

Vrednost variance je tudi rezultat vrednotenja vzorca po funkciji internih

kumulativnih razdalj. Manjša kot je varianca, bolj enakomerne so razdalje med točkami,

večja je verjetnost, da je generirani vzorec dober. Hkrati zagotovimo, da smo točke

ovrednotili v pravem vrstnem redu, saj bi bila sicer varianca bistveno večja. To se zgodi

pogosto (slika 10), zato tega ne smemo zanemariti:

Slika 10: Primer generiranega kroženja z napačnim vrstnim redom

S sivo obarvano generirano kroženje sledi vhodnim točkam po naslednjem vrstnem

redu: p1, p3, p2, p3, p4, p5, p6. Že pri točki p3 naletimo na problem, saj jo obletimo pred

točko p2, kar se pokaže pri negativni razdalji d3 in posledično visoki varianci.

Page 55: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 44

5.5.2.3 Vrstni red točk

Ta funkcija je najenostavnejša. Vzdržuje se samo vrstni red prvič obletelih točk.

Ker je matematično malo verjetno, da bomo zadeli točne koordinate vhodnih točk, je

potrebno definirati prag oziroma krog okoli vhodne točke, za katerega velja, da stoji za

točko samo. To pomeni, da lahko kroženje preleti prag in bo za nas veljalo, kakor da je

preletelo točko samo. Ta funkcija nam ob napačnem vrstnem redu preletenih točk zagotovo

pove, da je kromosom neveljaven. Služi nam lahko pri začetnem filtriranju kromosomov,

kjer izloči vse vzorce z napačnim vrstnim redom, vendar nam lahko v genetskih algoritmih

včasih tudi slabe rešitve na dolgi rok pomagajo k boljšemu izidu, zato nam je ta funkcija

zgolj v oporo.

5.5.3 Genetski operatorji

Definirali smo kromosom in ga ovrednotili. Sedaj ga želimo spreminjati. Kot

rečeno, so temeljni genetski operatorji selekcija, križanje in mutacija. Poglejmo si na

našem konkretnem primeru, kako bomo definirali omenjene operatorje.

5.5.3.1 Selekcija

Selekcija je operator, ki je temelj genetskega algoritma. Določa, kdo preživi in kdo

ne, ali drugače povedano, definira novo generacijo kromosomov.

Poznamo več vrst selekcije. Najbolj temeljna je zagotovo proporcionalna

selekcija, pri kateri imajo najboljše možnosti preživetja tisti kromosomi, ki so ocenjeni

najbolje. To je lahko problematično, če se rešitve kaj hitro zatečejo v lokalni optimum. To

se zgodi v primeru, ko imamo v populaciji kromosom, ki je daleč najuspešnejši in ne vodi

h globalnemu optimumu. V tem primeru bo kaj hitro prevladal v celotni populaciji in našli

bomo samo lokalni optimum. Slabosti tega se izognemo z uporabo drugih vrst selekcij

(turnirske selekcije in selekcije z rangiranjem) [Mernik, 2003]. Druga možnost je, da

nevarnosti lokalnih optimumov upoštevamo ob inicializaciji začetne populacije, kjer ne

smemo predložiti lokalnega optimuma kot ene izmed rešitev.

Page 56: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 45

V našem primeru pa ta nevarnost ni zelo visoka, saj lokalnih optimumov ni veliko.

Mi iščemo končne rešitve, ki so pravilne ali pa ne. Zato nam je ravno v interesu, da

podamo približek ali oceno globalnega optimuma v začetno populacijo – to pa je potrebno

poprej izračunati. Le-to si bomo pogledali v nadaljevanju, za sedaj pa definirajmo

proporcionalno selekcijo. Ta je za nas sprejemljiva, četudi ne moremo povsem ovreči

obstoja lokalnih optimumov. Brez dobrega začetnega približka bi kromosomi divergirali k

napačnim rešitvam, zato ostajamo pri tej izbiri.

5.5.3.2 Križanje

Križanje je operator, pri katerem vzamemo dva kromosoma, združimo njune

karakteristike in na ta način dobimo nov kromosom ali kromosoma. Ta operator je zelo

učinkovit pri dolgih sestavljenih rešitvah, vendar pri našem kompaktnem kromosomu ne

pride v poštev. Križanju se bomo zato v celoti izognili in ga omenjamo zgolj zaradi

celovitosti opisovanja genetskega algoritma.

5.5.3.3 Mutacija

Za nas najbolj aktualen genetski operator je zagotovo mutacija. Ob njej se

spreminjajo oziroma tako rekoč mutirajo lastnosti kromosoma, prav tu pa se kaže moč

naključja, saj se ravno tu (in poprej že tudi v inicializaciji) uporabljajo naključne vrednosti.

Pri mutaciji torej vzamemo karakteristiko kromosoma in jo spremenimo. To lahko

naredimo popolnoma naključno, vendar bi s tem iskali slepe rešitve, zato je ustaljena

praksa, da karakteristiko malenkostno spremenimo tako, da v poprej določenem tako

imenovanem varnem obsegu generiramo naključno vrednost, ki se tej karakteristiki

naposled tudi doda.

V našem primeru bo za nas aktualnih 6 različnih tipov mutacij:

• pomik centra kroženja v smeri vetra,

• pomik centra kroženja pravokotno na veter,

• sprememba polmera kroženja,

• sprememba kotne hitrosti,

Page 57: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 46

• sprememba vetrovne moči in

• sprememba vetrovnega faktorja.

Pomikanje centra pomeni translacija celotne vijačnice v smeri pomika. To je

smiselno v mladih generacijah, ki še niso konvergirale v optimume in jih lahko

vzpodbudimo s tovrstnim operatorjem. Sprememba polmera kroženja povzroči, da se

kroženje zoža ali razširi, kar pa je aktualno pri skorajšnjih optimumih, ko nam manjka še

čisto malo do rešitve. Sprememba kotne hitrosti je smiselna kakor poprej rečeno prav tako

v začetnih fazah, kot tudi vetrovne modifikacije. Četudi slednje niso nujno del kroženja

temveč predstavljajo eksterni vpliv, jih vseeno vključimo v genetski algoritem, ker lahko

tako na njih tudi vplivamo.

5.5.4 Inicializacija

Veliko smo o inicializaciji povedali že v tem poglavju, največkrat pa je bila omenjena v

povezavi z nevarnostmi optimumov in pomembnosti izhodiščne točke. Ne moremo

popolnoma ovreči nevarnosti lokalnih optimumov. To lahko omilimo z ustrezno definicijo

evalvacijske funkcije, še bolj pomembno pa je, da zastavimo kazensko funkcijo, ki takšne

nevarnosti eliminira.

Cilj je torej generirati populacijo kromosomov, ki bo že iz starta čim bolj posnemala

kroženje, predstavljeno z vhodnim naborom točk. Torej moramo definirati začetni

približek centra kroženja, polmer in ostale karakteristike, ki pa so za kasnejše procesiranje

manj kritične. Kako se lotimo tega?

Sprva moramo definirati smer vetra. Čeprav bi lahko dobili informacije o tem iz druge

roke, se raje zanesemo na lastne podatke in skušamo smer izračunati sami. Pri tem si bomo

pomagali z metodo minimalnega obsegajočega pravokotnika. Kot vemo, je kroženje

konstantno in ga dejansko premika zgolj komponenta vetra. Če torej narišemo okoli vseh

vhodnih točk najmanjši možen pravokotnik, ki zaobjame vse vhodne točke, nam smer

daljše stranice pomeni smer vektorja vetra.

Page 58: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 47

Slika 11: Definiranje smeri vektorja vetra

Oranžen pravokotnik (slika 11) opisuje minimalni obsegajoč pravokotnik nad

vhodnim naborom točk. V naslednjem koraku moramo določiti center kroženja in polmer.

Slednjega lahko aproksimiramo s polovično vrednostjo (slika 11) krajše stranice

minimalnega obsegajočega pravokotnika (d2), s tem pa tudi že definiramo center kroženja.

Obstaja pa tudi druga metoda, s katero lahko določimo center krožnice in polmer.

Projeciramo vhodne točke na premico (slika 12), pravokotno na smer gibanja oziroma

vetra. Povprečna vrednost projekcijskih točk (če predpostavimo, da imamo samo še eno-

dimenzionalno vrednost) oziroma težišče nam že pove približek centra kroženja in se po

navadi popolnoma sklada s centrom, definiranim s polovičnimi stranicami obsegajočega

pravokotnika.

Page 59: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 48

Slika 12: Definiranje centra krožnice s projekcijo vhodnih točk na premico, pravokotno na smer gibanja

Določili smo center kroženja glede na pravokotno smer vetra. Kako pa zdaj

določimo lokacijo centra glede na smer vetra? Pri tem si pomagamo z enostavnimi

minimizacijskimi metodami, saj lahko kromosom (tako lahko naše generirane podatke že

poimenujemo, saj jih imamo dovolj) preprosto ovrednotimo. Tako dobimo preprosto

funkcijo z enim parametrom, ki predstavlja odmik centra v smeri vetra, rezultat funkcije pa

je enak rezultatu funkcije uspešnosti. Pri minimizaciji uporabimo Brentovo optimizacijsko

metodo, ki jo bomo podrobneje opisali v nadaljevanju. Dobljeno vrednost z naključnimi

manjšimi odstopanji podamo z inicializacijskim kromosomom.

Ostale parametre inicializiramo po želji, vendar je priporočljivo, da si zastavimo za

vsak parameter osnovne vrednosti, ki služijo kot izhodišče za nadaljnje iskanje.

5.5.5 Metoda minimalnega obsegajočega pravokotnika

Uporabili smo metodo minimalnega obsegajočega pravokotnika (minimum

bounding rectangle ali MBR). Za to potrebujemo nabor vhodnih točk, ki nam predstavlja

kar naš let, ki ga hočemo rekonstruirati. Seveda je aktualen samo tisti predel točk, ki

predstavlja kroženje in iz katerega želimo izračunati smer vetra.

Page 60: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 49

Načinov izračunanja MBR je več. Mi se bomo oprli na metodo z rotirajočimi premicami

oziroma t.i. kalipri (slika 10). Le-ta se zelo pogosto uporablja za eficientne algoritme za

reševanje problemov v geometriji. V našem primeru se bomo oprli na sledeči izrek:

• MBR ima vsaj eno stranico kolinearno z enem od robov konveksne lupine nabora

točk. [Toussaint, 1983]

Algoritem konstruira pravokotnik v času O(n) za vsako stranico konveksne lupine

nabora vhodnih točk in izbere najmanjšega od le-teh v času O(n2). Ta problem lahko

rešimo v času O(n) z uporabo dveh parov kaliprov, ki sta pravokotna eden na drugega.

Slika 13: Prikaz rotirajočih kaliprov za izračun minimalnega obsegajočega pravokotnika

V prvem koraku izračunamo konveksno lupino nabora vhodnih točk. Na sliki 13

lahko vidimo konveksno lupino in štiri rotirajoče kalipre. Dejansko imamo vedno štiri

kalipre pi, pj, pk in pl. Kalipri niso nič drugega kot štiri usmerjene premice, ki imajo po

vsaka dve pravokotnici in eno vzporednico. Tako ima pi za vzporednico pk ter za obe

Page 61: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 50

pravokotnici pj in pl. Presečišča kaliprov ali premic nam definirajo pravokotnik, ki ga

iščemo.

Spomnimo se, da mora imeti MBR vsaj eno stranico vzporedno z robom konveksne

lupine. Zato rotiramo kalipre tako, da bo vsaj eden vzporeden z omenjenim robom. Imamo

kote θi, θj, θk in θl. To so koti med usmerjenim kaliprom in naslednjim robom konveksne

lupine. Izberemo vedno najmanjšega izmed vseh kotov ( min { θθθθi, θθθθj, θθθθk, θθθθl } ) in vse

kalipre za ta kot zarotiramo. S tem dosežemo, da ima dobljeni pravokotnik vsaj eno

stranico kolinearno s konveksno lupino.

Za dobljeni pravokotnik izračunamo ploščino in si jo zapomnimo. Ponovimo

postopek in rotiramo tako dolgo, dokler ne naredimo 90 stopinjski obrat. S tem smo že

zaobjeli vse možne pravokotnike, tisti z najmanjšo ploščino pa predstavlja rezultat

algoritma.

Poglejmo si opisan algoritem podrobneje. Za vhod moramo predvidevati, da imamo

konveksno lupino vhodnega nabora točk. Izračunamo vse štiri ekstremne točke za poligon

in jih imenujmo xminP, xmaxP, yminP in ymaxP. Konstruiramo štiri premice P1, P2, P3 in

P4 za vse štiri ekstremne točke. Te premice definirajo dva para kaliprov.

Če ena ali več premic leži vzporedno z robom poligona, potem lahko izračunamo

ploščino pravokotnika, ki ga določajo presečišča vseh štirih premic. To vrednost shranimo

kot aktualni minimum. Sicer lahko tretiramo, da je trenutna minimalna ploščina aktualne

rotacije neskončna.

Rotiramo premice v smeri urinega kazalca tako dolgo, dokler ena izmed njih ni

vzporedna s kakšnim robom poligona, ki ga določa konveksna lupina vhodnega nabora

točk. Izračunamo ploščino novega pravokotnika sekajočih premic in jo primerjamo s staro

vrednostjo minimalne ploščine. Posodobimo to vrednost, če je to potrebno, in ponavljamo

rotacijo tako dolgo, dokler ne dosežemo obrat 90°. Končni rezultat je shranjena vrednost

minimalne ploščine.

Za izračun minimalnega obsegajočega pravokotnika uporabimo obstoječo rešitev

[http://softsurfer.com/Archive/algorithm_0112/algorithm_0112.htm].

Page 62: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 51

5.5.6 Konveksna lupina

Kot smo že poprej omenili, potrebujemo konveksno lupino (slika 14) kot vhodni

podatek za izračun MBR s pomočjo rotirajočih kaliprov. Konveksna lupina pa je

minimalno število točk, ki lahko opiše množico točk tako, da zaobjame vse točke.

Slika 14: Primer konveksne lupine

Kot vidimo na sliki, so robne točke tiste, ki definirajo celotni lik, ki ga množica naredi.

Ravno tako so vse točke zaobjete v tem liku, kar je pogoj konveksne lupine. Algoritem je

sestavljen po sledečem principu.

• Vhodne točke uredimo po vrsti.

o Glede na to, da imamo točko v 2D prostoru, primerjamo dve točki naprej po

komponenti x, nato pa še po komponenti y. Tako je npr. P1(3,2) > P2(2,8) in

P3(2,9) < P4(3,8).

• Točke razdelimo na spodnjo in zgornjo polovico.

o Poprej določimo skrajno levo in skrajno desno točko – to sta kar prva in

zadnja točka v nizu vhodnih točk, saj smo jih že uredili.

o Izračunamo ploščino trikotnika, ki ga definirajo obe skrajni točki P1 in P2

ter opazovana točka Po. To storimo z naslednjo formulo:

S = x1 (y2 – yo) + x2 (yo – y2) + xo (y1 – y2)

o Rezultat tega izračuna je predznačena ploščina S. Če je pozitivna, je

opazovana točka v zgornji polovici, sicer pa v spodnji.

Page 63: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 52

• Za vsako polovico sprožimo Grahamovo skeniranje in eliminiramo točke, ki niso

na lupini.

o Lahko predpostavimo, da je prava orientacija (sosledje) točk negativna

oziroma poteka v smeri urinega kazalca. Tako moramo, če sledimo točkam,

vedno delati tako imenovane desne zasuke. Zato računamo ploščino

trikotnika treh aktualnih sosednjih točk. Če je negativna, pomeni, da smo

naredili desni zasuk – srednja točka je zagotovo na lupini. Če pa je ploščina

pozitivna, smo naredili levi zasuk ali pa se gibljemo naravnost – v tem

primeru srednjo točko izvzamemo iz rešitve, saj zagotovo ni na lupini.

• Obe lupini združimo in vrnemo rezultat.

Za implementacijo konveksne lupine smo uporabili obstoječo kodo. [Peter Sestoft,

2001]

5.5.7 Brentova metoda

Pri inicializaciji smo omenili minimizacijske metode in se pri tem oprli na Brentovo

optimizacijo. Predvsem v numerični analizi je Brentova metoda popularna za iskanje

funkcijskih rešitev, saj združuje tako bisekcijsko kot tudi sekantno metodo ter inverzno

kvadratno interpolacijo. Ima zanesljivost bisekcije, a se približa hitrostim manj zanesljivih

metod. Osnovna ideja je uporaba sekantne metode ali inverzne kvadratne interpolacije, če

je to le mogoče, saj rešitve konvergirajo hitreje, v težjih primerih pa se uporabi bolj

robustna bisekcija.

Brentova metoda iskanja funkcijskih rešitev, ničel oziroma korenov je še ena v nizu

metod, ki za dano funkcijo f najde takšen x, da velja:

f(x) = 0

Spomnimo se sekantne metode. Definirati moramo prvi dve vrednosti b0 in b1, da

lahko poženemo metodo. Naslednja vrednost s se generira po sledeči formuli:

I = ]^ − ]^ − ]^R��(]^) − �(]^R�) �(]^)

Page 64: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 53

Ker Brentova metoda vsebuje sekantno metodo, izhajajmo iz te formule. Ob vsaki

iteraciji algoritma se lahko izvrši tudi bisekcijska iskalna metoda. Če je bk trenutna rešitev

metode, je bk-1 rešitev v prejšnji iteraciji. Hkrati vodimo v vsaki iteraciji še spremenljivko

ak, ki ima nasprotno vrednost bk in se jo uporabi pri izračunu bisekcije:

I = ,^ + ]^2

Tretja metoda je inverzna kvadratna interpolacija:

I ≔ S `(a)`(b)(`(S)R `(a))(`(S)R `(b)) + a `(S)`(b)(`(a)R `(S))(`(a)R `(b)) + b `(S) `(a)(`(b)R `(S))(`(b)R `(a))

Brentova metoda je izpeljava starejše Dekkerjeve metode, ki uporablja zgolj sekantno in

bisekcijsko metodo. Dodan je tudi poseben test, ki preveri, ali je sekantna metoda prava

metoda za izračunavo približka v naslednji interaciji. Zadoščena morata biti dva pogoja:

• za določeno pragovno vrednost δ mora, v primeru da je prejšnji korak vseboval

metodo bisekcije, veljati:

| δ | < | bf − bfR�| • če pa je prejšnji korak vseboval interpolacijo, potem mora veljati:

| δ | < | bfR� − bfR�| • Prav tako mora veljati sledeči pogoj, če je v prejšnjem koraku bila uporabljena

bisekcija:

| δ − bf | < 12 | bf − bfR�| • sicer (v primeru interpolacije v prejšnjem koraku) pa velja pogoj:

| δ − bf | < 12 | bfR� − bfR�|

Page 65: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 54

Za lažje razumevanje si poglejmo psevdokod:

• vhod a, b in podprogram za računanje funkcijske vrednosti f • izračunaj f(a) • izračunaj f(b) • if f(a) f(b) >= 0 then izhod end if • if |f(a)| < |f(b)| then swap (a,b) end if • c := a • set mflag • repeat until f(b or s) = 0 or |b − a| < prag

o if f(a) ≠ f(c) and f(b) ≠ f(c) then � I ≔ S `(a)`(b)(`(S)R `(a))(`(S)R `(b)) + a `(S)`(b)(`(a)R `(S))(`(a)R `(b)) + b `(S) `(a)(`(b)R `(S))(`(b)R `(a))

o else

� I ∶= ] − �(]) aRS `(a)R `(S) o end if o if s ni v intervalu (3a + b)/4 in b

or (mflag = 1 and |s−b| ≥ |b−c| / 2) or (mflag = 0 and |s−b| ≥ |c−d| / 2) or (mflag = 1 and |b−c| < |δ|) or (mflag = 0 and |c−d| < |δ|) then

� I ∶= Sha�

� mflag = 1 o else

� mflag = 0 o end if o izračunaj f(s) o d := c o c := b o if f(a) f(s) < 0 then b := s else a := s end if o if |f(a)| < |f(b)| then swap (a,b) end if

• end repeat • output b or s

Programska koda 5: Psevdokod Brentove metode

Imamo torej vhodna približka a0 in b0 (programska koda 5). Za ta dva približka

izračunamo funkcijske vrednosti f(a0) in f(b0), a0 in b0 pa moramo izbrati tako, da bosta

funkcijski vrednosti nasprotnega predznaka. S tem zagotovimo, da je rešitev v intervalu

[a0, b0].

Ko vstopimo v zanko, v prvem koraku vedno uporabimo linearno interpolacijo. Če

dobljeni koren ni v intervalu [3a0 + aij , b0] ali pa je izpolnjen eden izmed dveh poprej

Page 66: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 55

definiranih pogojev, koren ni sprejet in ga moramo v aktualnem koraku poiskati z

bisekcijo. Za poiskan koren izračunamo še funkcijsko vrednost in preverimo, če nam ta

vrednost že zadošča. Sicer nadaljujemo, dokler ne dosežemo praga, kjer je rešitev za nas že

sprejemljiva.

Tudi pri implementaciji Brentove metode smo se oprli na obstoječo rešitev.

[http://www.rnfc.org/rhapsody/math/OPTIM_UNIVAR_MIN_MAX_LIBR.bas]

5.5.8 Generiranje kroženja

Kromosom, ki predstavlja naše kroženje, trenutno sestoji zgolj iz parametrov.

Zaradi težjih matematičnih konstruktov vse operacije s kroženjem (izračun razdalj in

podobno) ne bomo naredili po izključno analitični poti, temveč bomo generirali vmesne

točke, ki jih bomo nato interpolirali, da dobimo predstavitev dejanskega kroženja. Naše

kroženje bo tako:

• premočrtna enakomerno potojuča krožnica z relativno enakomerno kotno hitrostjo

o Izraz »relativno« se tu nanaša na celotno populacijo, saj je konta hitrost

skupna samo enem kromosomu in se skozi populacijo praviloma spreminja.

Tukaj faktorja vetra ne upoštevamo.

• premočrtna s sinusoidno se spreminjajočo se hitrostjo potujoča krožnica

o Tukaj pride do izraza faktor vetra, saj je premik centra kroženja v smeri

vetra sinusna funkcija.

V obeh primerih povečujemo vse parametre kromosoma (kot s kotno hitrostjo,

pozicijo centra kroženja s hitrostjo vetra v odvisnosti od vetrovnega faktorja) z diskretnimi

koraki, da dobimo diskreten nabor točk, ki nam predstavlja kroženje. Diskretni koraki so

tako majhni, da je relativna napaka zanemarljiva.

5.5.9 Zagon genetskega algoritma

Definirali smo vse potrebno za zagon genetskega algoritma. Predstavili smo

problem in ga transformirali za uporabo evolucijskih pristopov. Pripravili smo

inicializacijo in s tem začetne približne oziroma predvidevane rešitve, kamor hočemo, da

Page 67: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 56

algoritem konvergira. Definirali smo funkcijo uspešnosti in kazensko funkcijo, pripravili

genetske operatorje. Sedaj sledi zagon algoritma in prilagajanje parametrov, kar je

potencialno dolgotrajen proces. Poglejmo si parametre za zagon:

• število generacij (koliko generacij želimo proizvesti) in

• velikost populacije (koliko kromosomov želimo, da ima ena populacija).

Pred zagonom si poglejmo celoten psevdokod našega genetskega algoritma

(programska koda 6). Najprej moramo izračunati začetni približek. To zahteva izračun

pričakovanega polmera krožnice in kotno hitrost, ki jo bo kroženje imelo. Ta kotna hitrost

je umetni konstrukt in se modificira v samem genetskem algoritmu na tak način, da se

najbolje prilagaja vhodnemu naboru točk. Pričakovani polmer pa dobimo, ko izračunamo

smer vetra. To namreč storimo z iskanjem minimalnega obsegajočega pravokotnika,

katerega daljša stranica je praviloma vzporedna s smerjo vetra. Krajša stranica nam da že

precej dober približek premera kroženja, saj celotno kroženje predstavlja zgolj premik

kroga v smeri vetra, dobljeno sled premika pa opisuje kar minimalni obsegajoči

pravokotnik (slika 9).

Določiti moramo še začetek kroženja, kar pomeni, da moramo hkrati definirati še

smer gibanja krožnice, ki je hkrati smer vetra. Da nam bo lažje, rotiramo koordinatni

sistem tako, da bo smer vetra vzporedna z ordinato (slika 15). Koordinato x začetne točke

dobimo, če vzamemo aritmetično sredino projeciranih vhodnih točk od p0 do pn (slika 15).

Približek koordinate y začetne točke izračunamo z Brentovo metodo iskanja korena enačbe

– za funkcijsko vrednost namreč vzamemo kar evalvacijsko funkcijo genetskega algoritma,

rešitev minimizacije pa bo kar y koordinata. S tem korakom bomo celotno kroženje

premikali v smeri vetra, dokler ne bomo presegli zadovoljivega praga evalvacijske

funkcije.

Page 68: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 57

Slika 15: Rotacija koordinatnega sistema in projekcija točk na absciso

Imamo začetni približek, zato lahko generiramo začetne generacije z minimalnimi

odstopanji. Skladno z genetskim algoritmom (programska koda 4) del vsake generacije

mutiramo s poprej definiranimi genetskimi operatorji. S tem spreminjamo in prilagajamo

kroženje, na koncu pa ovrednotimo rezultat mutacije. Skladno z uspešnostjo posameznih

kromosomov izvršimo še selekcijo, kjer uporabimo elitizem in odstranimo 30 procentov

najslabših kromosomov.

Korake ponavljamo tako dolgo, dokler ne dosežemo zadovoljivega praga

evalvacijske funkcije.

Page 69: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 58

• Računanje začetnega približka 1. Izračunavanje pričakovanega polmera krožnice 2. Izračunavanje pričakovane kotne hitrosti 3. Določitev začetne točke

� Rotacija koordinatnega sistema v smeri vetra (le navidezno za lažjo predstavo računanja)

� Aritmetična sredina v smeri poti za koordinato x � Brentova optimizacijska metoda za določanje začetka poti za

koordinato y • Evolucijsko prilagajanje

1. Generiranje začetnih približkov s pričakovanimi odstopanji 2. Mutacija

� Sprememba polmera � Sprememba kotne hitrosti (velja za +- [smer vrtenja]) � Sprememba začetne točke v smeri potovanja � Sprememba začetne točke v smeri, pravokotno na smer

potovanja 3. Evalvacija

� Seštevek najmanjših oddaljenosti vseh točk do generiranega kroženja

� Kaznovanje odstopanja od pričakovane dolžine kroženja � Vsak posameznik se urejeno uvrsti v seznam trenutne

generacije, da se ohranja urejen po evaluaciji 4. Selekcijski algoritem

� Elitizem – 30 % najslabših primerkov v generaciji odmre 5. Če je evaluacijska vrednost prvega primerka v trenutni generaciji

primerna ali pa smo zaključili maksimalno število ciklov oz. generacij, končamo; sicer se vrnemo na korak 2.

Programska koda 6: Psevdokod rekonstrukcijskega algoritma

5.5.9.1 Testni primeri

Za lažjo implementacijo je bilo smiselno, da smo na začetku za testiranje generirali

lastne vhodne podatke. To je trivialna operacija, saj potrebujemo samo kromosom,

katerega parametre si preprosto izmislimo. Za lažjo predstavitev si generirano kroženje

vizualiziramo. Na sliki lahko vidimo vse parametre, ki jih lahko prilagajamo, prav tako pa

lahko opazimo, da se že avtomatsko generira MBR nad danim naborom točk. Kot lahko

vidimo, se pri smeri vetra nismo zmotili (slika 16), čeprav smo imeli na voljo samo 8 točk.

Smer kaže iz zgornjega levega kota, kjer se kroženje prične, proti spodnjemu desnemu

kotu, kamor letalo nese veter.

Page 70: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 59

Slika 16: Rekonstrukcija - testni primerek

Rekonstrukcijo poženemo s parametri 50 generacij in 75 kromosomi na populacijo.

Za funkcijo uspešnosti podamo minimalno oddaljenost od točk oziroma prilagoditveno

funkcijo, saj so ostale dve funkcijo uporabne samo za kontrolo obstoječe rešitve. Lahko

podamo tudi orientacijo kroženja, vendar smo to zaenkrat zanemarili (generirajo se

kroženja tako v pravo kot tudi v nasprotno smer urinega kazalca). V rezultatu, ki je

prikazan s sivo potjo (slika 17), lahko vidimo, da je kroženje, ki je začelo svojo pot v

zgornjem levem kotu in nadaljevalo v izračunani smeri vetra proti spodnjemu desnemu

kotu, zavzelo prav presenetljivo (a nikakor ne pogosto) vse točke, čeprav je zavzelo ravno

nasprotno smer kroženja, kot bi moralo (testni primerek je imel smer kroženja kakor urin

kazalec, generirani pa ravno nasprotno).

Page 71: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 60

Slika 17: Rekonstrukcija – primer napačne rešitve testnega primerka

Rekonstrukcijo poženemo še enkrat, a tokrat vsilimo smer kroženja. Tokrat je

algoritem našel povsem dobro prilegajočo se rešitev (slika 18), kjer ne potrebujemo

posebnega interpoliranja točk. Moramo tudi vedeti, da so aktualni parametri rekonstrukcije

(50, 75) dokaj blagi v smislu računske zahtevnosti, zato lahko hitro najdbo rezultata

ocenimo kot uspešno.

Slika 18: Rekonstrukcija: primer dobre rešitve testnega primerka

Page 72: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 61

5.5.9.2 Aktualni primeri iz realnega sveta

Ker so v realnem svetu problemi pogostokrat težji od teoretičnih, si poglejmo

primer dejanskega poleta letala, kjer je bil časovni interval kroženja 12 sekund, kar za

vizualizacijo ni posebej ugodno (slika 19). Črne točke predstavljajo diskreten nabor

vhodnih točk oz. znane koordinate, na katerih se je letalo med poletom nahajalo. Z rdečo

barvo je označena interpolacijska krivulja med vhodnimi točkami, a zaradi visokega

časovnega intervala med točkami prikaza bistveno ne izboljša.

Slika 19: Primer realnega kroženja z visokim časovnim intervalom

Rekonstrukcijo poženemo s 100 generacijami in 300 kromosomi. Levi stolpec

(slika 20) nam predstavlja rešen problem za kroženje v nasprotni smeri urinega kazalca,

desni (slika 20) pa pravi smeri. V obeh stolpcih imamo s sivo barvo prikazano generirano

rešitev, z modro barvo pa je na obeh vrhnjih slikah označena interpolacijska krivulja med

vhodnimi točkami – s tem lahko hitro razberemo sosledje točk. Za evalvacijsko funkcijo

uporabimo funkcijo prilagajanja, ki se od vseh izkaže najbolje.

Oba primera pustita odprto interpretacijo o tem, ali je rešitev prava ali ne, saj je ne

poznamo. Preverimo lahko zgolj s sosledjem točk (funkcija vrstnega reda točk), ki je pri

levem napačna, pri desnem pa prava. Lahko tudi izmerimo povprečno razdaljo, ki je bila

preletena med dvema točkama tik pred kroženjem – od razdalje med dvema točkama v

Page 73: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 62

generiranem kroženju lahko odstopa nekaj procentov, sicer lahko sklepamo, da je

generirana pot napačna.

Slika 20: Primer rešitve realnega problema

5.5.10 Pristop »Deli in vladaj«

Ta pristop pride v poštev pri nenadnih sunkih. Včasih se namreč zgodi, da se

navidezni center kroženja zamakne. Takrat naš aktualni algoritem ne pride v poštev, saj gre

dejansko za dve različni kroženji. In če predpostavimo, da se to zgodi enkrat ali večkrat,

moramo naš algoritem ustrezno prirediti.

Tu pride na vrsto princip »deli in vladaj«, kjer naš problem razdeljujemo tako

dolgo, dokler ne naletimo na segment, ki je rešljiv. Rešljivosti pa na žalost ne moremo

preveriti takoj, temveč se moramo problema lotiti. Tako dejansko rešujemo problem samo

tako dolgo, za kolikor smo specificirali časovni prag reševanja. Nato problem razdelimo na

podprobleme. Točko razdelitve lahko določimo z binarnim cepljenjem, lahko pa jo

določimo tam, kjer menimo, da se je sunek dogodil. Vendar je ta metoda cepljenja oziroma

Page 74: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 63

razdelitve zgolj teoretična in jo je še potrebno implementirati. Tako rešujemo več

problemov paralelno, katerim je skupna samo smer vetra, vsi ostali parametri pa lahko

malenkostno odstopajo.

Page 75: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 64

6 Vizualizacija

Podatki o letu so opisani z geografskim koordinatnim sistemom, ki predvideva, da

lahko vsako lokacijo na Zemlji opišemo z naborom koordinat oziroma točk. Da let pravilno

izrišemo, moramo poprej definirati projekcijo, s katero bomo predstavili let.

6.1 Projekcija

Dvodimenzionalno projekcijo sveta lahko konstruiramo v dveh korakih:

• izberemo model, navadno sferoid ali elipsoid, ki aproksimira obliko zemlje in

• transformiramo geografske koordinate v kartezične (x,y).

Točke so navadno opisane z dvema ali tremi parametri za predstavitev horizontalne

komponente in z eno vertikalno komponento.

Najbolj intuitivna predstavitev horizontalne komponente premore dva parametra –

longitudo in latitudo – to pa lahko opišemo v kartezičnem koordinatnem sistemu kot točko

(x, y) oziroma (x,y,z), v kolikor upoštevamo višino. Pogoste pa so tudi horizontalne

predstavitve s tremi parametri, bolj znane pod imenom n-vektorji. Gre za tri-parametrično

nesingularno horizontalno pozicijsko predstavitev, ki se uporablja predvsem pri

matematičnih kalkulacijah in računalniških algoritmih. Geometrično gledano nam je

opisana točka enotski vektor, ki je pravokoten na referenčni elipsoid.

Referenčni elipsoid je matematično definirano površje, ki aproksimira geoid

oziroma druga geometrična telesa, ki se uporabljajo za predstavitev oblike Zemlje. Ker so

ti elipsoidi po navadi precej poenostavljeni in za kompleksno matematično ali algoritmično

rabo niso zahtevni, se zato pogosto uporabljajo pri geodetskih izračunih [Snyder, 1995].

Ker je horizontalni vektor, sestavljen iz treh komponent, normaliziran, je postavljen

v statični koordinatni sistem, ki je centriran okoli samega centra Zemlje. Velja za vsakršno

pozicijo na Zemlji in je matematično ekvivalenten dvokomponentnemu horizontalnemu

vektorju. Pri takšnem prikazu moramo predpostaviti, da je naš referenčni lik striktno

konveksen.

Page 76: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 65

Poglejmo si komponente vektorja, izražene z bolj intuitivnim dvokomponentnim

prikazom:

�� = kcos(-,.G.lH,) cos (-m�JG.lH,)cos(-,.G.lH,) sin(-m�JG.lH,)sin (-,.G.lH,) n

Pretvorba trikomponentnega vektorja v dvokomponentni vektor:

-m�JG.lH, = ,.,�2(��o , �p�)

-,.G.lH, = asin(�q�) = ,.,�2(�q� , N(�p�)� + (��� )�)

V naših izračunih bomo redko uporabljali tovrsten prikaz, a je za hitrost realno-

časovnih izračunov takšna predstavitev koordinat vseeno bolj primerna in jo je potrebno

ohraniti za prihodnjo implementacijo algoritmov za analizo podatkov.

Poglejmo si za nas bolj pomembni dvokomponentni horizontalni vektor, ki definira

ekliptični koordinatni sistem. Prva komponenta, latituda, predstavlja kot med ekvatorsko

ravnino in premico, ki je pravokotna na referenčni elipsoid. Meri se po krogu, ki gre skozi

severni in južni pol ekliptike. Latituda lahko zavzame vrednosti samo v mejah -90° do

vključno 90° (slika 21), v kolikor za predstavitev vrednosti uporabljamo decimalne

stopinje. Nabori točk, ki imajo enake latitude, se imenujejo paralele ali vzporedniki in

tvorijo koncentrične kroge na površju Zemlje, vzporedno z ekvatorjem.

Slika 21: Projekcija sveta

Page 77: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 66

Druga komponenta, longituda, predstavlja kot med referenčnim poldnevnikom

(sčasoma je to po mednarodni potrditvi postal Greenwich) in tistim poldnevnikom, ki gre

skozi opazovano točko. Poldnevniki tvorijo t.i. velike kroge in za razliko od paralel niso

vzporedni, temveč konvergirajo v severnem in južnem polu. Longitude lahko zavzamejo

vrednosti med vključno 0 in izključno 180°.

Pri mejah smo v obeh primerih uporabili decimalne stopinje. Te izražajo longitude

in latitude v decimalnih frakcijah, uporabljajo pa se v večini geografskih informacijskih

sistemih, internetnih kartografskih ponudnikov (med drugim tudi Google Maps) in GPS

napravah. Tipična predstavitev točke bi tako bila {46.558961, 15.641258}, kjer prva

komponenta (latituda) opisuje zemljepisno širino 46° 33' 32.259" (46 stopinj, 33 minut in

32.259 sekund) in zemljepisno dolžino 15° 38' 28.5288".

Zaradi pogoste uporabe kotnih funkcij bo za nas zanimiv tretji prikaz v radianih, pri

čemer je en radian razmerje med dolžino kotnega loka in polmerom. Opisano koordinato v

decimalnih stopinjah pomnožimo s posebno konstantno r�s>, ki po množenju znaša {

0.812607, 0.272991 } in opisuje lokacijo Fakultete za elektrotehniko, računalništvo in

informatiko.

Z opisom v radianih ugotovimo, da absolutne vrednosti koordinat ne bodo nikoli

presegale π za longitude oziroma r� za latitude, pri čemer moramo obvezno za opis

koordinat vzeti tip s pomično vejico in dvojno natančnostjo.

6.2 Transformacija

Imamo podatke o letu v radianih. Da jih izrišemo na zaslon, moramo narediti

transformacijo koordinat. Za prikaz želimo porabiti celoten zaslon, s tem tudi robove, zato

bo transformacija cilindrična. Oprli se bomo na znano Mercatorjevo projekcijo (slika 22),

ki je najbolj uporabna za računalniški prikaz podatkov.

Predpostavimo, da poznamo dimenzije prikazovalnega zaslona, kamor želimo

projecirati podatke. Določiti moramo posebne faktorje kx, ky, nx in ny, da bomo lahko

zapisali:

" = tm�JG.lH, ∗ !u + �p

Page 78: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 67

= t,.G.lH, ∗ !� + ��,

pri čemer x in y predstavljata pozicijo piksla na zaslonu, Longituda in Latituda pa zapis

točke leta v času.

Slika 22: Primer Mercatorjeve projekcije

Pri Mercatorjevi projekciji lahko hitro ugotovimo, da je transformacija longitude

linearna, saj so odmiki posameznih poldnevnikov konstantni. Drugače pa je pri

vzporednikih, ki se spreminjajo sinusno glede na pozicijo v svetu. Če definiramo širino

zaslona kot w in višino zaslona kot h, lahko transformacijske faktorje zapišemo na sledeč

način:

!� = v��, !p = − cos(t,.G.lH,) !�

�� = ℎ2 − !� t,.G.lH,, �p = C2 − !p tm�JG.lH,

S temi enačbami lahko izvršimo transformacijo, ki je potrebna, da lahko let

izrišemo na zaslon.

Page 79: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 68

6.3 Izris

Izris (slika 23) je posledica sledečih procesov:

• interpretiranje podatkov iz IGC datoteke,

• rekonstrukcija podatkov in

• transformacija na zaslon.

Slika 23: Vizualizacija leta

Dobimo lepo interpolirano pot letala, kakršna bi naj bila v realnosti. Ker je predmet

diplomske naloge rekonstrukcija in vizualizacija poleta, se ozadja nismo posebej dotikali,

zato je slika na prvi pogled zelo pusta. Vendar smo se obrobno dotaknili vektorskih

podatkov, ki nam predstavljajo površje zemlje (višinske konture, reke, ceste, železnice in

podobno). Definirali smo vse konstrukte, da tovrstne vektorske podatke prikažemo na

zaslon na isti način, kakor smo to naredili z letom. S tem vizualizacija dobi dodatne

razsežnosti, saj si lahko let bistveno bolje predstavljamo.

Let Janeza Novaka (programska koda 3) smo uspešno predstavili na zaslonu (slika

19). Odpravili smo vse anomalije, saj je krivulja leta prikazana zvezno in brez posebnih

zamikov, ki bi bili posledica napak zapisovalnika GPS.

Page 80: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 69

7 Sklep

Rezultati rekonstrukcije so delno uspešni, saj ne dobimo vedno nedvoumne rešitve.

To je delno posledica genetskega algoritma, ki skoraj nikoli ne daje enakih rezultatov za

enake probleme, saj je osnovan na generatorju naključnih števil.

Če pregledamo rekonstrukcijo v celoti, lahko ugotovimo, da ugodno reši testne

primerke, ki smo jih generirali sami. Pri primerkih iz realnega sveta se algoritem ne obnese

najbolje, saj ga moramo upravljati ročno in še to ne zagotovi končne ugodne rešitve.

Pristop »Deli in vladaj« je smiseln in ponuja obetavno pot do rešitve, pri čemer je potrebno

poprej razdeljevalno metodo ustrezno implementirati.

Izboljšave so možne tudi pri ostalih specificiranih algoritmih, ki na določenih

odsekih niso popolnoma optimizirani, saj je omenjeni projekt še vedno v razvojni fazi, tako

da tovrsten nivo optimizacije še ni bil potreben. Če zanemarimo problem kroženja, smo

rekonstrukcijo leta izvedli v celoti.

Z interpretacijo vhodnih podatkov nismo imeli večjih težav, vendar smo morali v

sklopu rekonstrukcije vseeno zagotoviti odpravo anomalij in podobnih težav, povezanih z

zapisovalniki GPS. Vizualizacija je zahtevala definicijo projekcije, v prihodnje pa bo

nadgradnja zunaj te diplomske naloge zagotovo implementacija prikaza vektorskih

podatkov s površja Zemlje.

Page 81: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 70

8 Priloge

8.1 Viri

N. Bornstein, E. Dumbill, Mono: A Developer's Notebook, O'Reilly, 2004.

FAI, Technical specification for IGC-approved GNSS flight recorders, 2008.

M. Mernik, Evolucijski algoritmi, Fakulteta za elektrotehniko, računalništvo in

informatiko, Maribor, 2003.

J. Snyder, Map Projections: a reference manual, Boston University, Massachusetts, 1995.

G. Toussaint, Solving Problems with the Rotating Calipers, School of Computer Science,

McGill University, Montreal, 1983.

A. Troelsen, Pro C# 2008 and the .NET 3.5 Platform, 4th Edition, Berkley, 2007.

Page 82: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev 71

Življenjepis

Ime in priimek: Simon Irmančnik

Rojen: 4. marca 1984 v Celju

Osnovna šola: 1991-1999 OŠ Braslovče

Srednja šola: 1999-2003 Šolski center Celje, Splošna in

strokovna gimnazija Lava

Fakulteta: 2003- Fakulteta za elektrotehniko,

računalništvo in informatiko,

Univerza v Mariboru,

univerzitetni program

Računalništvo in informatika,

smer Programska oprema

Fakulteta: 2008-2009 Fakulteta za strojništvo,

Tehniška Univerza v

Münchnu, izmenjava in

priprava na diplomsko nalogo

Page 83: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev

a in vizualizacija poletov letal in jadralcev

72

Page 84: REKONSTRUKCIJA IN VIZUALIZACIJA POLETOV · PDF fileuniverza v mariboru fakulteta za elektrotehniko, ra ČunalniŠtvo in informatiko simon irman čnik rekonstrukcija in vizualizacija

Rekonstrukcija in vizualizacija poletov letal in jadralcev

a in vizualizacija poletov letal in jadralcev 73