(3) Generalisert oppskytningskode

I f?rste blogginnlegg klargjorde vi til oppskytning av raketten og lagde en simulering av en oppskytning. N? som vi ogs? har simulert planetbanene m? vi gj?re noen sm? endringer i metoden for ? kunne bruke denne sammen med oppskytningen. 

Figur 1. Oppskytningsstedet for en Soyuz-rakett. Hentet fra NASA.

Endring av enheter

I den f?rste simuleringen av oppskytningen brukte vi SI-enheter, men siden programmet for planetbanene v?re tar utgangspunkt i AU-enheter, slik som AU for distanse og ?r for tid, vil det v?re en fordel ? bytte til dette for at de skal virke sammen. Dette gj?res ved hjelp av funksjoner i ast2000tools-pakken som vi benytter for ? gj?re ulike beregninger.

Generalisering av starttid

I simuleringen av oppskytningen i f?rste blogginnlegg tok vi utgangspunkt i at oppskytningen skjedde ved tiden \(t=0\). Men det er jo ikke sikkert at det er den optimale tiden ? skyte opp p?. Derfor ?nsker vi ? kunne skyte opp p? et annet tidspunkt. Men det er jo ikke alle tidspunkter det er like interessant ? skyte opp p?. For eksempel vil det gi lite mening ? skyte opp raketten n?r planetene er p? hver sin side av stjernen. Derfor har vi fors?kt ? finne ut n?r planeten vi skal lande p? befinner seg n?rmest planeten vi reiser fra. For ? gj?re det har vi brukt to vektorer med posisjoner  for de to planetene og en tilh?rende vektor med tidspunktene for posisjonene. S? finner vi indeksen p? vektorene n?r avstanden mellom de er minst, og samme indeks p? vektoren for tiden gir tidspunktet for dette. Dette kan gi oss en indikasjon p? n?r det vil v?re best ? skyte opp. Dermed kan vi velge et starttidspunkt senere.

Generalisering av startposisjon

Tilsvarende som med tiden for oppskytningen tar simuleringen i f?rste blogginnlegg utgangspunkt i en gitt posisjon for oppskytningen. Her vil det ogs? v?re en fordel ? kunne velge posisjonen selv. Det er heller ikke her n?dvendig ? kunne velge posisjonen helt vilk?rlig. Det vil for eksempel gi lite mening ? skyte opp raketten fra motsatt side av der planeten vi skal lande p? er. Vi ?nsker ? sikre at raketten kun skytes ut n?r raketten peker vekk fra stjernen. For ? gj?re det bruker vi en test som anvender skalarprodukt for ? sjekke at vektoren som peker fra raketten og ut fra planeten er parallell og motsatt rettet som vektoren mot stjernen. Dersom cosinus til vinkelen mellom dem er \(-1\) vil det bety at de er motsatt rettet slik du ser i figur 1.

Figur 2. Her kan du se posisjonen til raketten n?r den kan skytes ut. Vi har valgt at det kun kan skje n?r vektoren som peker ut fra der raketten st?r og vekk fra planeten er parallell og motsatt rettet av vektoren fra raketten til stjernen.

Da har vi generalisert litt og gjort oss mer klare til oppskytningen. Neste gang skal vi ser mer p? raketten i rommet, eller mer spesifikt: posisjon, hastighet og orientering.

Av Simon Berg, Marius Torsheim
Publisert 6. okt. 2023 00:42 - Sist endret 6. okt. 2023 00:44