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 i pianeti

Raccolta di funzioni per il calcolo di una effemeride per i pianeti (esluso Plutone).
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 di un pianeta in questo istante:

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

    var np=0;    // Selezionare il pianeta: np=0 per Mercurio.

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

    var effemeridi=pos_pianeti(njd,np);       // Calcola la posizione di Mercurio.

// La funzione (pos_pianeti), restituisce 12 variabili. 
// Vedi la lista dei valori presenti nell'array effemeridi[0,1,...11], in fondo a questa pagina.

//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[2]+"<br>");  //Fase 
    document.write("Dist. :"+effemeridi[4]+"<br>");      //Distanza Terra-pianeta in U.A.
    document.write("Diam. :"+effemeridi[5]+"<br>");      //Diametro apparente in secondi d'arco.

    //-->

</script>

In tutti i listati è stato previsto l'Effetto di Tempo-Luce, sulle coordinate equatoriali.
Per calcolare la posizione del pianeta per l'ora 0(zero) T.U. di oggi, utilizzate var njd=calcola_jdUT0(); in sostituzione della riga (1).
Sostituite il valore 0(zero) di np con il numero 3 per calcolare la posizione attuale di Marte; inserite 5 per Saturno (vedi elenco in basso).
Non è ammesso il valore 2.

 np=0 Mercurio, np=1 Venere, np=3 Marte, np=4 Giove, np=5 Saturno, np=6 Urano, np=7 Nettuno 

Calcolare la posizione di un pianeta per una 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 equatoriali 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 i decimali).

    var np=0;    // np=0 per Mercurio.

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

    var effemeridi=pos_pianeti(njd,np);        // Calcola la posizione di Mercurio.

    //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[2]+"<br>");  //Fase 
    document.write("Dist. :"+effemeridi[4]+"<br>");      //Distanza Terra-pianeta in U.A.
    document.write("Diam. :"+effemeridi[5]+"<br>");      //Diametro apparente in secondi d'arco.

    //-->

</script>

 np=0 Mercurio, np=1 Venere, np=3 Marte, np=4 Giove, np=5 Saturno, np=6 Urano, np=7 Nettuno 

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 equatoriali 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 np=0;    // Selezionare il pianeta: np=0 per Mercurio.

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

    var effemeridi=pos_pianeti(njd,np);        // Calcola la posizione di Mercurio.

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

    //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. geo. apparente:"+AR_app+"<br>"); //in ore decimali
    document.write(" Dec. geo. apparente:"+DE_app+"<br>"); //in gradi decimali


    //-->

</script>

 np=0 Mercurio, np=1 Venere, np=3 Marte, np=4 Giove, np=5 Saturno, np=6 Urano, np=7 Nettuno 

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 equatoriali 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).

    // 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 np=0;    // Selezionare il pianeta: np=0 per Mercurio.

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

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

    var effemeridi=pos_pianeti(njd,np);        // Calcola una effemeridi per Mercurio.

    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[10];  // La parallase del pianeta 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 sessadecimali.

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

 np=0 Mercurio, np=1 Venere, np=3 Marte, np=4 Giove, np=5 Saturno, np=6 Urano, np=7 Nettuno 

Ridurre le righe di codice

Se volete 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 di un pianeta 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 equatoriali 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;     // 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 np=4;    // Selezionare il pianeta: np=4 per il pianeta Giove.

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

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

    var effemeridi=pos_pianeti(njd,np);   // Calcola la posizione del pianeta Giove.

    var AR=effemeridi[0];   // ascensione retta in ore decimali.
    var DE=effemeridi[1];   // declinazione in gradi sessadecimali.
    var  P=effemeridi[10];  // parallasse del pianeta in gradi (vedi tabella primo listato).

    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 app.:"+AR_top+"<br>"); //in ore decimali
    document.write("Dec. topocentrica app.:"+DE_top+"<br>"); //in gradi sessadecimali


    //-->

</script>

 np=0 Mercurio, np=1 Venere, np=3 Marte, np=4 Giove, np=5 Saturno, np=6 Urano, np=7 Nettuno 

Costellazione di transito

Con questa funzione è possibile individuare in quale costellazione sta transitando il pianeta, dopo averne calcolato la posizione.
A causa della forma particolarmente complessa dei confini delle costellazioni, questa funzione potrà essere utilizzata solo con oggetti che si muovono molto vicini al piano dell'eclittica, come i pianeti, il Sole e la Luna.
Per questo motivo è stato inserito come parametro solo l'ascensione retta, in quanto si presuppone, la vicinanza dell'astro al piano dell'eclittica.
Per astri che si trovano lontano dall'eclittica, la funzione, restituirà valori completamente errati.

     // Individua la costellazione di transito (compreso Ofiuco) del pianeta.
     // AR= ascensione retta in ore decimali.
     // Restituisce una stringa con una abbreviazione in latino del nome della costellazione.

    var transit_cost=costell(AR);

    document.write(" Costellazione:"+transit_cost+"<br>"); //Nome della costellazione in Latino.

     // Individua la costellazione di transito (compreso Ofiuco) del pianeta.
     // AR= ascensione retta in ore decimali.
     // Restituisce una stringa del nome (per esteso) in latino della costellazione.

    var transit_cost=costell2(AR);

    document.write(" Costellazione:"+transit_cost+"<br>"); //Nome della costellazione in Latino.

Inserite questo listato all'interno di uno qualsiasi dei precedenti (vedi esempio in basso).


  <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 equatoriali sono riferite all'Equinozio della data.
    // Trova la costellazione di transito.
    // 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;     // 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 np=4;    // Selezionare il pianeta: np=4 per il pianeta Giove.

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

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

    var effemeridi=pos_pianeti(njd,np);   // Calcola la posizione del pianeta Giove.

    var AR=effemeridi[0];   // ascensione retta in ore decimali.
    var DE=effemeridi[1];   // declinazione in gradi sessadecimali.
    var  P=effemeridi[10];  // parallasse del pianeta in gradi (vedi tabella primo listato).

    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.

     var transit_cost=costell(AR_top);   //inserite AR o AR_top come parametro.

    //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
    document.write("Nome Costellazione:"+transit_cost+"<br>"); //Nome costellazione.

    //-->

</script>

Formattazione: Ascensione Retta e ore decimali di tempo in (hh. mm. ss.)

Le funzioni presenti in questa pagina sono utili per la formattazione dei risultati (ricavati dai calcoli), prima della pubblicazione.
Utilizzando queste funzioni è possibile formattare le ore/ascensione retta, dal formato decimale in hh: mm: ss.
Anche gli angoli sessadecimali si possono formattare in ° ' " (gradi| minuti| secondi).

//formattazione dell'ascensione retta o delle ore decimali
//Esempio numerico

  var ar_dec=22.5426538;        // Ascensione Retta/Ora decimale
  var AR_F1=    sc_ore(ar_dec); // L'Ascensione Retta decimale è trasformata in (h m s)
  var AR_F2=  sc_oresd(ar_dec); // L'Ascensione Retta decimale è trasformata in (h m s+2decimali)
  var AR_F3= sc_ore_hm(ar_dec); // L'Ascensione Retta decimale è trasformata in (h m )
  var AR_F4=sc_ore_hmd(ar_dec); // L'Ascensione Retta decimale è trasformata in (h m+1 decimale )

  document.write(AR_F1+"<br>");
  document.write(AR_F2+"<br>");
  document.write(AR_F3+"<br>");
  document.write(AR_F4);

Le funzioni precedenti possono essere utilizzate indifferentemente, per formattare l'ascensione retta decimale o le ore decimali; e riportano questi valori, sempre all'interno dell'intervallo orario 0-24 ore.
La funzione sc_oresd(), non deve essere utilizzata per l'ascensione retta della Luna e dei pianeti, in quanto la precisione realizzata dall'algoritmo di calcolo, non giustifica la presenza di decimali per i secondi d'arco; ma può essere utilizzata con l'ascensione retta del Sole.

//Risultati della formattazione per un valore decimale di ar_dec=22.5426538 :

22h. 32m. 33s.
22h. 32m. 33.55s.
22h. 32m.
22h. 32.6m.
//Per ar_dec o ore di tempo=256.325323 le funzioni restituiranno i seguenti valori:

16h. 19m. 31s.
16h. 19m. 31.16s.
16h. 19m.
16h. 19.5m.

//ar_dec è stato riportato all'interno dell'intervallo 0-24 ore e formattato:

Formattazione: Declinazione e angoli in gradi sessadecimali in (° ' ")

Per qualsiasi angolo sessadecimale si utilizzano queste funzioni.

    var angolo_dec=25.23563;              // Declinazione o angolo sessadecimale da formattare
    var DE_F1=   sc_angolo(angolo_dec);   // Declinazione sessadecimale è trasformata in (° ' ")
    var DE_F2=sc_angolo_sd(angolo_dec);   // Declinazione sessadecimale è trasformata in (° ' ")
    var DE_F3=sc_angolo_gm(angolo_dec,2); // Declinazione sessadecimale è trasformata in (° ' ")

    document.write(DE_F1+"<br>");
    document.write(DE_F2+"<br>");
    document.write(DE_F3+"<br>");
//Risultati della formattazione di un angolo_sessadecimale=25.23563;:
25º 14' 08''
25° 14' 08.27''
25° 14.14'

Per altri tipi di variabili (distanza, fase, ect.), utilizzate il comando toFixed(decimali) di Javascript per eliminare i decimali di troppo.

  // Utilizzate il comando toFixed() per eliminare i decimali in eccesso...

var PH=effemeridi[4].toFixed(5); //Distanza dalla Terra in U.A, con 5 decimali.
var MA=effemeridi[5].toFixed(2); //Diametro apparente del pianeta in secondi d'arco con 2 decimali.

Calcolo di una Effemeridi:

Listato completo, per calcolare una Effemeride per il pianeta Mercurio, dal 1 Marzo al 31 Marzo 2012.
...La variabile (STEP=1), indica l'intervallo di tempo, in questo caso è stato inserito 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 effemeride per il pianeta Mercurio.************ (inizio )

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

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

    var np=0;        // Selezionare il pianeta: np=0 per Mercurio.

    // 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>Diam.:</td>");
    document.write("   <td>Elongazione:</td>");
    document.write("   <td>Parallasse:</td>");
    document.write("   <td>Costellazione:</td>");
    document.write("   <td>Magnitudine:</td>");


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

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

         njd=njd+STEP;

         effemeridi=pos_pianeti(njd,np);        // Calcola una effemeridi per Mercurio.

         var AR=effemeridi[0];   // ascensione retta in ore decimali.
         var DE=effemeridi[1];   // declinazione in gradi sessadecimali.
         var  P=effemeridi[10];  // parallasse del pianeta in gradi (vedi tabella primo listato).

         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=costell2(AR);   //ATTENZIONE! Utilizzate AR decimale come parametro.

// AR_top è stato formattato con (sc_ore) e non può essere utilizzato nei calcoli numerici.
// DE_top è stato formattato con (sc_angolo) e non può essere utilizzato nei calcoli numerici.

          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].toFixed(2)+"</td>");
     document.write("     <td>"+sc_angolo(effemeridi[6])+"</td>");
     document.write("     <td>"+(effemeridi[10]*3600).toFixed(2)+"</td>");
     document.write("     <td>"+transit_cost+"</td>");
     document.write("     <td>"+effemeridi[3]+"</td>");
     document.write("   </tr>");
     }
     document.write(" </table>");

     //-->

</script>

Elenco delle variabili restituite 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_pianeti(njd,np):

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

    //effemeridi[0];   Ascensione Retta geocentrica - equinozio della data.
    //effemeridi[1];   Declinazione geocentrica - equinozio della data.
    //effemeridi[2];   Fase.
    //effemeridi[3];   Magnitudine.
    //effemeridi[4];   Distanza dalla Terra in U.A.
    //effemeridi[5];   Diametro apparente del pianeta in secondi d'arco.
    //effemeridi[6];   Elongazione in gradi sessadecimali.
    //effemeridi[7];   Longitudine geocentrica del Sole.
    //effemeridi[8];   Distanza della Terra dal Sole in U.A.
    //effemeridi[9];   Longitudine eliocentrica vera del pianeta.
    //effemeridi[10];  Parallasse diurna del pianeta in gradi.
    //effemeridi[11];  Distanza del pianeta dal Sole in U.A.
    //effemeridi[12];  Angolo di fase del pianeta.

3) 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)

Vedi pagina dedicata al calcolo di posizione del Sole, nel capitolo: Esempio numerico

Cambiare l'equinozio di riferimento

In tutti i listati, dove sono previsti calcoli di posizione, le coordinate equatoriali, sono sempre riferite all'equinozio medio della data.
Se avete la necessità, di dover riportare le coordinate ad uno specifico equinozio: ad esempio a quello del 2000.0, o al 1950.0 (oppure a quello di un'altro periodo), applicate questo listato.


 var njd0=calcola_jd();                       // Equinozio data iniziale.
 var njd1=calcola_jddata(1,1,1950,0,0,0);     // Equinozio data finale 1950.0.

 ar0=hams_dec(9,37,21.71);     // ascensione retta in hh:mm:ss. data iniziale
 de0=hams_dec(14,10,56.5);     // declinazione in gg:mm:ss. data iniziale

 // oppure inserite le coordinate direttamente in formato decimale.

 ar0=9.6226972;                // ascensione retta in ore decimali.
 de0=14.182361;                // declinazione in gradi sessadecimali.

 var eq=precess(njd0, njd1, ar0, de0);  // ar. e dec. per l'equinozio del 1950.0.

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

Se disponete di coordinate equatoriali, che fanno riferimento all'equinozio del 1950.0 e le volete riportare a quello del 2000.0; sostituite le prime due righe con queste:

 var njd0=calcola_jddata(1,1,1950,0,0,0);     // Equinozio data iniziale.
 var njd1=calcola_jddata(1,1,2000,0,0,0);     // Equinozio data finale.

Calcolo delle Opposizioni e Congiunzioni dei pianeti:

Con questo listato, è possibile calcolare la data della prossima opposizione (per i pianeti esterni), a partire da questo istante.
Nell'algoritmo è comunque compreso, il calcolo della congiunzione inferiore per Mercurio e Venere.

<script language="JavaScript" type="text/javascript">
    <!--
                 // Calcola la prossima opposizione di Marte.
                 // Usa la data odierna ....

    var np=3;    // Selezionare il pianeta Marte: np=3 

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

    var calc_opp=opp_cong(njd,np);  // Calcola la data dell'opposizione di Marte.

// La funzione (opp_cong), restituisce 4 variabili. 

//Stampa i risultati.

    document.write("G.G. Opposizione:"+calc_opp[0]+"<br>");             //Giorno Giuliano
    document.write("Long. eliocentrica Terra:"+calc_opp[1]+"<br>");     //in gradi decimali
    document.write("Long. eliocentrica pianeta: "+calc_opp[2]+"<br>"); //in gradi decimali 
    document.write("Periodo Sinodico in giorni"+calc_opp[3]+"<br>");    //in giorni decimali.


    //-->

</script>

Per trasformare il giorno giuliano nella data del calendario, utilizzate questo listato:


var data=jd_data(calc_opp[0]);
var gg=data[0].toFixed(0);  //Giorno senza decimali.
var mm=data[1];             //Mese.
var yy=data[2];             //Anno.

var data_opposizione =" "+gg+" : "+mm+" : "+yy;   //Stringa completa della data.

document.write("Data opposizione: "+data_opposizione+"<br>");      //data.

In questo calcolo non è fondamentale conoscere anche l'ora, di conseguenza ho arrotondato il giorno, eliminando i decimali.
Aggiungendo altre 4 righe, è possibile calcolare l'ascensione retta del Sole e del pianeta, per la data dell'opposizione, e verificare il nostro risultato. Se il calcolo è corretto, la differenza in ascensione retta tra Sole è pianeta dovrà essere di circa 12h (ore).


 var    ar_sole=pos_sole(calc_opp[0]);
 var ar_pianeta=pos_pianeti(calc_opp[0],np);

 document.write(ar_sole[0]+"<br>");
 document.write(ar_pianeta[0]);


Per la data calcolata dal listato, per l'opposizione del 2014, la differenza in AR tra Sole e Marte, non è esattamente di 12h (180°). ma c'è uno scarto di circa 1°. Questo è dovuto al fatto, che l'algoritmo, attraverso un ciclo di iterazioni, tende a far convergere, le longitudini eliocentriche della Terra e di Marte.
Di conseguenza, considerando che, l'orbita di Marte ha un'inclinazione di circa 1.85° sul piano dell'eclittica, e che non viene considerata nel calcolo; ci troveremo ad avere queste discrepanze, più o meno marcate, se l'evento si verifica lontano dai nodi.
Volendo, è possibile aumentare la qualità del calcolo, applicando un ciclo iterativo alle ascensioni rette, del Sole e del pianeta, utilizzando la data calcolata col metodo precedente, come prima approssimazione, e in modo tale da eliminare anche queste differenze.
Non dovrebbe essere molto complicato, ma personalmente, mi accontento del grado di precisione raggiungibile col metodo del listato.

Importante: Consultate la pagina [ Note ], 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