Distanza Terra-sole
Questa mattina mi sono svegliato con una nuova idea, tanto per cambiare.
Nell Web Application sul meteo che sto sviluppando, e della quale vi darò in settimana il Link, voglio aggiungerci anche la distanza Terra-Sole in tempo reale, almeno del giorno.
Sappiamo dagli almanacchi e dalle enciclopedie di astronomia che la distanza minima dal Sole è di 147 milioni, la distanza massima è di 152 milioni e la distanza media è di 149,6 milioni di Km.
Come fare quindi sapendo una data, qual’è la distanza in quella data fra Terra e sole?
Sappiamo anche che la distanza temporale fra i giorni di Afelio e di Perielio è di circa 180 giorni (Gennaio= Perielio, Luglio=Afelio).
Come calcoliamo quindi in quale punto siamo fra i 147 e i 162 milioni di Km che ci separano dal Sole?
Ovviamente non posiamo fare una interpolazione lineare, in quanto la Terra aumenta di velocità man mano che si avvicina al Sole. Se la velocità fosse uguale, allora si avremmo potuto usare la formula S= V x T, ma in questo caso non possiamo usarlo.
Ci viene incontro la prima legge di Keplero che afferma l’orbita descritta da un pianeta è un’ellisse, di cui il Sole occupa uno dei due fuochi.
Quindi il raggio vettore che unisce il centro del sole al centro di un pianeta è uguale a:
1-0,01672 * COS(0,98560*(n-4)) dove n è il numero dei giorni dal 1° gennaio.
Traduciamo dalla formula a un codice in VB.NET e otteniamo:
Private Sub button_Click(sender As Object, e As RoutedEventArgs) Handles button.Click
Dim Data As String = InputBox("Inserire la data di calcolo")
If IsDate(Data) = True Then
Dim DataCalcolo = CDate(Data)
Dim NumeroGiorno As Integer = DataCalcolo.DayOfYear
Dim Raggio = 1 - 0.01672 * Math.Cos(0.9856 * (NumeroGiorno - 4) * Math.PI / 180)
Dim Distanza = Raggio * 149600000
MsgBox("Distanza Terra-Luna al " & DataCalcolo & ": " & Distanza & " Km")
End If
End Sub
Lanciamo l’applicazione e otteniamo:

Questa è una soluzione molto approssimativa. Se volessimo avere un valore più preciso (qua l’errore è su qualche migliaio di chilometri) dovremo inserire una lunga sequenza di correzioni, cosa che esula dallo scopo di questo articolo.


Rispondi