Sommario:

Simulazione del sistema solare: 4 passaggi
Simulazione del sistema solare: 4 passaggi

Video: Simulazione del sistema solare: 4 passaggi

Video: Simulazione del sistema solare: 4 passaggi
Video: E se un buco nero passasse nel Sistema Solare? Simulazione in Universe Sandbox 2024, Novembre
Anonim

Per questo progetto ho deciso di creare una simulazione di come la gravità influenza il movimento dei corpi planetari in un sistema solare. Nel video qui sopra\, il corpo del Sole è rappresentato dalla sfera in rete metallica e i pianeti sono generati casualmente.

Il moto dei pianeti si basa sulla fisica reale, la Legge di Gravitazione Universale. Questa legge definisce la forza gravitazionale esercitata su una massa da un'altra massa; in questo caso il Sole su tutti i pianeti, ei pianeti l'uno sull'altro.

Per questo progetto ho utilizzato Processing, un ambiente di programmazione basato su Java. Ho anche usato il file di esempio di Processing che simula la gravità dei pianeti. Tutto ciò di cui avrai bisogno per questo è il software di elaborazione e un computer.

Passaggio 1: simulazione bidimensionale

Ho iniziato guardando alcuni video su come programmare questo che Dan Shiffman ha creato sul suo canale YouTube, The Coding Train (Parte 1/3). A questo punto ho pensato che avrei usato la ricorsione per generare il sistema solare, in modo simile a come fa Shiffman usando solo le leggi della fisica.

Ho creato un oggetto pianeta che aveva "pianeti figli", che a loro volta avevano anche pianeti "figli". Il codice per la simulazione 2D non era finito perché non avevo un ottimo modo per simulare le forze gravitazionali per ogni pianeta. Ho fatto perno da questo modo di pensare, in una direzione basata sull'esempio di elaborazione intrinseco dell'attrazione gravitazionale. Il problema era che avevo bisogno di calcolare la forza gravitazionale da tutti gli altri pianeti su ogni pianeta, ma non riuscivo a pensare a come estrarre facilmente le informazioni di un singolo pianeta. Dopo aver visto come funziona il tutorial sull'elaborazione, ho capito esattamente come farlo usando invece loop e array

Passaggio 2: portarlo a 3 dimensioni

Utilizzando il codice di esempio per l'attrazione planetaria fornito con l'elaborazione, ho avviato un nuovo programma per una simulazione 3D. La principale differenza è nella classe Planet, dove ho aggiunto una funzione di attrazione, che calcola la forza gravitazionale tra due pianeti. Questo mi ha permesso di simulare come funziona il nostro sistema solare, dove i pianeti non sono attratti solo dal sole, ma anche da ogni altro pianeta.

Ogni pianeta ha caratteristiche generate casualmente come la massa, il raggio, la velocità orbitale iniziale, ecc. I pianeti sono sfere solide e il Sole è una sfera di rete metallica. Inoltre, la posizione della telecamera ruota attorno al centro della finestra.

Passaggio 3: utilizzo di pianeti reali

Image
Image

Dopo aver ottenuto il framework per la simulazione 3D, ho usato Wikipedia per trovare i dati planetari effettivi per il nostro sistema solare. Ho creato una serie di oggetti pianeta e ho inserito i dati reali. Quando ho fatto questo, ho dovuto ridimensionare tutte le caratteristiche. Quando l'ho fatto avrei dovuto prendere i valori effettivi e moltiplicarli per un fattore per ridimensionare i valori, invece l'ho fatto in unità di Terre. Cioè ho preso il rapporto tra il valore della Terra e il valore degli altri oggetti, per esempio il Sole ha 109 volte più massa della Terra. Tuttavia, ciò ha portato le dimensioni dei pianeti a sembrare troppo grandi o troppo piccole.

Passaggio 4: considerazioni finali e commenti

Se dovessi continuare a lavorare su questa simulazione, perfezionerei/migliorerei un paio di cose:

1. Innanzitutto vorrei ridimensionare tutto in modo uniforme utilizzando lo stesso fattore di ridimensionamento. Quindi per migliorare la visibilità delle orbite, aggiungerei una scia dietro ogni pianeta per vedere come ogni rivoluzione si confronta con quella precedente

2. La telecamera non è interattiva, il che significa che parte delle orbite sono fuori dallo schermo, "dietro la persona". C'è una libreria di fotocamere 3D chiamata Peazy Cam, che viene utilizzata nella parte 2 della serie di video di Coding Train su questo argomento. Questa libreria consente allo spettatore di ruotare, eseguire la panoramica e lo zoom della telecamera in modo da poter seguire l'intera orbita di un pianeta.

3. Infine, i pianeti sono attualmente indistinguibili l'uno dall'altro. Vorrei aggiungere "pelli" a ciascun pianeta e al Sole, in modo che gli spettatori possano riconoscere la Terra e cose del genere.

Consigliato: