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