Attenzione! Javascript è disabilitato

Il Cielo Delle Baronie

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

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>

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:

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

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

Apri menu: >>

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