Il lavoro riguarda l’esame Progetto di Sistemi Informatici, ordinamento didattico 509, per l’anno accademico 2008/2009 del corso di studi di Laurea Magistrale in Ingegneria Informatica presso l’Università degli Studi di Roma Tre.
In questa sezione è presentato il lavoro svolto, attraverso la raccolta del materiale utilizzato per il suo sviluppo e compimento.
Il sistema solare è il sistema planetario costituito dai vari oggetti celesti mantenuti in orbita dalla forza di gravità del Sole; vi appartiene anche la Terra. È costituito da otto pianeti, dai rispettivi satelliti naturali, da cinque pianeti nani e da miliardi di corpi minori. Quest’ultima categoria comprende gli asteroidi, in gran parte ripartiti fra due cinture asteroidali (la fascia principale e la fascia di Kuiper), le comete, le meteoroidi e la polvere interplanetaria.
In modo schematico, il sistema solare è composto dal Sole, dai quattro pianeti rocciosi interni, dalla fascia principale degli asteroidi, dai quattro giganti gassosi esterni, dalla cintura di Kuiper, dal disco diffuso e dalla ipotetica nube di Oort, sede di gran parte delle comete.
Il vento solare, un flusso di plasma e particelle cariche proveniente dal Sole, permea l’intero sistema solare. Questo crea una bolla nel mezzo interstellare conosciuta come eliosfera, che si estende fino oltre alla metà del disco diffuso.
In ordine di distanza dal Sole, gli otto pianeti sono: Mercurio, Venere, Terra, Marte, Giove, Saturno, Urano e Nettuno.
A metà 2008 cinque oggetti del sistema solare sono stati classificati come pianeti nani: Cerere, situato nella fascia degli asteroidi, ed altri quattro corpi situati al di là dell’orbita di Nettuno, Plutone (in precedenza classificato come il nono pianeta), Haumea, Makemake, e Eris.
Sei dei pianeti e tre dei pianeti nani hanno in orbita attorno ad essi dei satelliti naturali; inoltre tutti i pianeti esterni sono circondati da anelli planetari, composti di polvere ed altre particelle.
E' facile notare che i concetti di anno e giorno sono relativi nell’universo. Un dato particolarmente interessante è stato riscontrato sul pianeta Venere il quale ruota in verso opposto (così come anche Urano) rispetto agli altri pianeti e un suo giorno dura più che un suo anno. D’ora in avanti è importante parlare in termini precisi e servono degli assiomi, pertanto quando si parlerà di giorni e di anni si intenderanno quelli terrestri. Si ricorda che per periodo di rotazione si intende l’arco di tempo necessario per compiere un giro completo su se stesso e per periodo di rivoluzione l’arco di tempo necessario per percorrere un giro intorno al sole. I dati che seguono sono stati raccolti da diverse fonti.
L’eclittica è il cammino apparente che il Sole traccia nel cielo durante l’anno. Mentre sembra muoversi nel cielo in relazione alle stelle, il cammino apparente si allinea con i pianeti nel corso dell’anno. L’eclittica, più esattamente, è l’intersezione della sfera celeste con il piano d’orbita terrestre (piano eclittico). Può anche pensarsi come un cerchio massimo della sfera celeste percorsa dal Sole nel suo apparente moto annuo. Il piano d’orbita terrestre è il piano geometrico su cui giace l’orbita della Terra ed è anche chiamato piano dell’eclittica. Il nome eclittica deriva da eclissi, poiché le eclissi di Sole avvengono naturalmente su di essa. Il piano eclittico andrebbe distinto dal piano eclittico invariabile, che è perpendicolare alla somma vettoriale dei momenti angolari di tutti i piani orbitali planetari, di cui Giove è il principale contributore. Attualmente il piano eclittico è inclinato rispetto al piano eclittico invariabile di circa 1,5°.
Inclinazione assiale è un termine astronomico che si riferisce all’angolo di inclinazione dell’asse di rotazione di un pianeta in rapporto al suo piano orbitale.
Un pianeta il cui asse di rotazione è perpendicolare al piano dell’orbita ha un’inclinazione assiale di 0°. Nel nostro sistema solare, il piano orbitale della Terra è noto come piano dell’eclittica.
La Terra ha un’inclinazione assiale di 23° 27'. È inclinata nella stessa direzione per tutto l’anno. Tuttavia, dato che la Terra orbita attorno al Sole, l’emisfero inclinato verso il Sole gradualmente viene a trovarsi in direzione opposta, e viceversa. Questa è la causa principale dell’alternarsi delle stagioni. Quando un emisfero è inclinato verso il Sole ha giorni più lunghi e notti più corte. L’inclinazione assiale non solo causa il variare delle ore di luce, ma provoca anche l’angolazione con cui la luce colpisce la terra, più verticale in estate, meno in inverno.
Rotazione La Terra ruota su se stessa, compiendo un giro completo (360°) in circa 24 ore (arrotondando per eccesso). Ogni ora quindi il nostro pianeta ruota per 1/24 di angolo giro e quindi 15°. E' basandosi su questo che sono stati ideati i 24 fusi orari di ampiezza 15°. Inoltre l’asse di rotazione è inclinato, come detto sopra, di poco più che 23° (vedere l’immagine 2).
Rivoluzione La Terra compie nell’arco di 365 giorni e un quarto (da qui la necessità dell’anno bisestile) una rivoluzione completa intorno al Sole. Questo determina le stagioni, in relazione anche all’inclinazione dell’asse terrestre, che permetterà ad esempio all’emisfero nord di essere rivolto verso il sole a partire dal 21 giugno e all’emisfero sud di esserlo a partire dal 21 dicembre. Questo genera l’estate e le altre stagioni di conseguenza, nei due emisferi.
Precessione degli equinozi L’asse di rotazione (inclinato) vacilla a causa della forza di gravità del Sole. Per completare questo percorso conico dell’asse occorrono 26000 anni. Per effetto di questo, tra circa 12000 anni, l’asse punterà verso la stella Vega, che sarà pertando la stella polare dei nostri discendenti. Per visualizzare questo movimento basta semplicemente immaginarsi, nell’immagine 2, una rotazione dell’asse di rotazione intorno all’asse perpendicolare all’orbita.
Movimento galattico Infine l’ultimo movimento dei quattro fondamentali del pianeta Terra riguarda il fatto che la nostra galassia compie una rivoluzione, attorno al proprio centro, ogni duecento milioni di anni.
Le orbite sono tutte complanari, tranne quella della Luna e di Plutone rispetto all’eclittica: la prima è inclinata di 5° 19' ossia di 5.033° in valore decimale; la seconda di 17.14°. Tutto ciò è apprezzabile nell’applicazione sviluppata.
Orbite ellittiche ma quasi circolari
Sul sito http://www.itnautico.it è stato trovato un articolo interessante che riguarda la forma delle orbite e in particolare seguono i passaggi più importanti:
Keplero lavorò con Tycho Brahè e continuò la sua opera. Studiò a lungo i dati delle sue osservazioni astronomiche e nel 1609, otto anni dopo la morte di Tycho, riuscì a stabilire che le orbite dei pianeti sono ellittiche, anziché circolari, e a definire le tre famose leggi.
La scoperta ha talmente impressionato l’immaginario collettivo che per evidenziare la forma ellittica, anchei nostri giorni, l’orbita terrestre è spesso rappresentata con un’eccentricità esagerata
I dati però evidenziano che alcune orbite hanno in realtà un’eccentricità veramente piccola così da poter essere approssimate molto bene con dei cerchi. Infatti, definendo l’eccentricità come rapporto tra la distanza dei fuochi e l’asse maggiore dell’ellisse […]
Ad esempio se volessimo disegnare l’orbita terrestre con l’asse maggiore di un metro, i due fuochi disterebbero appena di 1.67 cm e l’asse minore misurerebbe 99.986 cm.
Si elencano qui di seguito i dati scientifici presi, ancora una volta, da Wikipedia
Terra: 0.0167. Nel tempo, l’eccentricità dell’orbita terrestre varia lentamente, passando da quasi 0 a circa 0.05 come risultato dell’attrazione gravitazionale tra i pianeti.
Altre eccentricità importanti sono: Luna 0.0554, Mercurio 0.2056, Venere 0.0068, Marte 0.0934, Giove 0.0483, Saturno 0.0560, Urano 0.0461, Nettuno 0.0097, Plutone 0.2488
Si è giunti dunque alla conclusione che la non apprezzabilità a occhio delle differenze importate dalla forma ellittica delle orbite porta alla semplificazione di utilizzare orbite perfettamente circolari.
Raggio equatoriale 695 500 000 Km
Periodo di rotazione variabile come tutte le stelle, ma circa 27 giorni
Raggio equatoriale 2439.6 Km
Periodo di rotazione 58 giorni
Periodo di rivoluzione 0.241 anni
Distanza media dal sole 57.91 milioni di Km
Inclinazione assiale 0.01° circa
Raggio equatoriale 6051.85 Km
Periodo di rotazione -243 giorni (rotazione inversa rispetto agli altri pianeti)
Periodo di rivoluzione 0.615 anni
Distanza media dal sole 108 milioni di Km
Inclinazione assiale 177.4°
Raggio equatoriale 6378.388 km
Periodo di rotazione 1 giorno circa
Periodo di rivoluzione 1 anno circa
Distanza media dal sole 149.6 milioni di Km
Inclinazione assiale 23.439°
Citando ancora Wikipedia: poiché il periodo di rotazione della Luna è esattamente uguale al suo periodo orbitale, noi vediamo sempre la stessa faccia della Luna, rivolta verso la Terra. Questa sincronia è il risultato della frizione gravitazionale che ha rallentato la rotazione della Luna nella sua storia iniziale. A causa di queste forze, dette anche forze di marea, anche la rotazione della Terra' viene gradualmente rallentata, e la Luna si allontana lentamente dalla Terra mentre il momento rotazionale di quest’ultima viene trasferito al momento orbitale della Luna. L’attrazione gravitazionale che la Luna esercita sulla Terra è la causa delle maree del mare. Le variazioni della marea sono sincronizzate con l’orbita della Luna attorno alla Terra.
Rispetto agli altri satelliti del sistema solare, la Luna è eccezionalmente grande rispetto al pianeta attorno a cui orbita, tanto che il sistema Terra-Luna può essere quasi considerato un pianeta doppio ("quasi" perché il centro di gravità del sistema Terra-Luna è comunque di poco all’interno della Terra). In genere, satelliti di dimensioni a lei comparabili orbitano attorno ai giganti gassosi (Giove, Saturno), mentre i pianeti più affini alla Terra o non hanno satelliti (Venere) o ne hanno di minuscoli (Marte).
Raggio equatoriale 1738 Km
Periodo di rotazione rotazione sincrona, ossia uguale al suo periodo di rivoluzione
Periodo di rivoluzione attorno alla terra 27.3 giorni
Distanza media dalla terra 385104 Km circa
Inclinazione assiale 1.5424°
Il piano dell’orbita della Luna è inclinato di 5°19' rispetto a quello dell’orbita della Terra intorno al Sole (il piano dell’eclittica)
Raggio equatoriale 3402.45 Km
Periodo di rotazione 1.03 giorni
Periodo di rivoluzione 1.881 anni
Distanza media dal sole 227.94 milioni di Km
Inclinazione assiale 25.19°
Raggio equatoriale 71492 Km
Periodo di rotazione 0.41 giorni
Periodo di rivoluzione 11.87 anni
Distanza media dal sole 778.4 milioni di Km
Inclinazione assiale 3.13°
Raggio equatoriale 60268 Km
Periodo di rotazione 0.43 giorni
Periodo di rivoluzione 29.45 anni
Distanza media dal sole 1426.98 milioni di Km
Inclinazione assiale 26.73°
Raggio equatoriale 25559 Km
Periodo di rotazione -0.718 giorni (rotazione inversa rispetto agli altri pianeti)
Periodo di rivoluzione 84.07 anni
Distanza media dal sole 2870 milioni di Km
Inclinazione assiale 97.77°
Raggio equatoriale 24764 Km
Periodo di rotazione 0.672 giorni
Periodo di rivoluzione 164.9 anni
Distanza media dal sole 4497 milioni di Km
Inclinazione assiale 28.32°
Raggio equatoriale 1153 Km
Periodo di rotazione -6.387 giorni
Periodo di rivoluzione 248.09 anni
Distanza media dal sole 5900 milioni di Km
Inclinazione assiale 122.54°
Il piano dell’orbita di Plutone è inclinato di 17.14° rispetto al piano dell’eclittica
Il progetto ha l’obiettivo di realizzare un sistema di navigazione del Sistema Solare tramite librerie OpenGL e GLUT.
Il modello è composto da:
Il cielo stellato
Il Sole
Gli 8 pianeti + Plutone
La Luna che ruota intorno alla Terra
Le orbite di rivoluzione
Una griglia
Per aumentare la coesione e la manutenibilità delle componenti software, il progetto è suddiviso in 4 files:
opengl.c è il file sorgente contenente il punto di ingresso dell’intero programma di grafica. Contiene tutte le funzioni OpenGL necessarie a disegnare il modello in ogni sua parte.
variables.h è l’header contenente la definizione di tutte le variabili e delle costanti usate nell’applicazione
lights_materials_texture.h è l’header contenente le funzioni necessarie per inserire luci, materiali e texturing.
primitives.h è l’header contenente le funzioni di disegno di alcune primitive geometriche
glutInitDisplayMode(GLUT_DEPTH | GLUT_RGBA | GLUT_DOUBLE)
glutInitWindowSize(1280,800)
glutInit(&narg, args)
glutCreateWindow("3D Solar System in OpenGL by AXEL & GIACOMO")
glutDisplayFunc(display)
glutReshapeFunc(reshape)
glutMotionFunc(motion)
glutKeyboardFunc(keydown)
glutSpecialFunc(special)
glutMouseFunc(mouse)
glutIdleFunc(idle)
glutTimerFunc(100,timerSun,0)
glEnable(GL_NORMALIZE)
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LESS)
glClearColor(0.0f, 0.0f, 0.0f, 1.0f)
glNormal3f()
glBegin() glEnd() paramteri utilizzati di glBegin() sono stati GL_LINE_LOOP, GL_QUADS e GL_POINTS
glTexCoord2f(s,t)
glVertex3f(x,y,z)
glDisable()
glEnable() alcuni parameteri sono stati GL_DEPTH_TEST, GL_TEXTURE_2D, GL_FOG
glRotatef(angle,x,y,z)
glScalef(x,y,z)
glTranslatef(x,y,z)
glBindTexture(GL_TEXTURE_2D,texture_id)
lGenTextures(GLsizei n,GLuint *textures)
gluBuild2DMipmaps(GLenum target,GLint internalFormat,GLsizei width,GLsizei height,GLenum format,GLenum type,const void * data)
glPushMatrix()
glPopMatrix()
glColor4f(R,G,B,A)
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, vector)
glLightfv(GL_LIGHTn, feature, feature_vector)
glShadeModel(GL_SMOOTH)
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE)
glFogfv(GL_FOG_COLOR, fogColor)
glHint(GL_FOG_HINT, GL_NICEST)
glFogi(GL_FOG_MODE, GL_LINEAR)
glFogf(GL_FOG_START, 0.0f)
Il programma comincia inizializzando correttamente lo schermo e settandone i parametri tramite alcune librerie GLUT sopra elencate. Successivamente viene creato uno sfondo nero, registrate le funzioni di callback di GLUT per la gestione degli eventi, caricate in un array tutte le textures necessarie e avviato il glutMainLoop().
La funzione di disegno display() è la responsabile del disegno di qualunque cosa all’interno della finestra. Si occupa essenzialmente di posizionare e orientare la camera con gluLookAt(), operare scalamenti e rotazioni al modello con glScalef() e glRotatef() rispettivamente, e di disegnare il cielo e tutti i componenti del sistema solare con le funzioni renderSkyBox() e drawSolarSystem(). Si occupa anche di gestire il modo in cui viene applicato il texturing, in modo tale che possa essere cambiato a tempo di esecuzione. Ricordiamo infatti che essendo le funzioni di callback chiamate continuamente dal glutMainLoop() (tranne la glutTimerFunc che vedremo fra poco) lo stato di OpenGL può essere cambiato dinamicamente durante l’esecuzione del programma.
La funzione drawSolarSystem() esegue la chiamata a tutte le funzioni responsabili del disegno, quindi drawSun(), drawPlanets(), drawMoon(), drawPluto(), drawRevolutionRings() e drawGrid(). A tutte queste funzioni vengono applicate due modeling transformations, una per la rotazione intorno all’asse z necessaria per dare l’effetto che la telecamera ruoti intorno ai pianeti, l’altra per la traslazione lungo z per dare l’effetto che la telecamerca venga traslata lungo l’asse z stesso.
Il problema principale è stato creare il cielo stellato. Ben consapevoli che uno sfondo nero con tantissime primitive puntiformi sarebbe stata una scelta poco efficiente, è stato scelto di creare il cosiddetto skybox, o scatola del cielo come evidenzia la traduzione dall’inglese. E' stata creata una vera e propria scatola, ovvero un cubo costruito con la primitiva ‘glBegin(GL_QUADS)` applicata 6 volte, una per ogni faccia del cubo. Ad ogni faccia è stata opportunamente applicata la funzione di texture mapping loadTexture, nonché una normale distinta per ogni faccia tramite glNormal3f() per ottenere una corretta illuminazione del cielo. Il texuring con l’immagine del cielo ha reso possibile una rappresentazione estremamanete realistica del cielo stellato nello spazio. E’ importante notare che subito prima di disegnare il cielo stesso è stata disabilitata la profondità con glDisable(GL_DEPTH_TEST) per far sì che il sistema solare, da disegnare all’interno del cielo, avesse come sfondo il cielo stesso, a prescindere dalle trasformazioni applicate dall’utente visitatore. Finito il disegno del cielo, è stata riabilitata la profondità con glEnable(GL_DEPTH_TEST).
La rappresentazione del Sole e dei pianeti ha uno schema di funzionamento molto simile, quindi la spiegazione seguente varrà per tutti indistintamente, a meno della differente texture applicata, del raggio di ogni pianeta, del suo raggio e velocità di rotazione e di rivoluzione e, per finire, dell’asse di inclinazione di ogni pianeta. Tutte queste caratteristiche sono state inserite nell’header variables.h e rispecchiano i dati scientifici che abbiamo raccolto in fase di progettazione per rendere realistico l’intero modello.
Le funzioni drawSun() e drawPlanets() partono dal disegno di una sfera tramite la funzione drawSolidSphere() che prende come parametro il raggio, slices, stacks e le coordinate s e t per il texture mapping a 2D. Al Sole è stata applicata la funzione glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, sun_emission) che rende il sole stesso brillante di luce propria (gialla).
La funzione drawPlanets(), applica una serie di trasformazioni geometriche, in particolare:
Una rotazione intorno al proprio asse
Una rotazione perché l’asse di rotazione rispecchi il cosiddetto "axial tilt" ovvero il reale asse di rotazione
Una rotazione per realizzare il moto di rivoluzione dei pianeti intorno al sole (e quindi l’alternarsi delle stagioni)
Una traslazione perché ogni pianeta si trovi sulla sua orbita di rivoluzione
Una rotazione per realizzare l’animazione che rappresenta la rivoluzione dei pianeti intorno al sole, ognuna con la reale velocità di rivoluzione.
La chiamata a funzione timerSun(0) cambia dinamicamente il texuring del Sole, e tramite la funzione glutTimerFunc() viene invocata ogni 100 ms (così è stato impostato il valore) e dà l’effetto del Sole che brilla.
La funzione keydown() è responsabile per la gestione dell’input da tastiera. A seconda del tasto viene gestito un evento differente. In particolare:
Con ESC si esce dal programma
Con a si avvia l’animazione
Con r si avvia la sola rotazione (a deve essere stato digitato per un numero pari di volte per poterlo apprezzare)
Con s si aumenta la velocità dell’animazione
Con S si diminuisce la velocità dell’animazione
Con f si abilita la nebbia nella scena
Con g si disabilita/abilita il disegno della griglia
Con SPAZIO si torna alla visuale principale
Con z si trasla la telecamera verso l’alto
Con Z si trasla la telecamera verso il basso
Con v si abilita/disabilita un vision mode alternativo della scena, stile Aliens vs Predator.
Con d si aumentano le dimensioni di Plutone (perché ne siano più apprezzabili le caratteristiche)
Con D si diminuiscono le dimensioni di Plutone
Con x si aggiungono e tolgono gli assi
Con p si entra in modalità object picking (per avere informazioni sui pianeti). Premendolo ancora si torna in modalità normale di navigazione.
Con la funzione mouse(), cliccando col sinistro si ruota il modello, col destro si trasla il modello.
Con la funzione special() si gestiscono la freccia in su,la freccia in giù, la freccia a sinistra e la freccia a destra. Rispettivamente, si fa uno zoom in, uno zoom out, si ruota la camera verso sinistra, si ruota la camera verso destra.
La funzione idle() è responsabile delle animazioni. Tutte le rotazioni e rivoluzioni dei pianeti e tutto ciò che si muove quando l’utente digita i tasti a o r si devono a questa funzione. La funzione agisce tramite un array ai valori delle rotazioni/rivoluzioni dei singoli pianeti. La trasformazione tiene conto della velocità di simulazione che può essere alterata dal visitatore con s o S a tempo di esecuzione. Le misure del tempo di rivoluzione e del tempo di rotazione di ogni pianeta sono parametriche rispetto al tempo di rivoluzione e del tempo di rotazione della Terra. Cambiando questo parametro, cambiano tutte le altre. Anche in questo senso abbiamo lavorato affinché i parametri modellassero nel modo più fedele possibile la realtà.
La funzione reshape() viene richiamata ogni volta che la finestra viene ridimensionata. La funzione motion() viene richiamata ogni volta che che viene eseguita una trasformazione sul modello (panning, scaling, moving).
La funzione drawAsteroids() disegna quattro serie di 200 asteroidi disposti in cerchio. Ogni asteroide è in realtà un dodecaedro disegnato tramite la funzione glutSolidDodecahedron(). Essendo questa funzione non provvista di coordinate texture, è stato realizzata la generazione automatica delle coordinate texture. I passi necessari sono tre:
Si specificano le funzioni di generazione delle coordinate texture per s e t
Si abilita la generazione delle coordinate texture
Si generano le coordinate texture
Questo algoritmo ha reso possibile applicare la texture degli asteroidi al dodecaedro in maniera soddisfacente.
Vengono qui illustrati alcuni aspetti del modello particolarmente realistici. I raggi dei pianeti sono perfettamente in rapporto tra loro rispecchiando fedelmente i dati raccolti all’inizio dell’articolo. Il Sole va immaginato quindicimila volte più grande, ed è chiaro che non poteva essere realizzato in scala perfetta. Giove, Saturno, Urano e Nettuno vanno immaginati 3.75 volte più grandi rispetto a quanto si vede nel modello. La scelta di ridurne la dimensione è dovuta al fatto che avendo scalato in questo modo il Sole essi sarebbero apparsi altrimenti più grandi di quest’ultimo.
L’asse di rotazione della Terra, così come quello degli altri pianeti sono perfettamente inclinati così come nei dati raccolti sopra e la rotazione dei pianeti permette di osservarne le stagioni, o meglio da cosa sono dovute. Ad esempio, per quanto riguarda la Terra, si vede perfettamente quanto illustrato nell’immagine 3.
La Terra inoltre nel periodo in cui compie un giro completo intorno al Sole avrà girato attorno al proprio asse esattamente 365.25 volte, dato che influisce ad esempio sugli anni bisestili.
Tutti i pianeti esercitano la propria rivoluzione attorno al Sole rispetto a un piano comune che viene definito eclittica. Plutone che è un nano-pianeta ha un orbita di rivoluzione attorno al sole che è inclinata di circa 17° rispetto all’eclittica, e anche questo è rappresentato.
La Luna ha un orbita attorno alla terra inclinata di circa 5° rispetto all’eclittica ed è rappresentato. Inoltre la Luna ruota attorno alla terra più di 27 volte (altro dato scientifico) prima che questa compia un giro completo attorno al Sole. E ancora il periodo di rotazione della Luna coincide esattamente con il suo periodo di rivoluzione.
Quasi tutti i pianeti ruotano in verso antiorario (osservandone il polo nord) attorno al proprio asse e le orbite di rivoluzione sono per tutti antirorarie.
Venere e Urano ruotano in verso contrario (orario osservandoli dal polo nord).
Tutte le velocità di rotazione e di rivoluzione sono in rapporto realistico tra di loro, così come i raggi di rivoluzione dei pianeti.
Non sono state realizzati il movimento galattico ne' la precessione degli equinozi. Per quanto riguarda il primo è chiaro che essendo la granuralità del modello il sistema solare non era proprio concepibile, per quanto riguarda la seconda, essa si compie ogni ventiseimila anni e sarebbe stato quindi non apprezzabile e quindi inutile rapresentarla.
Ovviamente non disponendo di metri, Km e altre unità di misura del genere in C, si è lavorato rispetto alle proporzioni. L’elemento più importante del sistema solare è chiaramente il Sole e per questo motivo si è scelto di utilizzare il suo raggio sun_radius come grandezza di riferimento. Non era chiaramente possibile lasciare una proporzione realistica tra le dimensione di Sole e altri pianeti, poiché altrimenti nel modello in 3D sarebbe stato visibile solamente il primo, visti gli ovvi limiti fisici di un monitor medio.
Si è così scelto di rendere il Sole (in rapporto agli altri pianeti) quindicimila volte più piccolo, grazie alla costante mult applicata agli altri pianeti, e alcuni pianeti (Giove, Saturno, Urano, Nettuno) 3.75 volte più piccoli grazie al fattore mult2. Infine Plutone, grazie ad una costante moltiplicativa mult3, appare 1.333333333 volte più grande, il che lo rende visibile.
Il fattore moltiplicativo mult4 riporta la luna a una distanza verosimile dalla terra.
Sono stati pretanto calcolati con molta pazienza e poi utilizzati, basandosi su varie fonti, i seguenti rapporti
'RAGGI DEI PIANETI IN RAPPORTO AL SOLE' Sole: 695 500 000 km = sun_radius Mercurio: equatoriale: 2439,6 km = sun_radius/285087.0f Venere: 6051,85 km = sun_radius/114923.0f Terra: 6378,388 km = sun_radius/109040.0f Marte: equatoriale: 3402,45 km = sun_radius/204411.0f Giove: equatoriale: 71492 km = sun_radius/9728.0f Saturno: equatoriale: 60268 km = sun_radius/11540.0f Urano: equatoriale: 25559 km = sun_radius/27211.0f Nettuno: equatoriale: 24764 km = sun_radius/28085.0f -------- Luna: earth_radius * 1/3.67f Plutone: 1153 Km = sun_radius/603209.02f
'RAGGI DI RIVOLUZIONE IN RAPPORTO AL SOLE' (a partire dalla superficie esterna del sole ) Mercurio: 57.91 milioni di Km = sun_radius * 1/12.0f Venere: 108 milioni di Km = sun_radius * 1/6.439814815f Terra: 149.6 milioni di Km = sun_radius * 1/4.649064171f Marte: 227.94 milioni di Km = sun_radius * 1/3.051241555f Giove: 778.4 milioni di Km = sun_radius * 1.119194824f Saturno: 1426.98 milioni di Km = sun_radius * 2.051732566f Urano: 2870 milioni di Km = sun_radius * 4.126527678f Nettuno: 4497 milioni di Km = sun_radius * 6.465851905f -------- Luna (rispetto alla terra) 385104 Km = earth_radius * 60.3763835f Plutone: 5900 milioni di Km = sun_radius * 8.489208633f
Questa prima vista, dell’immagine 15, è stata scelta per l’impatto suggestivo che offre, in particolare senza griglia nell’immagine 16, e si è cercata una angolazione simile a quella dell’immagine 1.
L’immagini 18 e 19 mostrano alcuni aspetti importanti, dovuti al fatto che rappresentano due momenti successivi nell’animazione
E' possibile notare l’ombra dietro i pianeti, dalla parte non illuminata dal Sole
Venere ruota attorno al Sole più velocemente della Terra
Giove è molto più lento
Mercurio è molto veloce: si vede nella prima ma non nella seconda immagine
Marte è più lento della Terra a ruotare attorno al Sole
Non è possibile apprezzare tramite uno screenshot, ma di sicuro è particolarmente di impatto il fatto che con lo svolgersi della rivoluzione della Terra attorno al Sole si susseguono le stagioni terrestri. Questo avviene grazie al fatto che nell’arco dei 360° dell’orbita la Terra si trova (il 21 Giugno nella realtà) con l’emisfero nord che punta sul Sole e in un altro momento (il 21 Dicembre nella realtà) con l’emisfero sud che punta sul sole (il nostro inverno).
L’immagine 20, che segue, mostra anche Plutone nella sua orbita inclinata di circa 17° rispetto all’eclittica (lo si può osservare nell’angolo in alto a destra). Il pianeta può essere ingrandito o ridotto premendo durante l’animazione i tasti d e D. In questo caso è stato leggermente ingrandito.
Ed ecco aggiunti al nostro modello, in orbita attorno al Sole, degli asteroidi, così come nell’immagine tratta da Wikipedia
Segue l’helper visualizzato quando si preme il tasto h
Il pianeta selezionato tramite object picking è evidenziato tramite blending. Si ricorda che per entrare in modalità object picking basta premere il tasto p e premerlo nuovamente per uscirne.