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 la Luna

Raccolta di funzioni per il calcolo di una effemeride per la Luna.
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 della Luna in questo istante:

<script language="JavaScript" type="text/javascript">
    <!--
                 // La posizione della Luna in questo istante.


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

     var effemeridi=pos_luna(njd);       // Calcola la pos. della Luna.

// La funzione restituisce 8 variabili - utilizzate solo quelle che ritenete importanti.
// Vedi la lista dei valori presenti nell'array effemeridi[0,1,...7]
// nella pagina: Note per i calcoli.

    //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("       Fase attuale :"+effemeridi[3]+"<br>"); //Fase attuale
    document.write("Diametro :"+effemeridi[6]+"<br>");            //Diametro apparente.
    document.write("Distanza in Km :"+effemeridi[7]+"<br>");      //Distanza in Km.

    //-->

</script>

Per poter calcolare una effemeridi per l'ora 0(zero) T.U. di oggi, utilizzate var njd=calcola_jdUT0(); in sostituzione della riga (1).

Calcolare la posizione della Luna 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 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_luna(njd);        // Calcola una effemeridi per la Luna.

    //Stampa i risultati.

    document.write("A. R. geocentrica:"+effemeridi[0]+"<br>");    //in ore decimali
    document.write(" Dec. geocentrica:"+effemeridi[1]+"<br>");    //in gradi decimali
    document.write("       Fase attuale :"+effemeridi[3]+"<br>"); //Fase attuale
    document.write("Diam. :"+effemeridi[6]+"<br>");               //Diametro apparente.
    document.write("Dist. :"+effemeridi[7]+"<br>");               //Dist. in Km.

    //-->

</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_luna(njd);        // Calcola una effemeridi per la Luna.

    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 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 decimali

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


    //-->

</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;     // Latitudine  (può avere decimali).
    var LON=12;     // 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_luna(njd);        // Calcola una effemeridi per la Luna.

    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[5];  // La parallase della Luna 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 di una effemeridi 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 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;     // Latitudine  (può avere decimali).
    var LON=12;     // 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_luna(njd);   // Calcola una effemeridi per la Luna.

    var AR=effemeridi[0];   // ascensione retta in ore decimali.
    var DE=effemeridi[1];   // declinazione in gradi sessadecimali.
    var  P=effemeridi[5];   // parallase della luna in gradi.

    var coord_top=pos_app_pa(njd,AR,DE,P,LAT,LON,ALT);// Coord. eq. 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 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>

Costellazione di transito

Vedi la pagina: Effemeridi pianeti

Formattazione dei risultati

Vedi la pagina: Effemeridi pianeti

Calcolo di una Effemeridi:

Listato completo, per calcolare una Effemeride per la Luna, 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>Fase:</td>");
    document.write("   <td>Elongazione.:</td>");
    document.write("   <td>Parallasse:</td>");
    document.write("   <td>Diametro apparente:</td>");
    document.write("   <td>Distanza in Km.:</td>");
    document.write("   <td>Costellazione:</td>");


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

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

         njd=njd+STEP;

         effemeridi=pos_luna(njd);        // Calcola una effemeridi per la Luna.

         var AR=effemeridi[0]; // ascensione retta in ore decimali.
         var DE=effemeridi[1]; // declinazione in gradi sessadecimali.
         var  P=effemeridi[5]; // parallasse della Luna 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_ore(coord_top[0]);     // AR apparente topocentrica in hh mm ss. 
         var DE_top= sc_angolo(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[3].toFixed(2)+"</td>");
     document.write("     <td>"+sc_angolo(effemeridi[4])+"</td>");
     document.write("     <td>"+(effemeridi[5]*3600).toFixed(2)+"</td>");
     document.write("     <td>"+effemeridi[6]+"</td>");
     document.write("     <td>"+effemeridi[7]+"</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_luna(njd):

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

    //effemeridi[0];   Ascensione Retta geocentrica - equinozio della data.
    //effemeridi[1];   Declinazione geocentrica - equinozio della data.
    //effemeridi[2];   Longitudine geocentrica in gradi sessadecimali..
    //effemeridi[3];   Fase.
    //effemeridi[4];   Elongazione in gradi sessadecimali.
    //effemeridi[5];   Parallasse della Luna in gradi.
    //effemeridi[6];   Diametro apparente in secondi d'arco.
    //effemeridi[7];   Distanza dalla Terra in Km..

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à.

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

Per una descrizione dettagliata della procedura, vedi pagina dedicata al calcolo di posizione del Sole, nel capitolo: Esempio numerico

Cambiare l'equinozio di riferimento delle coordinate equatoriali

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

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