(1) Hvilken vei drar vi?

N?r man reiser i rommet er det en rekke ting vi m? vite for ? klare ? treffe planeten vi ?nsker. Vi m? av ?penbare grunner vite hvor raketten er, hvilken vei den peker og hvor fort den beveger seg. Man skulle kanskje tro at dette ville v?re enkelt ? finne ut, men det skal vise seg at man m? bruke noen smarte metoder for ? finne det ut. La oss se hvordan dette kan gj?res!

I dag skal vi se litt mer p? raketten mens den er i rommet. Mens vi er p? vei mot planeten vi skal lande p? er det n?dvendig ? vite n?yaktig hvor vi befinner oss til en hver tid, s? vi kan vite hvor langt det er igjen. I tillegg m? vi vite hvilken vei raketten peker for ? v?re sikre p? at vi faktisk drar i den retningen vi ?nsker. I dette blogginnlegget skal vi se p? hvordan vi sikrer at raketten peker i riktig retning.

Rakettens orientering

S? hvordan kan man vite hvilken vei raketten peker? Det er ulike m?ter ? gj?re det p?, men en m?tene er ? ta s?kalte referansebilder og sammenligne med. S? hvordan gj?res dette, og hvorfor har vi valgt akkurat denne metoden?

Vi kan begynne med en analogi. Se for deg at du tar et bilde av et tre s?nn at det er midt i bildet, og s? snur deg litt mot h?yre og tar ett nytt bilde. I bilde nummer to vil man se at treet har flyttet seg mot venstre. Dersom man har de to bildene, og vet rekkef?lgen de ble tatt i kan man konkludere med at du m? ha snudd deg mot h?yre. I figur 1 kan du se et eksempel p? to slike bilder.

Figur 1. Bilder av et tre tatt fra samme posisjon, men med ulik vinkel. Dersom vi vet rekkef?lgen bildene er tatt i kan vi finne ut hvor mye vi har snudd oss.

P? akkurat samme m?ten kan man konkludere med om raketten har snudd seg eller ikke. Her bruker vi i stedet stjernehimmelen som referanse. Dersom raketten ikke snur seg b?r stjernene p? himmelen heller ikke flytte p? seg i de ulike bildene. Hvis de gj?r det kan vi finne ut hvor mye raketten har snudd seg. Men her tenker du kanskje: raketten flytter seg jo framover, s? da burde vel ogs? stjernene flytte p? seg i bildet uavhengig av om den roterer? Da har du i s? fall helt rett, men det er viktig ? huske p? at stjernene er veldig langt unna, s? forflytningen av raketten vil utgj?re en veldig liten forskjell. Dermed vil forflytningen p? bildene v?re minimal, og vi velger derfor ? behandle stjernehimmelen som at den er konstant.

Et annet godt sp?rsm?l er hvordan i alle dager vi f?r tak i slike referasnebilder, og hvordan de fungerer? M?ten vi f?r tak i bildene er at vi har en satellitt som g?r rundt hjemplaneten v?r. Denne tar ulike bilder p? veien rundt som blir satt sammen til et fullstendig bilde av himmelsf?ren. Vi kaller stjernehimmelen for himmelsf?ren fordi n?r man ser p? himmelen vil det framst? som at vi ser innsiden av et kuleskall. i Figur 2 kan du se litt hvordan det fungerer. 

Figur 2. Her kan du se jorden som roterer om sin egen akse med himmelsf?ren rundt. De hvite punktene representerer fjerne stjerner. Hentet fra Wikipedia.

For ? lage referansebildene m? vi tolke dataene som kommer fra satellitten. Den sender oss filer som inneholder et bilde av nattehimmelen, men det er ikke et vanlig bilde. Det er en sf?risk RGB-representasjon av himmelen. Dette betyr at bildet representerer hele himmelsf?ren rundt jorden, og hver piksel i bildet tilsvarer en bestemt posisjon p? denne sf?ren. Disse posisjonene er gitt ved koordinatene \(\theta\) og \(\phi\). RGB-representasjon vil si at hver piksel vil ha tre verdier: en som sier hvor gr?nn den er, en for hvor r?d den er og en for hvor bl? den er. Dette kan fortelle oss n?yaktig hvilken farge en piksel har. Husk at r?d, gr?nn og bl? er prim?rfargene i lys.

Hver piksel i bildet har informasjon om fargen p? den delen av himmelen. Fargen er gitt som tre heltall som representerer mengden av r?dt, gr?nt og bl?tt lys. Hver piksel har en vektor med fem ulike tall, men det er kun de tre siste som brukes. De tre fargene, R (r?d), G (gr?nn) og B (bl?), hentes fra indeksene 2, 3 og 4 for hver piksel.

Sf?riske koordinater

Men her snakker vi om koordinatene \(\theta\) og \(\phi\), hva betyr egentlig det, tenker du kanskje? Gjennom matematikken s? langt har du nok mange ganger v?rt borte i det s?kalte kartesiske koordinatsystemet der du har en x-akse og en y-akse, og noen ganger en z-akse. Det kartesiske koordinatsystemet er faktisk ikke det eneste koordinatsystemet. Det eksisterer en rekke andre koordinatsystemer som kan v?re enklere ? bruke i noen situasjoner. I Dette tilfellet brukes det sf?riske koordinatsystemet. Ganske passende navn ettersom vi skal se p? himmelsf?ren. 

Da kan vi ta et lynkurs i sf?riske koordinater. Hovedidéen med dette koordinatsystemet er ? beskrive posisjonen til noe som hvor noe er plassert innenfor en eller annen kule. S? hva betyr det? Origo vil alltid v?re i midten av denne kulen. Vi har tre koordinater: \(r\)\(\theta\) og \(\phi\)\(r\) beskriver avstanden fra origo. Dersom vi har en pil inne i kulen som er like lang som avstanden til punktet er det ganske logisk at vi kan f? pilen til ? treffe punktet hvis vi roterer kulen. Som vi vet vil det v?re to uavhengige retninger kulen kan roteres i, og kombinasjonen av disse kan gi alle mulige orienteringer av kulen. For ? beskrive denne rotasjonen bruker vi de to andre koordinatene. \(\theta\) beskriver da vinkelen vi har rotert kulen med i vertikal retning, og \(\phi\)beskriver hvor mye kulen er rotert i horisontal retning. I figur 3 kan du se hvordan dette se hva de ulike koordinatene uttrykker.

Figur 3. Her kan du se en sf?re med sentrum i origo. Vi ser at alle punkter inne i kulen kan beskrives ved en vektor med en gitt lengde som roteres rundt inne i kulen. I tillegg ser vi at alle punkter har tilh?rende kartesiske punkter. Hentet fra Wikipedia.

N? har jeg beskrevet det som at det er kulen som har rotert, men dette vil v?re helt ekvivalent med at kulen st?r stille og at et punkt p? den forflytter seg. Dersom man har et punkt som ligger inne i kulen kan man beskrive n?yaktig posisjon ved ? se p? de tre koordinatene. Dersom vi ser for oss at alt vi ser p? ligger p? et kuleskall kan vi se bort i fra \(r\)-koordinaten. Siden alle stjernene p? himmelen ligger s? langt unna velger vi ? behandle stjernehimmelen som et kuleskall, og tar bare hensyn til vinklene. 

Projeksjering av stjernehimmelen

Som jeg nevnte tidligere s? ser vi p? himmelen som en sf?re. Da er jo sp?rsm?let hvordan vi projekserer dette over til et flatt bilde. Det er ganske ?penbart at et vanlig kamera ikke vil v?re i stand til ? ta et enkelt bilde som dekker hele himmelsf?ren, s? derfor ?nsker vi ? finne ut de st?rste og minste verdiene for x og y i bildet. Dette henger sammen med kameraets FOV, alts? synsvinkelen til kameraet. Denne vil best? av to vinkler: en som spenner ut synsfeltet i horisontal retning, og en som spenner ut synsfeltet i vertikal retning.

La oss begynne med ? se p? hvordan vi finner maks og minimums-verdien til x og y. Vi kan begynne med ? se p? projeksjonen. La oss f?rst se p? stereografisk projeksjon og hva det er. Stereografisk projeksjon er en m?te ? beregne hvor et punkt som ligger p? kuleskallet skal legges i planet n?r vi konverterer bildet. Vi kan begynne helt fra begynnelsen av for ? f? en god forst?else av hvordan dette fungerer. 

Vi begynner med ? definere en enhetskule, alts? en kule med radius 1. P? denne vil "nordpolen" ligge i \(N(0,0,1)\). Videre kan vi la et punkt p? kuleskallet v?re gitt ved \(P(x,y,z)\). Til slutt kan vi kalle punktet som \(P\) projekseres til i planet kalles \(P'(X,Y)\). Her skal da linjen \(NP\) g? igjennom \(P'\). Planet er gitt ved \(-z\) og kutter kulen i sydpolen \(S(0,0,-1)\). I figur 4 kan du se hvordan punktene vil projeksjeres over p? planet.

Figur 4. Her ser vi hvordan punkter p? kuleskallet projeksjeres fra sirkelbuen over p? planet.

N? kan vi se litt p? konvertering av koordinater mellom koordinatsystemer. I figurene under kan du se hvordan man skifter mellom sf?riske og kartesiske koordinater. Vi har f?lgende ligniner:

  1. \(x=\sin(\theta)\cos(\phi)\)
  2. \(y=\sin(\theta)\sin(\phi)\)
  3. \(z=\cos(\theta)\)

Egentlig skal alle koordinatene ganges med avstanden \(r\), men siden vi her jobber med en enhetskule vil denne v?re \(1\)

Figur 5. Her kan du se vektorpilen som representerer \(r\) som ligger i xz-planet. Her ser vi at "h?yden" z danner hosliggende katet i trekanten som dannes. Dersom vi ogs? tar med y-retningen endrer det ingenting for hvordan vi konverterer.
Figur 6. Her kan du se vektoren i rommet. Som vi ser dannes det to trekanter. Den ene ligger kun i xy-planet, og den andre ligger i utenfor planet. Den f?rste trekanten har en motst?ende katet som ligger i planet. Denne er gitt ved \(r\sin(\theta)\). Denne danner hypotenusen i trekanten i planet. Da kan vi gange med \(cos(\phi)\) for ? f? hosliggende katet, og x-koordinaten. Samme framgangsm?te for y, men her tar vi \(\cos({\pi\over2}-\phi)=\sin(\phi)\).

Videre kan vi definere projeksjonene p? planet gitt ved \(X={x\over{1-z}}\) og \(Y={y\over{1-z}}\). Denne projeksjonen kan vises ved hjelp av de formlike trekantene som oppst?r n?r vi ser p? punktene \(N\)\(S\)\(P\) og \(P'\). Her er det egentlig bare ? sette inn uttrykkene for \(x\)\(y\) og \(z\). Da f?r man f?lgende uttrykk:

  1. \(X={\sin(\theta)\cos(\phi)\over{1-\cos(\theta)}}\)
  2. \(Y={\sin(\theta)\sin(\phi)\over{1-\cos(\theta)}}\)

Som jeg nevnte tidligere s? spenner kameraet ut en vinkel i b?de horisontal og vertikal retning. Den som spenner ut vinkelen i horisontal retning kan vi kalle \(\phi\), og den som spenner ut vinkelen i vertikal retning kan vi kalle \(\theta\). Fra det kan vi definere vinklene

  1. \(\alpha_{\phi}=\phi_{max}-\phi_{min}\)
  2. \(\alpha_{\theta}=\theta_{max}-\theta_{min}\)

Ved hjelp av noen trigonometriske identiteter kan vi komme fram til at dette sammen med ligningene for \(X\) og \(Y\) gir 

  1. \(X_{max/min}=\pm{{2\sin(\alpha_\phi/2)}\over{1+\cos(\alpha_\phi)}}\)
  2. \(Y_{max/min}=\pm{{2\sin(\alpha_\theta/2)}\over{1+\cos(\alpha_\theta)}}\)

Da har vi sett litt p? hvor store bildene vil bli, og vi kan se videre p? genereringen av bildene. For at dette blogginnlegget ikke skal bli for langt kan du lese mer om det i neste blogginnlegg.

Av Simon Berg, Marius Torsheim
Publisert 17. okt. 2023 20:23 - Sist endret 17. okt. 2023 20:27