Bakalářská práce
Interaktivní animace v programu MAPLE
Vedoucí práce:
Vypracoval
doc. RNDr. Stanislav Bartoň, CSc.
Pavel Krčál
1
Zadání diplomové práce
2
Prohlášení Prohlašuji, že jsem bakalářskou práci na téma: Interaktivní animace v programu MAPLE vypracoval samostatně a použil jen pramenů, které cituji a uvádím v přiloženém soupisu literatury. Souhlasím, aby práce byla uložena v knihovně Mendelovy zemědělské a lesnické univerzity v Brně a zpřístupněna ke studijním účelům. V Brně, dne . . . . . . . . . Podpis autora . . . . . . . . . . . . . . . . . . . . . . .
3
Poděkování Touto cestou bych chtěl poděkovat vedoucímu bakalářské práce panu Doc. RNDr. Stanislavu Bartoňovi, CSc. za metodické vedení, cenné rady a připomínky a ochotu, se kterou mi pomáhal při tvorbě této práce.
4
Anotace Tato práce se zabývá matematickým popisem skutečného fyzikálního děje a jeho animací v programu MAPLE. Jako děj byl zvolen pohyb projektilu vystřeleného z protiletadlového kanonu. V úvodní části je uveden obecný popis programu MAPLE a jeho různých částí a jeho ovládání. Teoretická část práce se zabývá popisem pohybu tělesa v atmosféře. Je zde uveden matematický model pro šikmý vrh vzhůru a šikmý vrh vzhůru při uvažovaném odporu vzduchu, Coriolisova síla a ochranná parabola. V poslední části je podrobný popis zdrojového kódu animace a kompletní výpis tohoto kódu.
Klíčová slova: animace, balistická křivka, MAPLE, pohyb v atmosféře
Annotation This thesis deals with mathematical description of real physical process and its animation in MAPLE software. The movement of projectile fired from anti aircraft cannon was chosen to be animated. The preamble of this paper provides general description of MAPLE software, its various parts and controlling. The theoretical part deals with movement in the atmosphere. It provides mathematical models for inclined throw and inclined throw with air resistance, Coriolis force and protective parabola. The last part includes detailed description of animation’s source code and its complete transcript.
Keywords: animation, atmospheric movement, ballistic curve, MAPLE
5
Obsah 1 Úvod
8
1.1
Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.2
Stručný popis programu MAPLE . . . . . . . . . . . . . . . . . . . . .
8
1.3
Programové prostředí MAPLE . . . . . . . . . . . . . . . . . . . . . . .
9
1.3.1
Základní popis příkazů programu MAPLE . . . . . . . . . . . .
2 Pohyb v atmosféře
11 14
2.1
Šikmý vrh vzhůru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.2
Ochranná parabola . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.3
Šikmý vrh vzhůru při uvažovaném odporu vzduchu . . . . . . . . . . .
16
2.4
Coriolisova síla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3 Popis zdrojového kódu animace 3.1
19
Procedura anim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.1.1
Smyčka MAX-VYSKA . . . . . . . . . . . . . . . . . . . . . . .
19
3.1.2
Smyčka DOSAZITELNOST VYSKY . . . . . . . . . . . . . . .
19
3.1.3
Smyčka CAS STRELY . . . . . . . . . . . . . . . . . . . . . . .
20
3.1.4
Smyčka ANIMACE . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.2
Procedura animace . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.3
Ovládání programu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.4
Ukázka z animace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4 ZÁVĚR
22
5 Použitá literatura
23
6 Příloha
24
6
Seznam obrázků 1
Šikmý vrh vzhůru - trajektorie . . . . . . . . . . . . . . . . . . . . . . .
14
2
Šikmý vrh vzhůru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3
Ochranná parabola . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
4
Coriolisova síla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
5
Schematické znázornění animace . . . . . . . . . . . . . . . . . . . . . .
21
7
1
Úvod
V této práci se budu zabývat modelováním reálného děje. Jako děj jsem si vybral pohyb objektu v atmosféře, který předvedu na konkrétním příkladu projektilu vystřeleného z protiletadlového kanonu. Vzhledem k tomu, že se jedná o reálný děj, budu uvažovat také aerodynamický odpor a hustotu atmosféry závislou na nadmořské výšce. Pro řešení těchto poměrně složitých výpočtů budu používat program MAPLE.
1.1
Cíl práce
Cílem této práce je dokázat výhody použití matematických, fyzikálních a technologických výpočetních počítačových programů v praxi. Konkrétně jde o vytvoření fyzikálního a matematického modelu výše uvedeného děje a to s uvážení reálných podmínek bez zavedení zjednodušujících předpokladů v prostředí programu Maple. Vzniklý matematický model bude využit pro numerické řešení reálné situace a výsledky výpočtů budou prezentovány počítačovou animací. V průběhu výpočtu se vyhodnotí možnost zásahu a v případě kladného výsledku se vypočtou prvky pro střelbu, tj. okamžik výstřelu a náměr kanonu, které zajistí zasažení cíle.
1.2
Stručný popis programu MAPLE
Maple je programové prostředí, vyvinuté během uplynulých dvaceti pěti let společně na několika západních univerzitách, přičemž největší podíl práce vykonala skupina vědců sdružená pod názvem ”Symbolic Computation Group” na univerzitě ve Waterloo v Kanadě a dále pak na federální technické universitě ETH Zürich ve Švýcarsku, kam část této skupiny přešla v roce 1990. V současné době je MAPLE komercializován a jeho další vývoj řídí kanadská firma Maplesoft Inc., (http://www.maplesoft.com) sídlící ve Waterloo ve státě Ontario. Jméno MAPLE by mohlo být odvozeno z anglického akronyma Mathematics pleasure (Matematika potěšením). Ve skutečnosti však MAPLE náleží do systému počítačové algebry, které se označují zkratkou CAS (Computer Algebra System), což jsou interaktivní programy, které narozdíl od standartních programů pro numerické výpočty modelují matematické operace se symbolickými výrazy. 8
Během posledních deseti let se Maple stal jedním z nejmodernějších a nejintenzivněji se rozvíjejících systémů počítačové algebry ve světě.
1.3
Programové prostředí MAPLE
Na začátek je nutné poznamenat, že struktura příkazu programu MAPLE 9.5 a způsob jejich použití je naprosto nezávislý na operačním systému a druhu počítače, na kterém program pracuje. Jediné omezení je dáno použitým hardware a software, které limitují velikost a rozsah řešeného problému a tím i způsob řešení. Spuštění programu závisí na typu počítače a operačního systému, ve kterém se program spouští. Po spuštění se program ohlásí promptem, t.j. znakem (většinou >) že je připraven přijmout a zpracovat příkaz uživatele. Současná verze 10 systému MAPLE (zkráceně MAPLE 10) umožňuje provádět jak symbolické a numerické výpočty a vytvářet grafy, tak doplňovat je vlastními texty a vytvářet tak tzv. hypertextové zápisníky (anglicky ”worksheet”).
Symbolické operace Výhodou programu MAPLE je možnost práce se symbolickými výrazy, které dovolují, aby proměnné představovaly neznámé bez přiřazení numerické hodnoty a uchovávaly čísla v přesném tvaru (např.
1 3
místo 0.333. . ., π místo 3.141. . .) během jednotlivých
kroků ve výpočtu MAPLE dává odpovědi s mnohem větší přesností než běžné numerické výpočty.
Numerické operace Pokud symbolické operace nevedou k řešení problému, nebo problém nelze řešit symbolicky, je nutné ho řešit numericky. Neomezená přesnost MAPLE dovoluje numerické výpočty provádět s libovolným počtem číslic mantisy u čísel v pohyblivé řádové čárce.
Grafika Funkce jedné nebo dvou proměnných, funkce určené parametrickými rovnicemi, mohou být znázorněny graficky. MAPLE má mnoho způsobů grafického vyjádření a mnoho voleb, které umožňují různé způsoby grafického znázornění.
9
Nápověda Silnou stránkou programu MAPLE je jeho podrobná nápověda. Ta je členěna do několika základních oblastí podle způsobu práce a hledání, přičemž až na položku History odpovídají jednotlivým položkám v menu Help hlavního okna: • Table of contents - Obsah (klávesová zkratka Ctrl-F1) tato část obsahuje seznam témat nápovědy přehledně uspořádaných a členěných do formátu stromu. • Topic search - Vyhledávání témat (klávesová zkratka Ctrl-F2) zde je možné vyhledávat v seznamu jednotlivých témat nápovědy podle jejich názvů. • Search - Vyhledávání (klávesová zkratka Ctrl-F3) jde o standardní full-textový vyhledávač, který umožňuje prohledávat obsah textů nápovědy a také v matematické slovníku. • Math Dictionary - Matematický slovník (klávesová zkratka Ctrl-F11) obsahuje nový, plně integrovaný slovník matematických a technických výrazů. • History - Historie témat umožňuje procházet seznamem dosud prohlížených položek. Okno nápovědy je možné otevřít mnoha způsoby lze je otevřít jako dotaz na syntaxi známého příkazu, jako hledání v určité oblasti nebo při hledání významu některého matematického pojmu. Okno nápovědy obsahuje jednoduché menu, které ve svých položkách obsahuje stejné informace jako standardní menu, pouze menu File obsahuje položky umožňující tisku obsahu témat nebo celé nápovědy. Další řádek obsahuje tlačítka pro zjednodušení ovládání tisk témat, kopírování obsahu daného témata nápovědy, posun v historii nápovědy a skok na základní témata. Nejdůležitější částí celé nápovědy jsou dvě okna v hlavní části. Velikost těchto dvou oken je možné měnit posunem lišty, která je odděluje, čímž se dá získat větší prostor pro text nápovědy. Levé okno obsahuje seznam témat, ze kterých je možné vybírat, přičemž je rozděleno záložkami podle způsobu práce. Tyto záložky odpovídají výše uvedeným částem struktury (Contents, Topic, Search, Dictionary, History).
10
Pravé okno pak obsahuje vlastní text nápovědy. Struktura výpisu informací o předmětu dotazu má 6 částí: • function - popis činnosti daného příkazu • calling sequence - způsob, kterým je daná funkce volána • parameters - popis parametrů příkazu • synopsis - přehled • examples - ukázkové příklady použití funkce v různých situacích • see also - seznam dalších příkazů, blízkých dané oblasti 1.3.1
Základní popis příkazů programu MAPLE
• help Velmi podrobně vysvětlí a popíše příkaz, včetně několika ukázek jeho použití. • solve Příkaz pro řešení algebraických rovnic nebo jejich soustav. Pokud existuje více řešení, tak je oddělí čárkou. • subs Ve funkci nebo v proměnné nahradí proměnnou jinou proměnnou. • evalf Příkaz, který vyčíslí numericky zadaný výraz. • Digits Nastaví přesnost výpočtu na požadovaný počet platných cifer. • fsolve Numerické řešení rovnic, nebo jejich soustav s přesností požadovanou příkazem Digits Řešení probíhá pomocí Newtonovy iterační metody. Je možné požadovat i řešení v komplexním oboru.
11
• plot Vykreslí graf požadované funkce. Jedním z parametrů je souřadný systém pravoúhlý, polární. Graf může být zadán i parametricky. Jako další z příkazů může být parametr pro konverzi grafu do souboru pro zpracování. • plot3d Prostorový graf v pravoúhlých, cylindrických nebo kulových souřadnicích. Provádí výmaz neviditelných hran, stínování, řeší perspektivu. • display Zobrazí více funkcí zadaných příkazem emphplot, do jednoho grafu a pokud je parametr insequence nastaven na true, tyto funkce také zanimuje. • simplify Provede zjednodušení zadaného příkazu. Jednoduché výrazy jsou zjednodušovány automaticky. • sqrt Odmocní daný výraz. • diff Vypočte derivaci z výrazu podle proměnných, které jsou zadány jako parametry. • int Počítá určitý nebo neurčitý integrál z požadovaného výrazu. Pokud nelze nalézt požadovaný vztah, opíše zadaný příkaz na obrazovku. • dsolve Řeší diferenciální rovnice a jejich soustavy. Jedním z parametrů mohou být i počáteční podmínky pro určení integračních konstant. • save Uloží danou proměnnou, více proměnných nebo proceduru do zadaného názvu souboru. Pokud soubor neexistuje, je automaticky vytvořen.
12
• read Načte požadovaný soubor z pevného disku. Standartně je nastavena cesta k souboru do adresáře, kde je uložen worksheet, který tento příkaz používá. • sum Provádí výpočet součtu řad. Nelze li součet určit, opisuje příkaz na display. Lze li součet vyjádřit funkcí, vrací tuto funkci. • assign Přiřadí hodnoty více proměnným nebo množině proměnných. Kromě těchto základních příkazů existuje celá řada dalších příkazů používaných pro řešení komplikovanějších problémů.
13
2 2.1
Pohyb v atmosféře Šikmý vrh vzhůru
Šikmý vrh se skládá z volného pádu a rovnoměrného přímočarého pohybu šikmo k povrchu Země. Délka vrhu závisí na počáteční rychlosti v0 a na elevačním úhlu α, pod kterým bylo těleso vrženo. Nejdůležitější hodnota šikmého vrhu vzhůru je jeho délka, ve vojenské terminologii nazývaná dostřel. Největší délky vrhu dosáhneme pod elevačním úhlem 45◦ . Délka vrhu je stejná pro dvojice α a 90◦ - α (například 15◦ a 75◦ ; 30◦ a 60◦ ). Příklady z praxe: výstřel z děla (α < 45◦ ), z minometu (α > 45◦ ). Chceme-li Obrázek 1: Šikmý vrh vzhůru - trajektorie
určit polohu a rychlost hmotného bodu při šikmém vrhu, musíme si pohyb opět rozložit na svislý a vodorovný pohyb. Počáteční rychlost v0 musíme rozložit na vodorovnou počáteční rychlost vx a svislou počáteční rychlost vy . Okamžitá rychlost je dána vektorovým součtem svislé a vodorovné rychlosti. Hmotný bod koná svislý vrh s počáteční rychlostí vy a vodorovný rovnoměrný přímočarý pohyb s rychlostí vx . Polohu v daném okamžiku určíme z těchto pohybů: vx = v0 cos(α) vy = v0 sin(α)
x = vx t = v0 t cos(α) 1 1 y = vy t − g t2 = v0 t sin(α) − g t2 2 2 14
Obrázek 2: Šikmý vrh vzhůru
2.2
Ochranná parabola
Ochranná parabola je křivka definující území, kde je možno zasáhnout daný bod za konstantní rychlosti. Každý bod ležící uvnitř obálky je možné zasáhnout dvěma dráhami s různými úhly výstřelu. Body ležící na této obálce je možné zasáhnout pouze jednou dráhou. Body které leží mimo tuto obálku není možné zasáhnout žádnou z těchto drah. Toto území je velmi důležité pro dělostřelce. Ti se zajímají o dostřel na ose x, protože parabola ohraničuje místa, která mohou zasáhnout. Obrázek 3: Ochranná parabola
15
2.3
Šikmý vrh vzhůru při uvažovaném odporu vzduchu
Trajektorie šikmého vrhu ve vakuu je parabola, ve vzduchu je to balistická křivka. Dolet projektilu který se pohybuje po balistické křivce je při stejných podmínkách (úsťová rychlost, elevační úhel, hmotnost) vždy kratší, než dolet projektilu, který se pohybuje po parabole. To je způsobeno aerodynamickým odporem prostředí, který na pohybující se projektil působí (odporová síla působí proti vodorovné složce rychlosti). Tento případ je řešen podrobněji v této práci. Velikost aerodynamické odporové síly se dá vyjádřit ze vztahu, který v 18. století definoval Isaac Newton: 1 Fa = − Cx S ρ v 2 2 kde Cx je součinitel aerodynamického odporu, S je čelní průřez tělesa a v je rychlost pohybu tělesa. Pro další postup je potřeba tuto sílu rozložit do složek x a y. 1 Fa x = − Cx S ρ v 2 cos(α) 2 1 Fa y = − Cx S ρ v 2 sin(α) 2 Po substituci za cos(α) a sin(α) tak, že cos(α) =
vx v
a sin(α) =
vy v
vzniknou rovnice ve
tvaru: 1 Fa x = − Cx S ρ v vx 2 1 Fa y = − Cx S ρ v vy 2
(1) (2)
Newtonův zákon síly říká, že síla je rovna součinu hmotnosti a zrychlení (F = m a). Z toho plyne, že zrychlení se rovná podílu síly a hmotnosti (ax =
Fa x m
; ay =
Fa y m
− g)
Současně také platí, že zrychlení je derivace rychlosti podle času, nebo druhá derivace dráhy podle času. Odpor vzduchu je samozřejmně také závislý na výšce, protože hustota atmosféry se se vzrůstající výškou exponencilně zmenšuje. Atmosféra obsahuje přibližně 78% a 21% kyslíku, se stopovým množstvím dalších plynů, jako je Argon, oxid uhličitý, Neon, Helium a další. Závislost hustoty atmosféry se dá popsat vztahem ρ = ρ0 e− 16
M g y(t) RT
kde ρ0 je hustota atmosféry v nulové výšce, M je molární hmotnost atmosféry, g je gravitační zrychlení, R je univerzální plynová konstanta a T je teplota atmosféry v Kelvinech. Poté je již možné sestavit soustavu diferenciálních rovnic, které představují výsledné pohybové rovnice pro pohyb tělesa v atmosféře, když se nezanedbává odpor vzduchu. ax :=
d2
x(t) dt2
= −
Cx S ρ0 e
−
M g y(t) RT
q
2
2 d x(t) dt
d y(t) +( dt ) ( d x(t) dt )
2m
(3) ay :=
d2 y(t) dt2
= −
Cx S ρ0 e
−
q M g y(t) RT
2
2 d y(t) dt
d y(t) +( dt ) ( d x(t) dt )
2m
−g
Při uvažování odporu vzduchu problém nemá analytické řešení a výsledné pohybové rovnice se musí řešit numericky.
2.4
Coriolisova síla
Pokud se těleso pohybuje v otáčející se nelineární vztažné soustavě tak, že se mění jeho vzdálenost od osy otáčení soustavy, působí na něj setrvačná síla, nazývaná Coriolisova síla. Coriolisova síla má směr kolmý ke spojnici těleso-osa otáčení s způsobuje stáčení trajektorie tělesa proti směru otáčení soustavy. Je pojmenovaná po Gustavu Gaspardovi de Coriolisovi, který se těmito silami v rotujících soustavách zabýval. Výpočet Coriolisovy síly: Fc = −2 m ~v × ω ~ kde Fc je Coriolisova síla, m je hmotnost tělesa, v je rychlost tělesa v neinerciální vztažné soustavě, ω je vektor úhlové rychlosti otáčení soustavy a × označuje vektorový součin. Velikost Coriolisovy síly spočteme jako Fc = −2 m ω v sin(α) kde α je úhel který svírá vektor úhlové rychlosti s vektorem rychlosti.
Rotující povrch Země tvoří vztažnou soustavu a jakákoliv hmota, pohybující se ve směru poledníků, je na severní polokouli stáčena doprava a na jižní polokouli doleva.
17
Obrázek 4: Coriolisova síla
Často se je jako důsledek Coriolisovy síly uvádí různé roztočení víru při vypouštění vany podle toho, zda se nalézáme na severní nebo jižní polokouli Země. V uvažovaném modelu projektilu vystřeleného z protiletadlového kanonu je možné vliv Coriolisovy síly zanedbat, neboť jde, v porovnání se Zemí, o velmi malé vzdálenosti.
18
3
Popis zdrojového kódu animace
V této kapitole je uveden podrobný popis jednotlivých částí a kompletní výpis zdrojového kódu animace.
Zdrojový kód programu je rozdělen na několik částí. V první části jsou vytvořeny pohybové rovnice (3) popisující pohyb tělesa v atmosféře při uvažovaném odporu vzduchu. Postup pro sestavení těchto rovnic je již podrobněji popsán v kapitole 2.3 Výsledné rovnice jsou poté pro další použití uloženy pomocí příkazu save do souboru rovnice.sav.
3.1
Procedura anim
Dále již následuje nejdůležitější část programu, a to procedura anim. Té je nutno předložit 4 parametry (elevační úhel,výška letadla,vzdálenost letadla od kanonu a rychlost letadla), podle kterých se vytvoří požadovaná animace. Aby výpočet mohl proběhnout, je potřeba znát spoustu dalších údajů, zejména součinitel odporu vzduchu, úsťovou rychlost střely, hmotnost střely a hustotu atmosféry. Ta ve skutečnosti není konstantní, ale závislá na výšce, proto je nutné ji zadat jako funkci. Dále jsou definovány počáteční podmínky, potřebné pro řešení pohybových rovnic a samotný výpočet. V další části procedury následují 4 smyčky, které počítají lokální proměnné procedury nutné pro vytvoření animace. 3.1.1
Smyčka MAX-VYSKA
Tato smyčka počítá maximální výšku, kterou je střela schopna dosáhnout při daném elevačním úhlu a vypíše na obrazovku její hodnotu. Smyčka počítá y-ovou souřadnici střely v čase (tt) a porovnává s y-ovou souřadnicí střely v čase tt + iter. To opakuje do té doby, dokud není y-ová souřadnice v čase tt + iter menší, než v čase tt. 3.1.2
Smyčka DOSAZITELNOST VYSKY
Tato smyčka testuje, zda je střela při daném elevačním úhlu schopna dosáhnout výšky letadla. V případě, že střela je schopna dané výšky dosáhnout, vypíše na obrazovku potvrzující zprávu. Pokud střela dané výšky nedosáhne, procedura je ukončena a globální proměná nedoleti je nastavena na true.
19
3.1.3
Smyčka CAS STRELY
V případě, že je střela schopna dosáhnout dané výšky, tato smyčka spočítá čas, za který střela této výšky dosáhne a vypíše ho na obrazovku. 3.1.4
Smyčka ANIMACE
Poslední smyčka provádí samotnou animaci a spočítá čas zpoždění výstřelu od začátku animace tak, aby střela letadlo zasáhla.
3.2
Procedura animace
Tato procedura volá proceduru anim a po zavolání této procedury testuje proměnnou nedoleti. Pokud je hodnota proměnné nedoleti true (střela nedosahne dané výšky), je procedura anim zavolána znovu s defaultními hodnotami.
3.3
Ovládání programu
Ovládání programu je velmi jednoduché, v části označené jako ZADANI HODNOT uživatel vloží čtyři parametry v tomto pořadí: elevace (◦ ); výška letadla (m); vzdálenost letadla od kanonu (m) a rychlost letadla (km h−1 ) Poté se v části SPUSTENI ANIMACE stisknutím klávesy Enter spustí samotná animace.
Na závěr se celá procedura uloží pomocí příkazu save do souboru proc.dat. Pomocí příkazu restart se pro lepší funkčnost animace provede vyčištění interní paměti programu MAPLE a uložená procedura se ze souboru proc.dat znovu načte.
Kompletní zdrojový kód je zobrazen v příloze této práce a uložen na přiloženém CD.
20
3.4
Ukázka z animace
Funkční animace je v elektronické podobě uložena na přiloženém CD. Pro názornost je v tištěné podobě animace zobrazena jako série několika vybraných obrázků. 14000
14000
12000
12000
10000
10000
8000
8000
6000
6000
4000
4000
2000
2000
0
0
2000 4000 6000 8000 10000 12000 14000 16000 18000 20000
14000
14000
12000
12000
10000
10000
8000
8000
6000
6000
4000
4000
2000
2000
0
0
2000 4000 6000 8000 10000 12000 14000 16000 18000 20000
14000
14000
12000
12000
10000
10000
8000
8000
6000
6000
4000
4000
2000
2000
0
0
2000 4000 6000 8000 10000 12000 14000 16000 18000 20000
2000 4000 6000 8000 10000 12000 14000 16000 18000 20000
2000 4000 6000 8000 10000 12000 14000 16000 18000 20000
2000 4000 6000 8000100001200014000160001800020000
Obrázek 5: Schematické znázornění animace
21
4
ZÁVĚR
Ve své práci jsem vytvořil matematický model tělesa pohybujícího se v atmosféře s uvážením odporu vzduchu a změnou hustoty vzduchu v závislosti na výšce. Model vytvořený v prostředí programu Maple je použit k výpočtu trajektorie střely protiletadlového kanonu, která povede k zasažení cíle. V průběhu výpočtu jsou zváženy možnosti zasažení cíle a pokud je zjištěna možnost zásahu je s vyskou přesností určen okamžik výstřelu a sklon hlavně kanonu. Na základě takto stanovených prvků střelby je následně vytvořena počítačová animace, která velmi podrobně znázorní trajektorii střely i cíle až do okamžiku zásahu. V případě, že cíl není možné zasáhnout, vypíše program na obrazovku upozornění a spustí náhradní animaci s náhradními hodnotami, které zásah cíle umožní.
22
5
Použitá literatura
[1] BARTOŇ, S. – HAKL, Z.: Agriculture Kinematics, In GANDER, W. – HŘEBÍČEK, J. Solving problems in Scientific Computing using Maple and Matlab. 4. vyd. Heidelberg: Springer, 2004. s. 399–422. ISBN 3-540-21127-6. [2] BARTOŇ, S. – HAKL, Z. Implicit derivatives in kinematics. In COMATTEX 2004. 1. vyd. Trnava: MTF STUBA, 2004, s. 80–86. ISBN 80-227-2117-4.3. [3] BARTOŇ, S. – HAKL, Z. Matematický popis kinematiky zemědělského mechanismu. In Mendelnet. 1. vyd. Brno: MZLU, 2004, s. 1–8. ISBN 80-7157-723-5.4. [4] BARTOŇ, S: Newton’s and Kepler’s laws, In GANDER, W. – HŘEBÍČEK, J. Solving problems in Scientific Computing using Maple and Matlab. 4.vyd. Heidelberg: Springer, 2004. s. 323–338. ISBN 3-540-21127-6.5. [5] HAKL, Z. Matematické modelování biologických a technologických procesů v zemědělství. Disertační práce. MZLU: MZLU Brno, 2005. 95 s. [6] LOUČKA M.: Návrh algoritmu pro nelineární metodu nejmenších čtverců pro použití v technických aplikacích. Diplomová práce. MZLU v Brně, 2004.
23
6
Příloha
V příloze je vypsán kompletní zdrojový kód programu pro vytvoření animace v programu MAPLE. Tento zdrojový kód je uložen na přiloženém CD v adresáři Maple. > restart: > interface( warnlevel = 0 ): > with(plots): > with(plottools): > > Fa:=-1/2*Cx*S*rho*V^2; > Fax:=Fa*cos(alpha); > Fay:=Fa*sin(alpha); > > Fax:=subs(cos(alpha)=Vx/V,Fax); > Fay:=subs(sin(alpha)=Vy/V,Fay); > > Vx:=diff(x(t),t); > Vy:=diff(y(t),t); > V:=sqrt(Vx^2+Vy^2); > > Ax:=diff(x(t),t,t)=Fax/m; > Ay:=diff(y(t),t,t)=Fay/m-g; > > save Ax,Ay,"rovnice.sav"; > > restart: > with(plots): > with(plottools): > > #PROCEDURA ANIM > anim:=proc(elevace,h,vzdal,v_L_kmh)
24
> global m,g,L,d,Cx,v,S,rho,nedoleti; > local tt,i,g1,p,p1,p2,p3,let,M,R,T,Rho,rho0,Ini,alpha,Ns, y1,y2,iter,test,cas,s_L,v_L: > p:=[]: > read "rovnice.sav": > > g:=9.81: > v:=800.0: > Cx:=0.1: > d:=0.088: > L:=0.6: > Rho:=2500: > S:=evalf(Pi*d^2/4): > m:=S*L*Rho: > v_L:=evalf(v_L_kmh/3.6): > > M:=(28*4/5+32/5)*0.001: > R:=8.315: > T:=293.15: > rho0:=1.3: > rho:=rho0*exp(-M*g*y(t)/R/T); > > #POCATECNI PODMINKY > Ini:=x(0)=0,y(0)=0,D(x)(0)=v*cos(alpha),D(y)(0)=v*sin(alpha): > alpha:=evalf(convert(elevace*degrees,radians)): > Ns:=dsolve(Ini,Ax,Ay,x(t),y(t),numeric); > > #MAX-VYSKA > y1:=0:y2:=1:iter:=0.1:tt:=0.1: >
while y2>y1 do
>
y1:=rhs(Ns(tt)[4]);y2:=rhs(Ns(tt+iter)[4]);
>
tt:=tt+iter;
25
>
od:
> print(cat("Maximalni vyska strely ",convert(y2,string),"m"));
> #ZOBRAZITELNOST VYSKY >
if h
>
print("Vyska strely OK"):
>
test:=true:
>
else
> >
test:=false: fi:
> > #CAS STRELY > if test then >
y1:=0:y2:=1:iter:=0.1:tt:=0.1:
>
while h > rhs(Ns(tt)[4]) do
>
tt:=tt+iter;
>
od:
> print(cat("Strela dosahne vysky letadla za ",convert(tt,string),"s")); > > else >
print ("Strela nedoleti do dane vysky"):
>
print ("Predvede se animace s defaultnimi hodnotami."):
>
print ("elevace=55; vyska letadla=10000m; vzdalenost letadla=20000m; rychlost letadla=600km/h"):
>
print ():
>
nedoleti:=true:return:
> end if; > > cas:=tt; > s_L:=vzdal-rhs(Ns(tt)[2])-v_L*tt; > tt:=0.00001: > p:=[]:
26
> let:=(vzdal-rhs(Ns(cas)[2])-v_L*cas) /v_L
;
> > #ANIMACE > for i from 1 to 101 do >
p1:=plot([[vzdal-v_L*tt,h]],style=point,symbol=circle,symbolsize=20):
>
if vzdal-v_L*tt< rhs(Ns(cas)[2])+v_L*cas then
>
p2:=plot([[rhs(Ns(tt-let)[2]),rhs(Ns(tt-let)[4])]], style=point, symbol=circle, symbolsize=10):
>
else
>
p2:=plot([[0,0]],style=point,symbol=circle,symbolsize=10):
>
fi;
> > p3:=display(p1,p2); > display(p3); > p:=[p[],display(p3)]; > tt:=tt+ (cas+let)/100; > od: > p: > end proc: > > #PROCEDURA ANIMACE > animace:=proc(elevace,h,vzdal,v_L_kmh) >
local temp:
>
temp:=anim(elevace,h,vzdal,v_L_kmh):
>
if nedoleti=true then
>
anim(55,10000,20000,600):
>
else temp:
>
fi:
>
end proc:
> save anim,animace,"proc.dat"; > >
27
> restart: > with(plots): > with(plottools): > read "proc.dat": > > #ZADANI HODNOT > g:=animace(60,18000,20000,900): > #SPUSTENI ANIMACE > display(g,insequence=true,scaling=constrained);
28