Realių lėktuvų skrydžių atvaizdavimas pagal turimus radaro duomenis

Panašūs dokumentai
Java esminės klasės, 1 dalis Išimtys, Įvestis/išvestis

Slide 1

Microsoft Word - 15_paskaita.doc

* # * # # 1 TIESĖS IR PLOKŠTUMOS 1 1 Tiesės ir plokštumos 1.1 Lygtys ir taškų aibės Sferos lygtis Tarkime, kad erdvėje apibrėžta Dekarto stačiak

Masyvas su C++ Užduotys. Išsiaiškinkite kodą (jei reikia pataisykite) ir paleiskite per programą. Ciklo skaitliuko įrašymas į vienmatį masyvą: #includ

P. Kasparaitis. Praktinė informatika. Skriptų vykdymas ir duomenų valdymas Skriptų vykdymas ir duomenų valdymas Įvadas Skripto failas tai M

PowerPoint Presentation

Microsoft PowerPoint - IOSrautai.ppt

4 skyrius Algoritmai grafuose 4.1. Grafų teorijos uždaviniai Grafai Tegul turime viršūnių aibę V = { v 1,v 2,...,v N } (angl. vertex) ir briaun

(Microsoft Word - Pasiruo\360imas EE 10 KD-1)

DB sukūrimas ir užpildymas duomenimis

Microsoft Word - 8 Laboratorinis darbas.doc

10 Pratybos Oleg Lukašonok 1

Slide 1

STATYTOJAS A. Zakaro firma IĮ STATINIO PROJEKTO PAVADINIMAS Inţinerinių statinių Klaipėdos m., Minijos g. 44 B rekonstravimo ir statybos projektas STA

Longse Wi-Fi kameros greito paleidimo instrukcija 1. Jums prireiks 1.1. Longse Wi-Fi kameros 1.2. Vaizdo stebėjimo kameros maitinimo šaltinio 1.3. UTP

Pagrindiniai algoritmai dirbant su sveikųjų ir realiųjų skaičių masyvų reikšmėmis Sumos skaičiavimo algoritmas Sveikieji skaičiai int Suma (int X[], i

Mokinių tiriamojo darbo įgūdžių formavimas

Dažniausios IT VBE klaidos

VERSLO IR VADYBOS TECHNOLOGIJŲ PROGRAMA

Projektas LIETUVOS RESPUBLIKOS RYŠIŲ REGULIAVIMO TARNYBOS DIREKTORIUS ĮSAKYMAS DĖL RADIJO RYŠIO PLĖTROS MHz RADIJO DAŽNIŲ JUOSTOJE PLANO PAT

Teorinių kontrolinių sąlygos ir sprendimai Vytautas Kazakevičius 2016 m. gruodžio 20 d. Teiginiai ( ). 1. (0.05 t.) Užrašykite formule tokį t

LIETUVOS JAUNŲJŲ MATEMATIKŲ MOKYKLA 7. PAPRASČIAUSIOS DIFERENCIALINĖS LYGTYS ( ) Teorinę medžiagą parengė ir septintąją užduotį sudarė prof. d

PATVIRTINTA Valstybinės kainų ir energetikos kontrolės komisijos pirmininko 2017 m. d. įsakymu Nr. O1- VALSTYBINĖS KAINŲ IR ENERGETIKOS KONTROLĖS KOMI

Duomenų vizualizavimas

Slide 1

BALSO SKAMBUČIŲ UŽBAIGIMO JUDRIOJO RYŠIO TINKLE SĄNAUDŲ APSKAIČIAVIMO PAAIŠKINIMAS IR SKAMBUČIŲ INICIJAVIMO SĄNAUDŲ SKAIČIAVIMO PRINCIPŲ PAAIŠKINIMAS

Algoritmø analizës specialieji skyriai

PowerPoint Presentation

Algoritmai ir duomenų struktūros (ADS) 7 paskaita Saulius Ragaišis, VU MIF

Printing triistr.wxmx

G E O M E T R I J A Gediminas STEPANAUSKAS Turinys 1 TIES ES IR PLOK TUMOS Plok²tumos ir tieses plok²tumoje normalines lygtys

Slide 1

NACIONALINIS KIBERNETINIO SAUGUMO CENTRAS Tel El. p. NACIONALINIS KIBERNETINIO SAUGUMO CENTRAS PRIE KRAŠTO APSA

9 paskaita 9.1 Erdvės su skaliarine daugyba Šiame skyriuje nagrinėsime abstrakčias tiesines erdves, kurioms apibrėžta skaliarinė daugyba. Jos sudaro l

Slide 1

EUROPOS KOMISIJA Briuselis, COM(2019) 122 final ANNEX 2 PRIEDAS prie Pasiūlymo dėl TARYBOS SPRENDIMO dėl pozicijos, kurios Europos Sąjunga

Projektą vykdančiojo personalo darbo užmokesčio ir savanoriško darbo įnašo fiksuotojo įkainio nustatymo tyrimo ataskaita 2016 m. birželio 8 d. redakci

EUROPOS KOMISIJA Briuselis, C(2017) 4679 final KOMISIJOS ĮGYVENDINIMO SPRENDIMAS (ES) / dėl bendros sistemos techninių standa

VIEŠO NAUDOJIMO Aplinkos oro teršalų koncentracijos tyrimų, atliktų 2017 m. rugpjūčio d. Šiltnamių g. 23 Vilniaus mieste, naudojant mobiliąją la

CarSense 303 M A G N E T I N Ė K I L P A N A U D O J I M O I N S T R U K C I J A

PS Testavimo ir konfigūravimo valdymas Užduotis nr. 1. Karolis Brazauskas Mindaugas Rekevičius Jonas Riliškis Eugenijus Sabaliauskas

VABALNINKO BALIO SRUOGOS GIMNAZIJA Vabalninko Balio Sruogos gimnazija K.Šakenio g. 12, Vabalninkas, Biržų raj. Tel. (8-450)

PowerPoint Presentation

Priedai_2016.indd

Administravimo vadovas SAFTit Pro v3

L I E T U V O S J A U N Ų J Ų M A T E M A T I K Ų M O K Y K L A 2. TRIKAMPIŲ ČEVIANOS ( ) Teorinę medžiagą parengė ir antrąją užduotį sudarė V

MatricosDetermTiesLS.dvi

Busto pritaikymo pirkimo salygos 10 obj rekonstr

VĮ GIS-Centras Vilnius 2019 Palydovinių duomenų peržiūros ir analizės paslauga Naudotojo vadovas v.1

VALSTYBINIO SOCIALINIO DRAUDIMO FONDO VALDYBOS

LIETUVOS RESPUBLIKOS VYRIAUSYBĖS KANCELIARIJA I Š V A D A DĖL KORUPCIJOS PASIREIŠKIMO TIKIMYBĖS 2014 m. gruodžio 2 d. Vilnius Vadovaujantis Lietuvos R

Programų sistemų inžinerija Saulius Ragaišis, VU MIF

CIVILINĖS AVIACIJOS ADMINISTRACIJOS DIREKTORIUS Į S A K Y M A S DĖL MĖGĖJIŠKOS KONSTRUKCIJOS ORLAIVIŲ GAMYBOS, JŲ TINKAMUMO SKRAIDYTI NUSTATYMO IR NAU

Autorinė sutartis Nr

PATVIRTINTA

SKENAVIMO KOMPIUTERINIU TOMOGRAFU PROTOKOLAS

Projektas „Europos kreditų perkėlimo ir kaupimo sistemos (ECTS) nacionalinės koncepcijos parengimas: kreditų harmonizavimas ir mokymosi pasiekimais gr

PATVIRTINTA Viešosios įstaigos Tauragės ligoninės Direktoriaus 2011 m. gruodţio 12 d. įsakymu Nr. V-119 VIEŠOSIOS ĮSTAIGOS TAURAGĖS LIGONINĖS MAŢOS VE

GPAIS vartotojo vadovas savivaldybėms GPAIS VARTOTOJO VADOVAS SAVIVALDYBIŲ PILDOMAI INFORMACIJAI GPAIS TURINYS 1. BENDRI DARBO SU GPAIS PRINCIPAI... 2

Muzikos duomenų bazės NAXOS Music Library naudojimo vadovas Turinys Kas yra NAXOS Music Library... 2 Kaip pradėti naudotis... 3 Kaip atlikti paiešką..

Lietuvos mokslo ir studijų institucijų kompiuterių tinklas LITNET Vilniaus universitetas Mokslininko darbo vietos paslauga Paslaugos naudojimo instruk

(Pasiūlymų dėl projektų atrankos kriterijų nustatymo ir keitimo forma) PASIŪLYMAI DĖL PROJEKTŲ ATRANKOS KRITERIJŲ NUSTATYMO IR KEITIMO 2017 m. lapkrič

LIETUVOS RESPUBLIKOS REGIONINĖS PLĖTROS ĮSTATYMO NR. VIII-1889 PAKEITIMO ĮSTATYMAS 2014 m. rugsėjo 18 d. Nr. XII-1094 Vilnius 1 straipsnis. Lietuvos R

MATEMATIKOS BRANDOS EGZAMINO PROGRAMOS MINIMALIUS REIKALAVIMUS ILIUSTRUOJANTYS PAVYZDŽIAI Egzamino programos minimalūs reikalavimai 1.3. Paprastais at

LT PRIEDAS Teikiant duomenis EURES veiklos vertinimo sistemai naudotinų rodiklių sąrašas Elektroninė šio sąrašo versija ir, jei jis bus iš dalies keič

Microsoft Word - PISKISVĮ18 straipsnio atskleidimai - INVL Technology

Logines funkcijos termu generavimo algoritmas pagristas funkciniu modeliu

RYŠIŲ REGULIAVIMO TARNYBOS

Pridėtinės vertės mokesčio sąskaitų faktūrų registrų duomenų tvarkymo ir pateikimo taisyklių priedas I.SAF DUOMENŲ RINKMENOS APRAŠYMAS I DALIS ANTRAŠT

TIESINĖ ALGEBRA Matricos ir determinantai Matricos. Transponuota matrica. Nulinė ir vienetinė matrica. Kvadratinė matrica. Antrosios ir trečiosios eil

479B-2018_Krka_Pravilnik_LT.cdr

VILNIAUS R. PABERŽĖS ŠV. STANISLAVO KOSTKOS GIMNAZIJOS 2, 4, 6 IR 8 KLASĖS MOKINIŲ MOKYMOSI PASIEKIMŲ VERTINIMO PANAUDOJANT DIAGNOSTINIUS IR STANDARTI

Jabra SPEAK 410 Naudotojo vadovas

airbnb-pwc-taxguide-lithuania-lt

DĖL APLINKOS IR SVEIKATOS MOKSLO KOMITETO ĮSTEIGIMO

SUSITIKIMO VIETA – NAUJAS ITALIJOS LIETUVIŲ TINKLAPIS

Elektroninio dokumento nuorašas UKMERGĖS RAJONO SAVIVALDYBĖS ADMINISTRACIJOS DIREKTORIUS ĮSAKYMAS DĖL NACIONALINIO MOKINIŲ PASIEKIMŲ PATIKRINIMO (DIAG

Priedas

Microsoft Word - Pradedančiųjų pararašiutininkų rengimas sparno tipo parašiutu.doc

PowerPoint Presentation

Sutartis aktuali nuo

Microsoft Word žindenių taisyklės.doc

Ginčo byla Nr LIETUVOS BANKO PRIEŽIŪROS TARNYBOS FINANSINIŲ PASLAUGŲ IR RINKŲ PRIEŽIŪROS DEPARTAMENTO DIREKTORIUS SPRENDIMAS DĖL A. G. IR

Microsoft Word - Palmolive_Drogas_full_rules_April_2019.doc

LIETUVOS RESPUBLIKOS GYVENAMOSIOS VIETOS DEKLARAVIMO ĮSTATYMO NR. VIII-840 PAKEITIMO ĮSTATYMAS 2017 m. gruodžio 21 d. Nr. XIII-961 Vilnius 1 straipsni

PS_riba_tolydumas.dvi

LIETUVOS HIDROMETEOROLOGIJOS TARNYBA PRIE APLINKOS MINISTERIJOS 2018 METŲ VEIKLOS ATASKAITA I. IŠORINIAI POKYČIAI LHMT yra vienintelė ofici

Projektas PATVIRTINTA Alytaus Sakalėlio pradinės mokyklos direktoriaus įsakymu Nr. V- ALYTAUS SAKALĖLIO PRADINĖS MOKYKLOS ELEKTRONINIO DIENYNO T

VILNIAUS KOLEGIJA AGROTECHNOLOGIJ FAKULTETAS CHEMIJOS KATEDRA Tyrimas: STUDENTAI APIE KURSINĮ DARBĄ Dalykas: LABORATORIJ VEIKLA Tyrimą atliko lektorė:

Reklaminių pozicijų įkainiai KLAIPĖDA 2017 m.

European Commission

PowerPoint Presentation

Teismo praktikos rinkinys TEISINGUMO TEISMO (penktoji kolegija) SPRENDIMAS 2018 m. spalio 4 d. * Direktyva 2007/64/EB Mokėjimo paslaugos vidaus rinkoj

Individualus projektas Programa TE-PM, TE-PS, TE-SL, TEstream 4, TEstream 6, TEstream 8, TEstreamOBD 4, TEstreamOBD 6, TEstreamOBD 8 sistemų naudotoja

Europos Sąjungos Taryba Briuselis, 2016 m. spalio 28 d. (OR. en) Tarpinstitucinė byla: 2016/0344 (NLE) 13797/16 ADD 2 PECHE 400 PASIŪLYMAS nuo: gavimo

Veiksmų programų administravimo

2019 M. LIETUVOS ULTRALENGVŲJŲ ORLAIVIŲ PILOTŲ FEDERACIJOS ČEMPIONATO NUOSTATAI Šie nuostatai yra parengti pagal FAI Sportinio Kodekso 10 Sekciją. Org

PATVIRTINTA

LYGIŲ GALIMYBIŲ KONTROLIERIUS PAŽYMA DĖL MIŠKO DARBŲ SĄUGOS TAISYKLIŲ DT 1-96 GALIMO PRIEŠTARAVIMO LIETUVOS RESPUBLIKOS MOTERŲ IR VYRŲ LYGIŲ GALIMYBIŲ

Transkriptas:

VILNIAUS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS PROGRAMŲ SISTEMŲ KATEDRA Lėktuvo trajektorijos vizualizavimas MATLAB sistemoje Aeroplane path visualization using MATALB system Kursinis darbas Atliko: 3 kurso, 2 grupės studentas Domantas Nuobara (parašas) Darbo vadovas: doc. Kristina Lapin (parašas) Vilnius - 2010

Turinys Įvadas... 3 1. Virtualaus pasaulio pritaikymas Pescaros oro uostui... 4 1.1. SKY-Scanner projektas... 4 1.2. Sukruto virtualaus pasaulio nagrinėjimas... 4 1.3. Skrydţių trajektorijų vaizdavimas virtualiame pasaulyje... 4 1.4. Idealios trajektorijos atvaizdavimas... 5 1.5. Ovalų koordinačių nustatymas... 5 1.6. Iškilusi problema su ovalų koordinatėmis... 6 2. MATLAB ir VRML suderinamumas... 7 2.1. MATLAB ir VRML koordinačių sistemos... 7 2.2. Skrydţių trajektorijų koordinačių keitimas... 8 3. Lėktuvų skrydţių trajektorijų vaizdavimas virtualiame pasaulyje... 10 3.1. Trajektorijų atvaizdavimas... 10 3.2. Skrydţių trajektorijų koordinatės... 10 3.3. Lėktuvo sukimas virtualioje erdvėje... 10 3.4. Lėktuvo pasukimo kampo nustatymas... 11 3.5. Lėktuvo pasukimo kampo apskaičiavimas... 12 Išvados... 14 Naudotų šaltinių sąrašas... 15 Priedai... 16 2

Įvadas Pasirodţius naujiems matavimo prietaisams - lidarams (LIDARs Light Detection And Ranging systems) atsirado galimybė matavimus atlikti daug tiksliau negu naudojant radarus. Projekte SKY-Scanner yra siekiama sukurti sistemą, padedančią oro uosto dispečeriui priimti sprendimą. Nors lidarų išmatuoti duomenys yra šimtus kartų tikslesni nei radarų duomenys, tačiau jie matavimus atlieka tik tuomet kai yra tiksliai nutaikyti į objektą. Be to, esant blogoms oro sąlygomis (pvz.: rūkui, lyjant lietui ar sningant) lidarai neveikia, todėl juos galima naudoti tik kaip pagalbinę priemonę tikslinant lėktuvo padėtį, kai radaras jau yra uţfiksavęs kurioje padėtyje yra lėktuvas. Sistema turi būti tokia, kad jai pateikus lidarų ir radarų duomenis, išvestyje būtų galimos rizikingos situacijos tikimybė bei patikslinta lėktuvo padėtis. Italijoje, Pescaros mieste yra oro uostas, kuriam kuriama sprendimų priėmimo sistema SKY-Scanner. Siekiant stebėti skrydţius, išanalizuoti jų duomenis, numatyti galimas problemas, reikia tam tikro būdo skrydţiams atvaizduoti. Suprantamiausias ir realistiškiausias būdas atvaizduoti lėktuvo skrydį naudojant virtualią aplinką. Šio darbo tikslas sukurti virtualią aplinką (virtualų pasaulį), kurioje, pagal pateiktus skrydţių duomenis koordinates, vaizduojami įvykę skrydţiai ir būtų galima nustatyti ar lėktuvas skrenda nenukrypdamas nuo nustatytos skrydţio trajektorijos. 3

1. Virtualaus pasaulio pritaikymas Pescaros oro uostui 1.1. SKY-Scanner projektas Šis projektas vykdomas ne pirmus metus dalis jo jau padaryta ir yra plėtojama. Sprendimo priėmimo sistema yra kuriama Pescaros oro uostui, tačiau nėra pateikta jokių šio oro uosto radarų uţfiksuotų duomenų. Tam, kad projekto dalyviai galėtų sukurti tokią sistemą reikalingi duomenys, su kuriais būtų galima atlikti testavimus. Todėl buvo pateikti kito Italijos oro uosto Neapolio, radarų uţfiksuoti duomenys, kuriais remiantis buvo sukurta prototipinė sistema Neapolio oro uostui. Toliau vykdant projektą prototipas yra perdaromas ir tobulinamas taip, kad tiktų Pescaros oro uostui. Taigi autoriui tenkanti uţduotis yra ne sukurti virtualų pasaulį iš naujo, o esantį Neapolio oro uosto prototipą pakeisti ir pritaikyti Pescaros oro uostui. 1.2. Sukruto virtualaus pasaulio nagrinėjimas Neapolio oro uosto prototipą kūrė Gediminas Šumskas. Neţinant kokiomis priemonėmis, kas ir kokiu tikslu yra sukurta, būtų neįmanoma to darbo pratęsti ir tobulinti. Taigi visų pirma reikėjo detaliai išsianalizuoti ir išsiaiškinti kaip buvo kuriamas Neapolio oro uosto virtuali aplinka. Perskaičius Gedimino Šumsko kursinį darbą [1 priedas] buvo aišku, kad tinkamiausias įrankis kurti virtualiam pasauliui yra 3ds MAX modeliavimui skirta programa. Įgauti pradinių ţinių apie darbą šiuo įrankiu padėjo jame esantys vaizdo įrašai, skirti susipaţinti su pagrindinėmis programos funkcijomis. Tokiu būdu buvo išanalizuotas sukurtas virtualus pasaulis, jame esantys objektai ir suţinota, kad lėktuvų skrydţių vizualizavimas atliekamas ne 3ds MAX pagalba, o naudojantis MATLAB programine įranga. 1.3. Skrydžių trajektorijų vaizdavimas virtualiame pasaulyje Pescaros, kaip ir Neapolio, oro uoste lėktuvai leidţiasi tik iš vienos nusileidimo tako pusės. Kiekviename oro uoste yra vietą, kurią pasiekęs lėktuvas skrenda tiesiai, maţindamas skrydţio aukštį ir greitį atlieką nusileidimą. Norint ţinoti ar nusileidimas vyksta pagal nustatytus standartus, virtualiame pasaulyje yra išdėstomi ovalai, pro kuriuos turi praskristi lėktuvas, jei nėra nukrypimų nuo trajektorijos. MATLAB sistemai parašyta programa, kuriai pateikus skrydţio trajektorijos bei ovalų koordinates, atlieka skrydţio vizualizaciją. Programa naudoja sukurtą virtualų pasaulį 3ds MAX modeliavimo įrankiu yra sukurtas virtualus trimatis pasaulis, vaizduojantis Pescaros oro uostą iš viršaus, taip pat jame yra sukurtas trimatis lėktuvo objektas bei ovalai ir išsaugotas WRL formatu. Šiuo formatu saugomas VRML (Virtual Reality Modelling Language) kodas, kurį supranta MATLAB sistema. MATLAB sistemoje atliekamas 4

šio virtualaus pasaulio vaizdavimas ir pagal pateiktas koordinates keičiama lėktuvo padėtis virtualioje erdvėje nustatomos naujos lėktuvo pozicijos koordinatės ir atnaujinamas virtualus pasaulis, kur lėktuvas jau kitoje pozicijoje. Tai vyksta pakankamai greitai, priklauso nuo kompiuterio vykdančio programą galingumą, todėl yra nurodomas parametras p, kuris reiškia kokią sekundės dalį reikia uţlaikyti vaizdą, prieš atnaujinat lėktuvo padėtį, t.y. jeigu parametras p yra labai maţas, o programą vykdantis kompiuteris greitas, tuomet skrydis gali būti atvaizduojamas labai greitai ir ţmogus nespėtų pamatyti visos trajektorijos, todėl, parenkant tinkamą uţlaikymą, skrydis atvaizduojamas norimu greičiu. 1.4. Idealios trajektorijos atvaizdavimas Vienas pagrindinių projekto tikslų yra skrydţių nuokrypių vaizdavimas. Pescaros oro uosto brėţiniuose [2 naudotas šaltinis] yra paţymėtas taškas FAF (Final Aproach Fix), kuris pasako kokiomis aplinkybėmis lėktuvas turi leistis yra nustatyta, kad lėktuvas turi būti 2000 pėdų aukštyje, esant 7 jūrmylių atstumui iki nusileidimo tako ir turi leistis 4,8% nuoţulnumo kampu. Šį tašką privalo pasiekti visi atskrendantys lėktuvai ir praskridę FAF būtinai turi leistis. Taip pat, World Areo Data internetinėje svetainėje pateikti nusileidimo tako duomenys, išsiaiškinta, kad Pescaros nusileidimo takas yra pasuktas 218 laipsnių kampu. Taigi dabar ţinomi visi reikalingi duomenys, norint išdėstyti ovalus, į kuriuos telpa lėktuvas ir kurie sudaro tarsi tunelį, vaizduojantį idealią nusileidimo trajektoriją nuo taško FAF. 1 pav. Ovalai, pro kurios skrenda lėktuvas 1.5. Ovalų koordinačių nustatymas Virtualiame pasaulyje ovalai išdėstomi statiškai sukuriant virtualų pasaulį MATLAB aplinkoje. Todėl turime ţinote taškų, kuriuose turi būti ovalai, koordinates. Jų apskaičiavimui Gedimino Šumsko kursiniame darbe buvo parašyta programa, kuriai pateikus nuolydţio ir nusileidimo tako kampus, kaip pradinius duomenis, gaunamos taškų koordinatės. Be to, galima 5

pasirinkti kas kokį atstumą ir kiek ovalų norime turėti. Kadangi yra ţinoma, kad taškas FAF yra 7 jūrmylių atstumu, o mūsų naudojamos 64 koordinatės prilygsta vienai jūrmylei, gauname atkarpos, kurioje turi būti ovalai, ilgį lygų 448. Tarkime, kad norime išdėstyti 20 ovalų, tai atstumas tarp jų turi būtų apie 22. Įvedę į programą tokius parametrus, gauname taškų, kuriuose turi būti ovalai, koordinates. 1.6. Iškilusi problema su ovalų koordinatėmis Sudėliojus ovalus, pagal sugeneruotas koordinates, buvo pastebėta, kad ovalų sudaromo tunelio kryptis nesutampa su nusileidimo taku, t.y. pasukta kitu kampu. Padaryta išvada, kad sugeneruojamos koordinatės yra nekorektiškos. Panagrinėjus programos, parašytos c# kalba, kodą ir pagilinus c# programavimo kalbos ţinias, nustatyta, kad nusileidimo tako pasukimo kampą reikia pateikti radianais, o ne laipsniais. Pakoregavus programą (2 priedas) buvo sugeneruotos tinkamas nusileidimo takui ovalų koordinatės. 6

2. MATLAB ir VRML suderinamumas 2.1. MATLAB ir VRML koordinačių sistemos Atliekant skrydţių trajektorijų atvaizdavimo testavimus sukurtame pasaulyje buvo pastebėta, kad nusileidimo tako kryptis nesutampa su kryptimi, kuria leidţiasi lėktuvai. Daugiau pasidomėjus apie VRML paaiškėjo, kad šis formatas naudoja šiek tiek kitokią koordinačių sistemą. 2 pav. MATLAB ir VRML koordinatės Kaip matosi iš [2 pav. MATLAB ir VRML koordinatės] VRML koordinačių sistemoje Y ašis sukeista su Z ašimi ir dar Z ašies kryptis yra pakeista. Trimatėje erdvėje aukščiu atvaizduoti uţtenka sukeisti Y ir Z ašis, tuomet jokių problemų neiškyla, todėl nagrinėkime tik dvimates koordinačių sistemas. 3 pav. Vektoriaus atvaizdavimas įprastoje ir VRML koordinačių sistemose 7

Nusileidimo tako centro koordinatės yra 6012; -3422, jis pasuktas tam tikru kampu. Nusileidimo takas pavaizduotas vektoriumi, kurio kryptis rodo į kurią pusę leidţiasi lėktuvai. Paveikslėlyje [3 pav. Vektoriaus atvaizdavimas įprastoje ir VRML koordinačių sistemose] atveju a) matome kaip sumodeliuojame virtualų pasaulį 3ds MAX modeliavimo įrankiu, ir išsaugoję WRL formatu, gauname b) modelį. Kadangi modeliuojant ir išsaugant WRL formatu pat koordinačių plokštuma nekinta, keičiasi tik ţymėjimas ant koordinačių ašių, todėl a) nusileidimo tako centro koordinatės yra 6012; 3422, o išsaugojus WRL formatu nusileidimo tako centro koordinatės tokios, kokios buvo nustatytos (6012; -3422). Be to, modeliuojant objektus yra 2.2. Skrydžių trajektorijų koordinačių keitimas Tarkime skrydţio trajektorija yra tokia: D->C->B->A (iš taško D skrenda į tašką A, per taškus C ir B). Paprastoje koordinačių sistemoje toks skrydis atrodytų kaip [4 pav. Trajektorijos vaizdavimas įprastoje ir VRML koordinačių sistemose] a) variantas, bet sukurtas pasaulis yra VRML standarto, kuriame naudojama kitokia koordinačių sistema, todėl skrydis iš taško D į tašką A atvaizduojamas b) paveiksle. Akivaizdţiai matos simetrija X ašies atţvilgiu. Todėl reikia modifikuoti skrydţio trajektorijos koordinates. 4 pav. Trajektorijos vaizdavimas įprastoje ir VRML koordinačių sistemose Pirmuoju atveju lėktuvo trajektorija yra teisinga ir jis tariamai leidţiasi į nusileidimo taką, jei BA vektorių laikysime nusileidimo taku. Antruoju atveju nusileidimo takas lyg pasuktas - 90º laipsnių kampu. Todėl buvo mėginama visą virtualų pasaulį pasukti -90º laipsnių kampu, ir taip skrydţio trajektorija turėtų sutapti su nusileidimo taku, bet iškilo tokia problema, kad trajektorija tapo simetriška nusileidimo tako centrui. Taigi, problemos sprendimas buvo ne sukti visą pasaulį kampu, o trajektoriją vaizduoti simetriškai nusileidimo takui. Paveiksle [4 pav. Trajektorijos vaizdavimas įprastoje ir VRML koordinačių sistemose] a) raudonai 8

pavaizduota modifikuota nusileidimo trajektorija D ->C ->B ->A. Šiame pavyzdyje nusileidimo tako centro koordinatės yra (6; -3), kiekvienas trajektorijos taško keičiama tik Y koordinatė: nauja Y reikšmė gaunama iš dvigubos nusileidimo tako Y reikšmės atėmus seną Y reikšmę, t.y. šiuo atveju A taško koordinatė Y nauja 2*( 3) ( 4) 6 4 2. Tokiu būdu pakeitus kiekvieno trajektorijos taško y koordinatę, gaunama nauja trajektorija, kurią VRML atvaizduoja taip pat [4 pav. Trajektorijos vaizdavimas įprastoje ir VRML koordinačių sistemose] (raudona trajektorija b) dalyje), kaip ji buvo atvaizduojama prieš modifikavimą a) dalyje. Taigi suderinamumo problemos sprendimas yra surastas reikia modifikuoti trajektorijų koordinates, o ne sukti virtualų pasaulį. Trajektorijų koordinačių modifikavimas atliekamas MATLAB programoje [5 pav. Koordinačių pakeitimas]. Nusileidimo tako centro Y koordinatė yra -3422, todėl modifikuojant trajektorijos koordinates reikia iš dvigubos nusileidimo tako centro Y koordinatės atimti trajektorijos Y koordinatę, t.y. -6488-Y(i). Programoje atimama z koordinatė, nes ten Y reiškia aukštį, o Z platumą. 5 pav. Koordinačių pakeitimas 9

3. Lėktuvų skrydžių trajektorijų vaizdavimas virtualiame pasaulyje 3.1. Trajektorijų atvaizdavimas Virtualus skrydţių trajektorijų atvaizdavimas MATLAB aplinkoje atliekamas transformacijų principu. Keisdami virtualaus pasaulio objekto, lėktuvo, koordinates, keičiami ir jo padėtį virtualioje erdvėje. Koordinatės pateikiamos faile, kurį nuskaito programa ir pagal jas transformuoja lėktuvo objekto padėtį. 3.2. Skrydžių trajektorijų koordinatės Kadangi nėra Pescaros oro uosto radarų uţfiksuotų duomenų, projekto dalyviams teko patiems sugeneruoti tariamų skrydţių koordinates, kurias būtų galima panaudoti atliekant testavimus. Šią uţduotį SKY-Scanner projekte vienam dalyviui, kuris pagal Pescaros oro uosto nusileidimo procedūras sugeneravo skrydţių be nukrypimų trajektorijų koordinates. Sugeneruoti duomenys išsaugoti viename faile, nurodant kuriuo laiko momentu, kokio skrydţio lėktuvas buvo tam tikroje pozicijoje. Problema buvo tame, kad pateikti duomenys nebuvo skirti šiam virtualiam pasauliui. Šio kursinio darbo metu kuriamoje programoje vienu metu atvaizduojamas tik vienas skrydis, todėl programai pateikti reikia taip pat tik vieno skrydţio trajektorijos koordinates. Taigi iš pateikto kelių skrydţių duomenų failo reikėjo išskirti atskirus skrydţius ir jų koordinates. Be to, sugeneruotų koordinačių vienetai atitiko jūrmyles, o sukurtame virtualiame pasaulyje vieną jūrmylę atitinka 64 koordinatės. Vadinasi, sugeneruotų koordinačių failas negalėjo būti tiesiogiai pateikiamas programai, reikėjo prieš tai duomenis apdoroti ir sutvarkyti taip, kad atitiktų programos reikalavimus. Mėginti pačiam išrinkti kiekvieno atskiro skrydţio koordinates, jas padauginti ir ranka surašyti atskiruose failuose uţimtų nemaţai laiko bei atsirastų didelė tikimybė privelti klaidų, kadangi yra skrydţių trajektorijų sudarytų net iš daugiau nei 650 taškų. Šio kursinio darbo autorius, norėdamas sutaupyti laiko ir išvengti klaidų, parašė programą JAVA programavimo kalba, kuriai pateikus sugeneruotų duomenų failą, duomenys apdorojami, išrenkami atskiri skrydţiai ir jų koordinatės uţrašomos atskiruose failuose. Tokiu būdų gauta 12 failų su atskirų skrydţių trajektorijų koordinatėmis. 3.3. Lėktuvo sukimas virtualioje erdvėje Lėktuvas yra tiesiog virtualaus pasaulio objektas, kuris juda MATLAB aplinkoje veikiančiame pasaulyje transformuojant jo pozicijos koordinates. Tačiau lėktuvo judėjimas yra ganėtinai statiškas, t.y. jis kaip objektas yra pasuktas tam tikru kampu ir transformuojant tik jo 10

koordinates lėktuvas lieka pasuktas tuo pačiu kampu, nesvarbu kuria kryptimi vyksta judėjimas. Siekiant, kad skrydţio atvaizdavimas atrodytų realistiškiau nutarta padaryti, kad vaizduojant skrydţio trajektoriją lėktuvo priekis visada būtų nukreiptas judėjimo kryptimi, kitaip tariant, lėktuvas suktųsi pagal skrydţio kryptį. Norint tai padaryti, reikia transformuoti ne tik lėktuvo padėtį virtualioje erdvėje, bet ir pasukti jį kaip objektą z ašimi (prisiminkime, kad VRML skirtingai atvaizduoja koordinačių ašis) tam tikru kampu. 3.4. Lėktuvo pasukimo kampo nustatymas Pirminiame variante buvo bandoma nustatyti pasukimo kampą imant du trajektorijos taškus, juos sujungiant gauname vektorių. Ţinant vektoriaus kryptį, galime nustatyti kokį kampą jis sudaro su x ašimi. Kadangi testavimo trajektorijų koordinatės yra ţinomos iš anksto, tai vektorius gaunamas imant dabartinės lėktuvo pozicijos taško koordinates ir sekančio taško koordinates. Tačiau koordinatės yra fiksuojamas radarų, o kaip ţinoma, radarai nėra labai tikslūs. Nors lėktuvo trajektorija yra beveik tiesi linija, bet koordinačių taškai yra šiek tiek nukrypę į vieną ar kitą pusę, todėl vektorių kryptys irgi yra nukreiptos šiek tiek į šonus [6 pav. Kryptis į kiekvieną tašką]. Atvaizduojant tokiu būdų apskaičiuotus pasukimo kampus lėktuvas skrisdamas tiesiai smarkiai sukiojosi į šonus. Taigi, norint išspręsti šią problemą ir sumaţinti bereikalingą lėktuvo sukiojimąsi į šonus, buvo nutarta lėktuvo priekį kreipti ne į sekantį trajektorijos tašką, o į tašką esanti uţ 3 taškų nuo dabartinio [7 pav. Kryptis į trečia tašką ]. 7 pav. Kryptis į trečia tašką 6 pav. Kryptis į kiekvieną tašką Kaip matosi iš Error! Reference source not found. ir Error! Reference source not found., antruoju atveju trajektorija tiesesnė, nes pasukimo kampas nustatomas iš vektoriaus AD, o ne sukiojama keletą kartų, kaip pirmuoju atveju. Be to, buvo dirbama su iš anksto ţinomomis skrydţio trajektorijos koordinatėmis, o realiame pasaulyje mes radaras pastoviai fiksuoja dabartinės lėktuvo pozicijos koordinates ir negalime tiksliai ţinoti, kokiame taške lėktuvas bus po kelių sekundţių, tą galime tik numatyti, tačiau čia jau visai kita SKY-Scanner projekto uţduotis. Todėl buvo nuspręsta lėktuvo pasukimo kampą skaičiuoti ţiūrint ne į tašką esantį uţ kelių taškų į priekį, bet atsiţvelgiant į dabartinį tašką ir 11

kokiame taške buvo prieš tai buvo prieš tai. Jei anksčiau lėktuvas būdavo taške A ir vektorių brėţėm į sekantį tašką D [6 pav. Kryptis į kiekvieną tašką] ir pagal tai nustatėme kokiu kampu turi būti pasisukęs, tai dabar traktuojame, kad lėktuvas jau yra taško D pozicijoje ir jame turi būti pasisukęs kampu, kurį sudaro vektorius AD su x ašimi [7 pav. Kryptis į trečia tašką]. 3.5. Lėktuvo pasukimo kampo apskaičiavimas yb ya Pasukimo kampas visada skaičiuojamas arktangentu, tokia formule: arctan( ) x x galimos kelios lėktuvo skrydţio kryptis, todėl gautą kampą gali reikėti modifikuoti. B A. yra 8 pav. Skrydimo kryptys Virtualiame pasaulyje lėktuvo modelis yra nukreiptas į vakaras, t.y. lėktuvo priekis ţiūri X ašies kryptimi. Tarkime lėktuvas skrenda iš taško A į tašką B [8 pav. Skrydimo kryptys. Pagal formulę, kampas atitinka CAB ir DBA kampus. Reikia atkreipti dėmesį į tai, kad a) atveju kampas visada gaunasi neigiamas, todėl lėktuvą uţtenka pasukti kampu, kuris yra neigiamas, ir jo kryptis sutampa su vektoriaus AB kryptimi. Atveju b) kampas todėl lėktuvą uţtenka pasukti tik kampu. Šie abu atvejai yra tuomet, kai xb x A. visada gaunasi teigiamas, 9 pav. Skrydimo kryptys 12

Kitu atveju, kai xb x A [Error! Reference source not found., kampas apskaičiavus a) gaunasi neigiamas, o b) teigiamas. Pasukus tokiu kampu lėktuvo priekis yra nukreiptas į kitą pusę nei vektoriaus AB, todėl prie kampo sutampa. reikia pridėti 180º, tuomet lėktuvo ir vektoriaus kryptys Dar galimi ir tokie atvejai kai trajektorijos taškų x arba z koordinatės yra lygios. Esant tokiai situacijai, lėktuvas skrenda arba x, arba y ašies kryptimi. Lėktuvo pasukimo kampo skaičiavimo programoje [10 pav. Lėktuvo pasukimo kampo skaičiavimo programos kodas] yra įtrauktos tokios sąlygos. 10 pav. Lėktuvo pasukimo kampo skaičiavimo programos kodas Kadangi kampas visada skaičiuojamas pagal x ašį, tai darant vis kitą lėktuvo pasukimą, reikia iš pradţių jį atsukti į pradinę padėti. Todėl yra įsimenamas kiekvienas pasukimas, programoje kintamasis rob. Kintamasis rot yra apskaičiuotas kampas. Paveiksle paţymėta I sąlyga, kai skrydţio trajektorijos taškų x koordinatės sutampa, o dabartinio taško y koordinatė yra didesnė uţ prieš tai buvusio taško y koordinatę, vadinasi lėktuvas skrido tiesiai į šiaurę, todėl turi būti pasuktas -90º kampu, kad skrydimo kryptis sutaptų su lėktuvo kryptimi. Ţenklu II paţymėta sąlyga, kai x koordinatės sutapo, o dabartinio taško y koordinatė maţesnė uţ prieš tai buvusio taško y koordinatę, t.y. lėktuvas skrido pietų kryptimi, todėl lėktuvo objektą reikia pasukti 90º kampu. Situacijai kai trajektorijos taškų y koordinatės yra lygios (lėktuvas skrenda į rytus arba vakarus) atskirai nagrinėti nereikia, kadangi skrydţio kryptis priklausytų nuo dabartinio ir prieš tai buvusio taško x koordinačių reikšmių, o tai programoje jau yra aprašyta. 13

Išvados Dalyvaujant SKY-Scanner projekte buvo įgyvendintas šio kursinio darbo tikslas - sukurti virtualią Pescaros oro uosto erdvę, skirta vaizduoti lėktuvų trajektorijoms. Sukurtas virtualus pasaulis realistiškai vaizduoja buvusius skrydţius, kadangi yra sudėti ovalai, rodantys tikslia nusileidimo trajektoriją, galime aiškiai matyti ar lėktuvas skrenda teisinga trajektorija ar yra nukrypimų nuo trajektorijos. Taigi tai padeda analizuoti skrydţio duomenis, nagrinėjant jų trajektorijas. Šio kursinio darbo įgyvendinimas reikalo įdiegti koordinačių sistemų suderinamumą tarp VRML ir MATLAB ir išsiaiškinti kaip atrodo VRML koordinačių sistema. Padirbėjus su MATLAB tapo aišku, jog tai puikus įrankis atlikti virtualaus pasaulio vizualizacijoms kai reikia atlikinėti sudėtingus ar paprastus matematinius skaičiavimus ir atlikti tiriamuosius darbus. Naudojant MATLAB būtų labai sunku sukurti galingą ir našų produktą, kadangi ji skirta primityvioms virtualaus pasaulio simuliacijoms ir norint paleisti detalesnius virtualaus pasaulio objektus reikia galingesnio kompiuterio, nes MATLAB reikalauja nemaţai kompiuterio resursų. 14

Naudotų šaltinių sąrašas 1. Gedimino Šumsko kursinis darbas Trimačių aplinkų kūrimo priemonės 2. Pescaros oro uosto eismą reguliuojančios diagramos http://uosis.mif.vu.lt/~moroz/sky-scanner/francesco-greco.rar 3. Pescaros oro uosto nusileidimo tako duomenys http://worldaerodata.com/wad.cgi?runway=it0726322 4. VRML ir MATLAB koordinačių sistemos http://www.weizmann.ac.il/matlab/toolbox/vr/ch_int15.html 15

Priedai 1 priedas. Trajektorijų koordinačių atskyrimo programa public void convert(){ //Procedūra atliekanti visą darbą try{ FileInputStream fstream = new FileInputStream("C:\\visi.csv"); //Nurodomas duomenų failas DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strline, procedure, coords; while ((strline = br.readline())!= null){ //Nuskaitome po eilutę iš duomenų failo procedure = strline.substring(0, 10); //Paima skrydžio pavadinimą coords = strline.substring(strline.indexof(";;;;;;;")+7); //Paima skrydžio koordinates addto(procedure,coords); //Su pavadinimu ir koordinatėmis kreipiasi į procedūrą addto in.close(); catch (Exception e){ System.err.println("Error: " + e.getmessage()); makefile(x1, y1, z1, "ILS_S_49"); //----- Sukūriami failai koordinatėms įrašyti -----// makefile(x2, y2, z2, "ILS_P"); makefile(x3, y3, z3, "ILS_S_59"); makefile(x4, y4, z4, "ILS_STRA"); makefile(x5, y5, z5, "VORD_P"); makefile(x6, y6, z6, "VORD_S51"); makefile(x7, y7, z7, "VORD_S63"); makefile(x8, y8, z8, "VORD_STR"); makefile(x9, y9, z9, "VOR_P"); makefile(x10, y10, z10, "VOR_S_51"); makefile(x11, y11, z11, "VOR_S_63"); makefile(x12, y11, z12, "VOR_STRA"); //----- Sukūriami failai koordinatėms įrašyti -----// private void addto (String procedure, String coords){ /* * Procedūra pagal pateiktą skrydžio pavadinimą nustato * į kurį failą įrašyti koordinates, radus tinkamą failą * kreipaisi į kitą procedūrą, kuri įrašo duomenis į tam * tikro skrydžio koordinačių masyvą */ if (procedure.compareto((char)34+"ils_s_49"+(char)34) == 0){ add(x1, y1, z1, coords); else if (procedure.compareto((char)34+"ils-p "+(char)34) == 0){ add(x2, y2, z2, coords); else if (procedure.compareto((char)34+"ils-s-59"+(char)34) == 0){ add(x3, y3, z3, coords); else if (procedure.compareto((char)34+"ils-stra"+(char)34) == 0){ add(x4, y4, z4, coords); else if (procedure.compareto((char)34+"vord-p "+(char)34) == 0){ add(x5, y5, z5, coords); else if (procedure.compareto((char)34+"vord-s51"+(char)34) == 0){ add(x6, y6, z6, coords); else if (procedure.compareto((char)34+"vord-s63"+(char)34) == 0){ add(x7, y7, z7, coords); else if (procedure.compareto((char)34+"vord-str"+(char)34) == 0){ add(x8, y8, z8, coords); else if (procedure.compareto((char)34+"vor-p "+(char)34) == 0){ add(x9, y9, z9, coords); else if (procedure.compareto((char)34+"vor-s-51"+(char)34) == 0){ add(x10, y10, z10, coords); else if (procedure.compareto((char)34+"vor-s-63"+(char)34) == 0){ add(x11, y11, z11, coords); else if (procedure.compareto((char)34+"vor-stra"+(char)34) == 0){ 16

add(x12, y12, z12, coords); else System.out.println("Procedure not found!!"); private void add (ArrayList<String> x, ArrayList<String> y, ArrayList<String> z, String coords){ /* * Procedūrai pateikiami masyvai ir * skrydžio koordinatės. Atskiria x, y, z * koordinates ir įrašo į masyvus */ x.add(coords.substring(0, coords.indexof(';'))); coords = coords.substring(coords.indexof(';')+1); y.add(coords.substring(0, coords.indexof(';'))); coords = coords.substring(coords.indexof(';')+1); z.add(coords.substring(0, coords.indexof(';'))); private void makefile(arraylist<string> x, ArrayList<String> y, ArrayList<String> z, String name){ /* * Procedūrai paduodamas koordinačių * masyvas ir skrydžio pavadinimas. * Sukūriamas failas, tokių pavadinimu * ir į jį surašomos koordinatės tam tikru * formatu, kurio reikia MATLAB programai. */ Iterator<String> itr; double dbl; try{ FileWriter fstream = new FileWriter(name + ".m"); BufferedWriter out = new BufferedWriter(fstream); out.write("x1 = [\n"); itr = x.iterator(); while (itr.hasnext()) { String element = itr.next(); dbl = Double.parseDouble(element) * 64; element = Integer.toString((int)dbl); out.write(element + "\n"); out.write("];\n"); out.write("z1 = [\n"); itr = y.iterator(); while (itr.hasnext()) { String element = itr.next(); dbl = Double.parseDouble(element) * 64; element = Integer.toString((int)dbl); out.write(element + "\n"); out.write("];\n"); out.write("y1 = [\n"); itr = z.iterator(); while (itr.hasnext()) { String element = itr.next(); dbl = Double.parseDouble(element) / 100; element = Integer.toString((int)dbl); out.write(element + "\n"); out.write("];\n"); out.close(); catch (Exception e){ System.err.println("Error: " + e.getmessage()); 2 priedas. Ovalų koordinačių skaičiavimo programa public static void run() { double alfa = 232; while (alfa >= 180) alfa = alfa - 180; alfa = Math.PI * alfa /180; //laipsniais ne radianais double h_proc = 4.8; // nuolydis procentais StreamWriter sw = new StreamWriter(@"C:\fly_plan.csv"); // sukuriamas failas, kur bus įkeltos koordinatės Console.WriteLine("Kas kiek išvesti?"); // kas kokį intervalą kurti koordinates 17

int periodas = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Kiek kartų išvesti?"); // kiek kartų skaičiuoti koordinates int kartai = Convert.ToInt32(Console.ReadLine()); int l = 0; for (int i = 0; i < kartai; i++) { l = l + periodas; double y = (int)(-3422 - Math.Sin(alfa) * l); // -3422; 6012 oro uosto koordinatės double x = (int)(6012 + Math.Cos(alfa) * l); double h = (int)(l / 100 * h_proc); sw.writeline(x + "; " + y + "; " + h + ";"); sw.close(); 18