Celesta Objekt
I den här uppgiften skall du tillämpa dina kunskaper i objektorienterad programmering. Du
skall skapa ett program som viser våra närmaste planeters ställning i planetsystemet vid en
godtycklig tidpunkt.
Den första matematiska beskrivningen av
planetbanorna gjordes av Kepler på basis av de
mångåriga observationer som Tycho Brahe genomför
vid sitt observatorium Stjärneborg på Ven. Kepler
kunde där visa att planeterna rör sig i elliptiska banor
runt solen. Att solen utgör planetsystemets centrum
hade Kopernikus föreslagit redan år 1543.
Excentriciteten (avvikelsen från en cirkel) är dock
mycket liten, endast några procent, varför Brahes
experimentella observationer är beundransvärda.
För att inte tynga uppgiften med matematiska detaljer
approximerar vi planetbanorna med cirklar. Vi låter
även alla planetbanor ligga i samma plan, vilket också
är nästan sant. Många av planeterna har månar, men
de bortser vi ifrån.
Utför en objektanalys av problemet och bestäm vilka
klasser som behövs för att beskriva solsystemets
objekt. Bestäm dig för vilka publika och privata
variabler och funktioner som behövs för klassen
Planet. Glöm heller inte att definiera klassens
konstruktor så att du utifrån klassen kan instansiera de
olika planeterna.
Tycho Brahes murkvadrant i Stjärneborg
Excentricitet
i procent
Avst. till solen
miljoner km
Omloppstid
dygn
massa
kg
0-vinkeldatum
Venus
0,7
108,22
224,7
4,87*1024
8 juni
Tellus
1,7
149,6
365,25
5,97*1024
-
Mars
9,3
227,9
686,98
6,42*1023
22 sept*
Jupiter
4,8
778,52
4332,75
1,9*1027
5 mars
Saturnus
5,5
1514,5
10759,2
5,68*1026
1 jan
Namn
För att kunna ange planeternas positioner i sina banor måste man känna till deras positioner
vid en given tidpunkt. Det anger jag genom att i tabellen ange det datum år 2004 då jorden
och planeten stod i linje med solen, dvs hade samma vinkel i sin omloppsbana. Mars stod
dock aldrig i samma vinkel som jorden under år 2004, varför datum för 180 grader istället
anges. Det blir väldigt krångligt att försöka räkna ut vilken vinkelsom skall ingå i uttrycket
för planetens koordinater. Pröva dig därför fram tills det stämmer.
2008-05-29
1(3)
ÓPN
Instansiera planeterna och rita upp deras planetbanor i en graf. Vid anropet av konstruktorn
använder du dig av planetdata ur tabellen här ovan.
Ditt program skall även innehålla en scrollbar med vilken man kan förflytta sig fram och
tillbaka i tiden. I ett fönster visas datum för den tidpunkt vars planetkonstellation visas i
grafen. Vidare skall ditt program innehålla ett fönster där du kan mata in ett nytt datum, och
där det aktuella datumet visas.
Med en meny skall man kunna välja tidsstegen vid animeringen till ett dygn, en vecka, en
månad eller ett år per sekund. Man skall kunna starta och stoppa animeringen med en knapp.
Under animeringen skall programmet kontinuerligt uppdatera planetbilden en gång per
sekund med de tidssteg som man valt.
Du skall kunna zooma in och ut ur bilden för att kunna detaljstudera de inre planeterna.
2008-05-29
2(3)
Celesta Objekt
Utökning av planetuppgiften
När du fått ditt program att fungera i grundversionen skall du göra två tillägg. Med en
checkbox skall man kunna välja mellan att ha endera solen i centrum för planetbanorna
(Helio-Centriskt system) eller jorden. När man ritar planetbanorna med solen i centrum
kommer planeterna att gå runt i (nästan) cirkulära banor. Om man däremot placerar jorden i
origo kommer det att se ut som att planeterna går runt i en spiral i sina banor. Spiralen
uppkommer ju av att vårt origo hela tiden rör sig i en egen bana.
Du räknat ut planeterna positioner på samma sätt som i det helio-centriska systemet, men när
du skall rita ut dem drar du bort jordens koordinater från planeternas och får därmed
planeternas koordinarer relativt jorden i stället.
Det andra tillägget skall vara att man, med en checkbox, kan välja att behålla planeternas
lägen utritade så att man får ett spår av planetbanan. Det gör det mycket lättare att se de
skenbart spiralformade planetbanorna som man får när man sätter jorden i centrum.
2008-05-29
3(3)
ÓPN