Attenzione! Javascript è disabilitato

Il Cielo Delle Baronie

Benvenuto in questo sito, dedicato alle bellezze del cielo della Sardegna.

Versione inglese

ASTROJS - Esempi di codice: Effemeridi per il Sole.

Raccolta di funzioni per il calcolo di una effemeridi per il Sole.
Prima di iniziare, collegate la vostra pagina Html alla libreria Astrojs, incollando il seguente listato, sotto il tag <title>.
IMPORTANTE! Le funzioni evidenziate in rosso, non sono comandi Javascript, ma appartengono alla libreria Astrojs.

<script type="text/javascript" src="http://www.suchelu.it/astrojs/astrojs.js"></script>

Utilizzate il menu a tendina [ Apri Menu Scripts: ], per poter accedere velocemente, all'elenco di tutti gli scripts, finora realizzati...

Calcolare la posizione del Sole in questo istante:

<script language="JavaScript" type="text/javascript">
    <!--
          // La posizione del Sole in questo istante.
          // Le coordinate equatoriali sono riferite all'Equinozio medio della data.

     var njd=calcola_jd();      // (1) Calcola il G.G. riferito al tempo di Greenwich.

    var effemeridi=pos_sole(njd);       // Calcola la posizione del Sole.

// La funzione restituisce 7 variabili - utilizzate solo quelle che ritenete importanti.
// Vedi la lista nelle note per icalcoli.

//Stampa i risultati.

    document.write("A. R. geocentrica:"+effemeridi[0]+"<br>"); //AR. in ore decimali
    document.write(" Dec. geocentrica:"+effemeridi[1]+"<br>"); //DE. in gradi sessadecimali
    document.write("Distanza :"+effemeridi[4]+"<br>");         //Distanza in U.A.
    document.write("Diametro :"+effemeridi[5]+"<br>");         //Diametro apparente.

    //-->

</script>

Per calcolare una effemeridi per l'ora 0(zero) T.U. di oggi, utilizzate var njd=calcola_jdUT0(); in sostituzione della riga (1).
Prima di pubblicare i risultati, è necessario formattare i dati appena calcolati, utilizzando alcune funzioni specifiche.
Sostituite le ultime 4 righe del precedente listato con queste.

//Formatta e stampa i risultati.

    document.write("A. R. geocentrica:"+sc_oresd(effemeridi[0])+"<br>"); //AR. in hh:mm:ss.decimali
    document.write(" Dec. geocentrica:"+sc_angolo_sd(effemeridi[1])+"<br>"); //DE. in ° ' "
    document.write("Distanza :"+effemeridi[4].toFixed(6)+"<br>"); //Distanza in U.A. con 6 decimali
    document.write("Diametro :"+effemeridi[5]+"<br>");            //Diametro apparente.

Per ulteriori chiarimenti sulla formattazione dei risultati, consultate la pagina Formattazione nelle Effemeridi dei pianeti.

La posizione del Sole per qualsiasi data:

Per la data, inserite solo valori compresi all'interno dell'intervallo di tempo, che va dall'anno 1 (DC) al 3000 (DC).

<script language="JavaScript" type="text/javascript">
    <!--

    // Calcola le coordinate equatoriali geocentriche per il T.U. di Greenwich.
    // Le coordinate eq. sono riferite all'Equinozio della data.
    // Sostituite i valori numerici predefiniti per la data.

    var dd=23;                     // giorno.
    var mm=6;                      // mese.
    var yy=2011;                   // anno.
    var hh=12;                     // ora di Greenwih.
    var mi=34;                     // minuti.
    var se=27.85;                  // secondi (possono avere decimali).

    var njd=calcola_jddata(dd,mm,yy,hh,mi,se); // calcola il G.G. della data.

    var effemeridi=pos_sole(njd);        // Calcola la posizione del Sole.

    //Stampa i risultati.

    document.write("A. R. geocentrica:"+effemeridi[0]+"<br>"); //AR. in ore decimali
    document.write(" Dec. geocentrica:"+effemeridi[1]+"<br>"); //DE. in gradi sessadecimali
    document.write("Distanza :"+effemeridi[4]+"<br>");         //Distanza in U.A.
    document.write("Diametro :"+effemeridi[5]+"<br>");         //Diametro apparente.

    //-->

</script>

Coordinate Equatoriali Geocentriche Apparenti:

<script language="JavaScript" type="text/javascript">
    <!--

    // Calcola le coordinate equatoriali geocentriche apparenti per il T.U. di Greenwich.
    // Correzioni dovute agli effetti della nutazione e aberrazione della luce.
    // Le coordinate eq. sono riferite all'Equinozio della data.
    // Sostituite i valori numerici predefiniti per la data.

    var dd=23;                     // giorno.
    var mm=6;                      // mese.
    var yy=2011;                   // anno.
    var hh=12;                     // ora di Greenwich.
    var mi=34;                     // minuti.
    var se=27.85;                  // secondi (possono avere decimali).

    var njd=calcola_jddata(dd,mm,yy,hh,mi,se); // calcola il G.G. della data.

    var effemeridi=pos_sole(njd);        // Calcola la posizione del Sole.

    var AR=effemeridi[0];    // Ascensione retta in ore decimali.
    var DE=effemeridi[1];    // Declinazione in gradi sessadecimali.

    var  coord_app=pos_app(njd,AR,DE);         // Coordinate equatoriali apparenti.

    var AR_app= coord_app[0];  // Ascensione retta apparente in ore decimali.
    var DE_app= coord_app[1];  // Declinazione apparente in ore decimali.

    //Stampa i risultati.

    document.write("A.R. geocentrica:"+effemeridi[0]+"<br>"); //in ore decimali
    document.write("Dec. geocentrica:"+effemeridi[1]+"<br>"); //in gradi sessadecimali

    document.write("A.R. geocentrica apparente:"+AR_app+"<br>"); //in ore decimali
    document.write("Dec. geocentrica apparente:"+DE_app+"<br>"); //in gradi sessadecimali


    //-->

</script>

Coordinate Equatoriali Apparenti Topocentriche:

<script language="JavaScript" type="text/javascript">
    <!--

    // Calcola le coordinate equatoriali Topocentriche apparenti per il T.U. di Greenwich.
    // Correzioni dovute agli effetti della nutazione e aberrazione della luce.
    // Correzioni dovute alla parallasse diurna.
    // Le coordinate eq. sono riferite all'Equinozio della data.
    // Sostituite i valori numerici predefiniti per la data.

     // ************************************************************.

    var dd=23;                     // giorno.
    var mm=6;                      // mese.
    var yy=2011;                   // anno.
    var hh=12;                     // ora di Greenwih.
    var mi=34;                     // minuti.
    var se=27.85;                  // secondi (possono avere decimali).

    // Sostituite i valori numerici predefiniti con le coordinate della vs. località.
           // Coordinate geografiche della località

    var LAT=42.25;  // Latitudine  (può avere decimali).
    var LON=12.36;  // Longitudine (può avere decimali).
    var ALT=0;      // Altitudine sul livello del mare in metri (decimali non necessari).

    // ************************************************************.

    var njd=calcola_jddata(dd,mm,yy,hh,mi,se); // calcola il G.G. della data.

    var effemeridi=pos_sole(njd);        // Calcola la posizione del Sole.

    var AR=effemeridi[0];    // Ascensione retta in ore decimali.
    var DE=effemeridi[1];    // Declinazione in gradi decimali.

    var  coord_app=pos_app(njd,AR,DE);         // Coordinate equatoriali apparenti .

    var AR_app= coord_app[0];  // Ascensione retta apparente in ore decimali.
    var DE_app= coord_app[1];  // Declinazione apparente in gradi decimali.

      // Correzione delle Coordinate equatoriali apparenti per la parallasse.

     var P=effemeridi[6];  // La parallase del sole in gradi (vedi tabella primo listato).

     var coord_top=cor_parall(njd,AR_app,DE_app,P,LAT,LON,ALT);// Coord. eq. Topocentriche.

     var AR_top= coord_top[0];  // Ascensione retta apparente topocentrica in ore decimali.
     var DE_top= coord_top[1];  // Declinazione apparente topocentrica in gradi decimali.

    //Stampa i risultati.

    document.write("A.R. topocentrica:"+AR_top+"<br>"); //in ore decimali
    document.write("Dec. topocentrica:"+DE_top+"<br>"); //in gradi decimali


    //-->

</script>

Ridurre le righe di codice

Se avete intenzione di applicare nel vostro calcolo, le correzioni dovute alla nutazione, aberrazione della luce e alla parallase; potete sostituire le funzioni precedenti con un'altra più generale, che applica tutte e tre le correzioni:pos_app_pa(njd,AR,DE,P,LAT,LON,ALT);
In questo modo potete ridurre le righe del vostro listato.
A seguire il listato definitivo per il calcolo della posizione del Sole per qualsiasi data.


  <script language="JavaScript" type="text/javascript">
    <!--

    // Calcola le coordinate equatoriali Topocentriche apparenti per il T.U. di Greenwich.
    // Correzioni dovute agli effetti della nutazione e aberrazione della luce.
    // Correzioni dovute alla parallasse diurna.
    // Le coordinate eq. sono riferite all'Equinozio della data.
    // Sostituite i valori numerici predefiniti per la data.

     // ************************ inserire le variabili per il calcolo *************************

    var dd=23;                     // giorno.
    var mm=6;                      // mese.
    var yy=2011;                   // anno.
    var hh=12;                     // ora di Greenwich.
    var mi=34;                     // minuti.
    var se=27.85;                  // secondi (possono avere decimali).

    // Sostituite i valori numerici predefiniti con le coordinate della vs. località.
    // Coordinate geografiche della località

    var LAT=42.32;  // Latitudine  (può avere decimali).
    var LON=12.06;  // Longitudine (può avere decimali).
    var ALT=0;      // Altitudine sul livello del mare in metri (decimali non necessari).

    // ****************************************************************************************

    var njd=calcola_jddata(dd,mm,yy,hh,mi,se); // calcola il G.G. della data.

    var effemeridi=pos_sole(njd);   // Calcola la posizione del Sole.

    var AR=effemeridi[0];   // ascensione retta in ore decimali.
    var DE=effemeridi[1];   // declinazione in gradi sessadecimali.
    var  P=effemeridi[6];   // parallase del pianeta in gradi.

    var coord_top=pos_app_pa(njd,AR,DE,P,LAT,LON,ALT);// Coord. Equat. Topocentriche apparenti.

     var AR_top= coord_top[0];  // Ascensione retta apparente topocentrica in ore decimali.
     var DE_top= coord_top[1];  // Declinazione apparente topocentrica in gradi sessadecimali.

    //Stampa i risultati.

    document.write("A.R. topocentrica app.:"+AR_top+"<br>"); //in ore decimali
    document.write("Dec. topocentrica app.:"+DE_top+"<br>"); //in gradi sessadecimali


    //-->

</script>

Calcolo di una Effemeridi:

Listato completo, per calcolare una Effemeride per il Sole, dal 1 Marzo al 31 Marzo 2012.
...La variabile (STEP=1), indica l'intervallo di tempo, in questo caso è stato indicato un giorno.
Per un maggior ordine, i dati calcolati verranno inseriti all'interno di una tabella <table>.
Utilizzando un foglio di stile CSS, sarà possibile personalizzare l'aspetto grafico della tabella, in modo tale da rendere più leggibili i dati.

<script language="JavaScript" type="text/javascript">
    <!--
    // Calcola una effemeridi per il Sole.************ (inizio )

    var njd1=calcola_jddata( 1,3,2012,0,0,0);   // Data:  1 marzo 2012
    var njd2=calcola_jddata(31,3,2012,0,0,0);   // Data: 31 marzo 2012

    var numero_iterazioni=Math.abs(njd1-njd2)+1;

    var STEP=1;                   // In giorni o frazione di giorni
    var njd=njd1-1;

    // Sostituite i valori numerici predefiniti con le coordinate della vs. località.
    // Coordinate geografiche della località.

    var LAT=42.15;  // Latitudine  (può avere decimali).
    var LON=12.32;  // Longitudine (può avere decimali).
    var ALT=0;      // Altitudine sul livello del mare in metri (decimali non necessari).

    // Crea una tabella per i dati

    document.write("<table>");
    document.write("   <tr>");
    document.write("   <td>Data:</td>  ");
    document.write("   <td>Ascensione retta:</td>  ");
    document.write("   <td>Declinazione:</td>");
    document.write("   <td>Distanza in UA:</td>");
    document.write("   <td>Diametro apparente.:</td>");
    document.write("   <td>Parallasse:</td>");
    document.write("   <td>Costellazione:</td>");


    document.write("   </tr>");

    for (b=0; b<numero_iterazioni; b=b+STEP){

         njd=njd+STEP;

         effemeridi=pos_sole(njd);        // Calcola una effemeridi per il Sole.

         var AR=effemeridi[0]; // ascensione retta in ore decimali.
         var DE=effemeridi[1]; // declinazione in gradi sessadecimali.
         var  P=effemeridi[6]; // parallasse del Sole in gradi (vedi tabella Note per i calcoli).

         var coord_top=pos_app_pa(njd,AR,DE,P,LAT,LON,ALT); // Coord. eq. Topocentriche apparenti.

         var AR_top= sc_oresd(coord_top[0]);     // AR apparente topocentrica in hh mm ss. 
         var DE_top= sc_angolo_sd(coord_top[1]);  // DE apparente topocentrica in gg mm ss.

         //Stampa i risultati.

         var transit_cost=costell(AR);   //Utilizzate AR come parametro.

          data=jd_data(njd); //Recupera la data del calendario.
        data_s=parseInt(data[0])+"|"+data[1]+"|"+data[3]; // data:  gg|mm|giorno della settimana

     document.write("   <tr>");
     document.write("     <td>"+data_s+"</td>");
     document.write("     <td>"+AR_top+"</td>");
     document.write("     <td>"+DE_top+"</td>");
     document.write("     <td>"+effemeridi[4].toFixed(6)+"</td>");
     document.write("     <td>"+effemeridi[5]+"</td>");
     document.write("     <td>"+(effemeridi[6]*3600).toFixed(2)+"</td>");
     document.write("     <td>"+transit_cost+"</td>");
     document.write("   </tr>");
     }
     document.write(" </table>");

     //-->

</script>

Elenco dei parametri e degli Array:

In questa pagina sono indicate le variabili parametro da utilizzare nei calcoli e l'elenco completo dei valori restituiti dalle funzioni.
Tutti gli elenchi sono stati formattati in modo tale, da poter essere inseriti all'interno del vostro listato, come note di Javascript.

2) I valori restituiti dalla funzione pos_sole(njd):

// **** Elenco dei dati presenti nell'array effemeridi[0,1,2,...6] **** 

    //effemeridi[0];   Ascensione Retta geocentrica - equinozio della data.
    //effemeridi[1];   Declinazione geocentrica - equinozio della data.
    //effemeridi[2];   Longitudine in gradi sessadecimali.
    //effemeridi[3];   Anomalia media.
    //effemeridi[4];   Distanza dalla Terra in U.A.
    //effemeridi[5];   Diametro apparente in secondi d'arco.
    //effemeridi[6];   Parallasse diurna in gradi.
2) I valori restituiti dalla funzione jd_data(njd):

// **** Elenco dei dati presenti nell'array data[0,1,2,...4] ****

     data[0];      // giorno e ore decimali.
     data[1];      // mese.
     data[2];      // anno.
     data[3];      // giorno della settimana in italiano (abbreviato).
     data[4];      // giorno della settimana in inglese (abbreviato).

Siete liberi di utilizzare dei nomi differenti (tra quelli ammessi dalla sintassi di javascript), per gli Array: effemeridi[] o data[]; l'ordine numerico dei valori restituiti dalle due funzioni non cambierà.

Cambiare l'equinozio di riferimento delle coordinate equatoriali

Per riportare le coordinate equatoriali del Sole, dall'equinozio della data, ad un'altro: Calcolo effemeridi pianeti: NOTE

Esempio numerico: utilizzare le Effemeridi della Nasa.

In questa pagina, ho inserito uno stralcio della tabella delle Effemeridi, calcolate dalla Nasa per il Sole; utilizzatela per verificare i risultati dei vostri calcoli. Questa tabella risulta molto utile, anche per il calcolo del Tempo Siderale di Greenwich, colonna GST.

tabella effemeridi nasa per il sole

Le coordinate del Sole sono geocentriche apparenti, di conseguenza dovete applicare la correzione, per la Nutazione e Aberrazione: pos_app(njd,AR,DE);
Per accedere al sito della NASA GODDARD SPACE CENTER, cliccate qui: Effemeridi della NASA

Aumentare la precisione del calcolo utilizzando il Terrestrial Time (TT)

Queste indicazioni sono da considerarsi valide, anche per il calcolo delle effemeridi dei pianeti e della Luna.
Gli astronomi per calcolare con precisione la posizione dei pianeti, usano il Terrestrial Time (TT), un tempo più uniforme che non considera le anomalie della rotazione terrestre.
Il TT è legato al Tempo Universale (TU) dalla relazione: DELTA_T = TT - TU.
Conoscendo il valore di DELTA_T e del TU, la formula precedente diventa: TT = TU + DELTA_T.


     // applicare il Terrestrial Time per il 2012.

var anno=2012;
var DT=delta_T(anno);  // il valore di delta_T in secondi.

var DTg=DT/3600/24;    // il valore di delta_T in giorni.

var njd=njd+DTg;       // aggiungere delta_T al giorno giuliano.
                       // Il giorno giuliano era in TU, ora è in TT


Per il 2012 il valore di delta_T è di circa 67" secondi.
Da sommare in tutti i listati, al (njd) giorno giuliano, per il Sole, la Luna e pianeti, prima di avviare il calcolo dell'effemeridi.

Applichiamo la correzione alla posizione del sole per il 12: agosto: dell'anno 1000, utilizzando sempre una tabella della Nasa per quella data:

tabella effemeridi nasa per il sole
      // il calcolo senza applicare il Terrestrial Time.

 var njd=calcola_jddata(12,8,1000,0,0,0);  // giorno giuliano della data.

 var effe=pos_sole(njd);                         // posizione del Sole. 

 var pos_a=pos_app(njd,effe[0],effe[1]);         // coordinate apparenti.

 document.write(sc_oresd(pos_a[0])+"<br>");      // ascensione retta apparente.
 document.write(sc_angolo_sd(pos_a[1])+"<br>");  // declinazione apparente.

 // RISULTATI: R.A: 09h. 46m. 12.38s. - DEC: 13º 31' 17.95''

 
      // il calcolo con la correzione del Terrestrial Time.

 var njd=calcola_jddata(12,8,1000,0,0,0);  // giorno giuliano della data.

 var  DT=delta_T(1000);      // il valore delta_T per l'anno 1000, in secondi.
 var DTg=DT/3600/24;         // il valore delta_T in giorni.

 njd=njd+DTg;                // giorno giuliano in TT.  

 var effe=pos_sole(njd);                         // posizione del Sole. 

 var pos_a=pos_app(njd,effe[0],effe[1]);         // coordinate apparenti.

 document.write(sc_oresd(pos_a[0])+"<br>");      // ascensione retta apparente.
 document.write(sc_angolo_sd(pos_a[1])+"<br>");  // declinazione apparente.
 document.write(DT+"<br>");                      // Delta_T.

 // RISULTATI: R.A: 09h. 46m. 16.49s. - DEC: 13º 30' 56.76'' delta_T: 1574.2

 

Con la correzione del TT il risultato è senz'altro migliore, ma anche il primo metodo, ha un'ottima precisione; infatti dopo 1000 anni, l'ascensione retta calcolata, si discosta rispetto a quella della Nasa, per meno di 1' d'arco, che corrisponde ad un angolo pari a 1/30 del diametro apparente del Sole.
In conclusione, se non avete bisogno di tutta questa precisione, il TT potete tranquillamente trascurarlo.

Importante: Consultate la pagina [ Note per i calcoli ], per le specifiche sui parametri e le variabili (Array) delle funzioni.

Apri Menu Scripts: >>

Riferimenti bibliografici:
JEAN MEEUS - Astronomia con il computer. ( Hoepli-1990 ) - PETER DUFFETT-SMITH -Astronomia pratica. ( Sansoni Studio 1981 )
FRANCESCO ZAGAR -Astronomia sferica e teorica ( Zanichelli 1988 )

Copyright ©2009 - Salvatore Ruiu
Tutti i contenuti del sito sono protetti dal diritto d'autore.
All Rights Reserved.

Questo sito è Online da dicembre 2009 || Ultima modifica: 10-Dicembre 2009 || Questa pagina web rispetta le direttive del W3C | CSS 2.1 | XHTML 1.0