Attenzione! Javascript è disabilitato

Il Cielo Delle Baronie

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

Versione inglese

ASTROJS - Esempi di codice: Sorgere, Transito e Tramonto di un astro

Listati realizzati per il calcolo del Sorgere, Transito e Tramonto (STT) di un astro, compresi gli azimut.
Tutti gli algoritmi tengono conto della rifrazione atmosferica e dell'altitudine del osservatore.
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 i dati per questo istante:

Calcola il sorgere, transito e tramonto di un astro in questo istante, compresi gli azimut del sorgere e del tramontare.
I tempi sono espressi in Tempo locale, compresa l'ora legale quando è in vigore.
Gli azimut del sorgere, del tramontare e i tempi, sono riferiti alla località indicata nelle coordinate geografiche.
Come esempio è stata utilizzata la stella Sirio.

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

   // coordinate equatoriali della stella Sirio.
   // AR:   6h 45m 8.917s. 
   // DE: -16° 42′ 58.017″ 

   var  AR=hams_dec(6,45,8.917)   ;  // AR. in ore decimali.
   var  DE=hams_dec(-16,42,58.017);  // DE. in gradi sessadecimali.

   var LON=12.255;    // LON: longitudine negativa W, positiva per E.
   var LAT=40.526;    // LAT: latitudine della località. Negativa per l'emisfero sud
   var ALT=125;       // ALT: altitudine in metri sul livello del mare (decimali non necessari)
   var RAG=0;         // RAG: dimensioni apparenti in gradi dell'astro.
                      // Questo valore è uguale a 0.25 gradi solo per la Luna e il Sole.

    var dati_ast=ST_ASTRO(AR,DE,LON,LAT,ALT,RAG); // I tempi in T.U. e gli azimut.

    // Trasformazione degli Istanti, da T.U. a Tempo Locale (compresa l'ora legale).

    var t_locale=-fuso_loc(); //calcola le ore da aggiungere al T.U. per avere il tempo locale.

    // verifica se il tempo locale ricade all'interno dell'intervallo 0-24

    var    sorge= ore_24(dati_ast[2]+t_locale); // verifica intervallo 0-24
    var transita= ore_24(dati_ast[3]+t_locale); // verifica intervallo 0-24
    var tramonta= ore_24(dati_ast[4]+t_locale); // verifica intervallo 0-24

     // Recupero dei dati dall'array dati_ast[] e formattazione.

     var  azimut_s=sc_angolo_gm(dati_ast[0],1); // Azimut del sorgere con 1 decimali.
     var  azimut_t=sc_angolo_gm(dati_ast[1],1); // Azimut del tramontare con 1 decimali.
     var     sorge=sc_ore_hm(sorge);            // Sorge in hh|mm.
     var  transita=sc_ore_hm(transita);         // Transita in hh|mm.
     var  tramonta=sc_ore_hm(tramonta);         // Tramonta in hh|mm.

     document.write("Azimut s:"+azimut_s+"<br>");  // scrive il risultato.
     document.write("Azimut t:"+azimut_t+"<br>");  // scrive il risultato.
     document.write("Sorge:"+sorge+"<br>");        // scrive il risultato.
     document.write("Transita:"+transita+"<br>");  // scrive il risultato.
     document.write("Tramonta:"+tramonta+"<br>");  // scrive il risultato.

    //-->

</script>

Dopo aver aggiunto al T.U. le ore per avere il Tempo locale, la funzione ore_24(tempo locale) verificherà se l'istante ricade all'interno dell'intervallo 0-24, e applicherà una correzione, se necessaria.
Infatti può capitare che un astro tramonti alle 23 T.U., applicando una correzione di +2 ore, avremmo, per il nostro tempo locale, che quell'astro tramonterà alle 25. Con la funzione ore_24(25) l'istante diventa: ore 1, del giorno dopo, naturalmente.

Calcolare gli istanti per altre date:

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

   // I tempi sono in Tempo Locale.
   // Gli azimut sono riferiti alla località indicata nelle coordinate geografiche.
   // Inserire le variabili.
   // L'ascensione retta e la declinazione, sono già in formato decimale.

   var AR= 15.256;    // Ascensione Retta in ore decimali.
   var DE=-25.365;    // Declinazione in gradi sessadecimali.
   var LON=12.255;    // LON: longitudine negativa W, positiva per E.
   var LAT=40.526;    // LAT: latitudine della località. Negativa per l'emisfero sud
   var ALT=125;       // ALT: altitudine in metri sul livello del mare (decimali non necessari)
   var RAG=0;         // RAG: dimensioni apparenti in gradi dell'astro.
                      // Questo valore è uguale a 0.25 gradi solo per la Luna e il Sole.

   var dd=23;         // giorno.
   var mm=6;          // mese.
   var yy=2011;       // anno.
   var hh=0;          // ora: sempre=0.
   var mi=0;          // minuti: sempre=0
   var se=0;          // secondi: sempre=0

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

    var dati_ast=ST_ASTRO_DATA(njd,AR,DE,LON,LAT,ALT,RAG); // I tempi e gli azimut.

    // Trasformazione degli Istanti, da T.U. a Tempo Locale.

    var t_locale=hh_loc(1,njd); //calcola le ore da aggiungere al T.U. per avere il Tempo Locale.
                                //il parametro (1) corrisponde al nostro fuso orario.

    var    sorge= ore_24(dati_ast[2]+t_locale);
    var transita= ore_24(dati_ast[3]+t_locale);
    var tramonta= ore_24(dati_ast[4]+t_locale);

     // Recupero dei dati dall'array dati_ast[] e formattazione.

     var  azimut_s=sc_angolo_gm(dati_ast[0],1);  // Azimut del sorgere con 1 decimali.
     var  azimut_t=sc_angolo_gm(dati_ast[1],1);  // Azimut del tramontare con 1 decimali.
     var     sorge=sc_ore_hm(dati_ast[2]);       // Sorge in hh|mm.
     var  transita=sc_ore_hm(dati_ast[3]);       // Transita in hh|mm.
     var  tramonta=sc_ore_hm(dati_ast[4]);       // Tramonta in hh|mm.


     document.write("Azimut s:"+azimut_s+"<br>");    // scrive il risultato.
     document.write("Azimut t:"+azimut_t+"<br>");    // scrive il risultato.
     document.write("Sorge:"+sorge+"<br>");          // scrive il risultato.
     document.write("Transita:"+transita+"<br>");    // scrive il risultato.
     document.write("Tramonta:"+tramonta+"<br>");    // scrive il risultato.

    //-->

</script>

In questo listato è stata sostituita la funzione fuso_loc() con hh_loc(1,njd), in quanto la prima, recupera il fuso orario e l'ora legale, per questo istante; mentre la seconda è valida per qualsiasi data.

Il Sole

Per il Sole ho predisposto un algoritmo, che tiene conto del suo moto apparente non trascurabile (circa 1° al giorno). L'algoritmo applica un ciclo di 5 iterazioni, in grado di calcolare i tre istanti STT. con sempre maggior precisione. La funzioni restituisce i risultati solo dopo aver completato tutte e 5 le iterazioni. Per il Sole non è stata prevista la correzione della parallasse, ma si tratta di soli 8" d'arco.
Gli istanti del sorgere e del tramontare sono riferiti al lembo superiore del disco solare.

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

   // I tempi sono in T.U. di Greenwich.
   // Gli azimut sono riferiti alla località indicata nelle coordinate geografiche.
   // Inserire le variabili.

   var LON=12.255;    // LON: longitudine negativa W, positiva per E.
   var LAT=40.526;    // LAT: latitudine della località. Negativa per l'emisfero sud
   var ALT=125;       // ALT: altitudine in metri sul livello del mare (decimali non necessari)

   var dd=2;          // giorno.
   var mm=1;          // mese.
   var yy=2012;       // anno.
   var hh=0;          // ora.
   var mi=0;          // minuti.
   var se=0;          // secondi.

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

    var dati_ast=ST_SOLE(njd,LON,LAT,ALT); // I tempi e gli azimut.

     // Recupero dei dati dall'array dati_ast[] e formattazione.

     var  azimut_s=sc_angolo_gm(dati_ast[0],1); // Azimut del sorgere con 1 decimali.
     var  azimut_t=sc_angolo_gm(dati_ast[1],1); // Azimut del tramontare con 1 decimali.
     var     sorge=sc_ore_hm(dati_ast[2]);   // Sorge in hh|mm.
     var  transita=sc_ore_hm(dati_ast[3]);   // Transita in hh|mm.
     var  tramonta=sc_ore_hm(dati_ast[4]);   // Tramonta in hh|mm.


     document.write("Azimut s:"+azimut_s+"<br>");    // scrive il risultato.
     document.write("Azimut t:"+azimut_t+"<br>");    // scrive il risultato.
     document.write("Sorge:"+sorge+"<br>");          // scrive il risultato.
     document.write("Transita:"+transita+"<br>");    // scrive il risultato.
     document.write("Tramonta:"+tramonta+"<br>");    // scrive il risultato.

    //-->

</script>

L'istante del transito del Sole corrisponde al mezzogiorno vero locale.
Per avere gli eventi in tempo locale, utilizzate la funzione: hh_loc(1,njd), come nel listato precedente.

La Luna

Anche per la Luna ho predisposto un algoritmo apposito, a causa del suo moto apparente, ancora più veloce di quello del Sole (circa 13° al giorno).
L'algoritmo applica un ciclo di 10 iterazioni, in grado di calcolare i tre istanti STT. con sempre maggior precisione.
La funzioni restituisce i risultati solo dopo aver completato tutte e 10 le iterazioni. Per la Luna non può essere trascurato l'effetto dovuto alla parallasse, di conseguenza è stata applicata la correzione alle coordinate equatoriali geocentriche, prima di calcolare STT.
La funzione per il calcolo delle coordinate topocentriche apparenti della Luna è già implementata nella funzione ST_LUNA(...).
Gli istanti del sorgere e del tramontare sono riferiti al lembo superiore del disco lunare.

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

   // I tempi sono in T.U. 
   // Gli azimut sono riferiti alla località indicata nelle coordinate geografiche.
   // Inserire le variabili.

   var LON=12.255;    // LON: longitudine negativa W, positiva per E.
   var LAT=40.526;    // LAT: latitudine della località. Negativa per l'emisfero sud
   var ALT=125;       // ALT: altitudine in metri sul livello del mare (decimali non necessari)

   var dd=2;          // giorno.
   var mm=1;          // mese.
   var yy=2012;       // anno.
   var hh=0;          // ora.
   var mi=0;          // minuti.
   var se=0;          // secondi.

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

    var dati_ast=ST_LUNA(njd,LON,LAT,ALT); // I tempi e gli azimut.

     // Recupero dei dati dall'array dati_ast[] e formattazione.

     var  azimut_s=sc_angolo_gm(dati_ast[0],1); // Azimut del sorgere con 1 decimali.
     var  azimut_t=sc_angolo_gm(dati_ast[1],1); // Azimut del tramontare con 1 decimali.
     var     sorge=sc_ore_hm(dati_ast[2]);   // Sorge in hh|mm.
     var  transita=sc_ore_hm(dati_ast[3]);   // Transita in hh|mm.
     var  tramonta=sc_ore_hm(dati_ast[4]);   // Tramonta in hh|mm.


     document.write("Azimut s:"+azimut_s+"<br>");    // scrive il risultato.
     document.write("Azimut t:"+azimut_t+"<br>");    // scrive il risultato.
     document.write("Sorge:"+sorge+"<br>");          // scrive il risultato.
     document.write("Transita:"+transita+"<br>");    // scrive il risultato.
     document.write("Tramonta:"+tramonta+"<br>");    // scrive il risultato.

    //-->

</script>

Sorgere, transito e tramonto dei pianeti:

Anche per i pianeti ho predisposto un algoritmo apposito, per non trascurare il loro moto proprio giornaliero. Non è prevista la correzione per la parallasse, in quanto per i pianeti è sempre dell'ordine dei secondi d'arco, quindi molto piccola.

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

   // I tempi sono riferiti a Greenwich.
   // Gli azimut sono riferiti alla località indicata nelle coordinate geografiche.
   // Inserire le variabili.

   var LON=12.255;    // LON: longitudine negativa W, positiva per E.
   var LAT=40.526;    // LAT: latitudine della località. Negativa per l'emisfero sud
   var ALT=125;       // ALT: altitudine in metri sul livello del mare (decimali non necessari)

   var dd=2;          // giorno.
   var mm=1;          // mese.
   var yy=2012;       // anno.
   var hh=0;          // ora.
   var mi=0;          // minuti.
   var se=0;          // secondi.

    var np=4;         // np=4 per il pianeta Giove

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

    var dati_ast=ST_PIANETI(njd,np,LON,LAT,ALT); // I tempi e gli azimut.

     // Recupero dei dati dall'array dati_ast[] e formattazione.

     var  azimut_s=sc_angolo_gm(dati_ast[0],1); // Azimut del sorgere con 1 decimali.
     var  azimut_t=sc_angolo_gm(dati_ast[1],1); // Azimut del tramontare con 1 decimali.
     var     sorge=sc_ore_hm(dati_ast[2]);   // Sorge in hh|mm.
     var  transita=sc_ore_hm(dati_ast[3]);   // Transita in hh|mm.
     var  tramonta=sc_ore_hm(dati_ast[4]);   // Tramonta in hh|mm.


     document.write("Azimut s:"+azimut_s+"<br>");    // scrive il risultato.
     document.write("Azimut t:"+azimut_t+"<br>");    // scrive il risultato.
     document.write("Sorge:"+sorge+"<br>");          // scrive il risultato.
     document.write("Transita:"+transita+"<br>");    // scrive il risultato.
     document.write("Tramonta:"+tramonta+"<br>");    // scrive il risultato.

    //-->

</script>

Il numero di riferimento per i pianeti, da utilizzare nella variabile np:

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

Astri Circumpolari:

Durante i calcoli, dovete considerare l'eventualità che l'astro, possa essere circumpolare, cioè alla nostra latitudine, non tramonta mai.
Per questa categoria di astri non dobbiamo applicare il calcolo. Per trovare il valore minimo della declinazione di un astro, oltre il quale, deve essere considerato circumpolare, usate questo listato:

var        LAT=42.5;      // Latitudine dell'osservatore in gradi sessadecimali. 

var Dec_minima=90-LAT;    // calcola la declinazione minima di una stella 
    Dec_minima=47.50;     // risultato.

Il valore +47.50 di declinazione, significa, che un osservatore situato a 42.5 gradi nord. di latitudine, considera circumpolari tutti gli astri con declinazione superiore a questo valore. La stella Dubhe (alfa Orsa Maggiore), ha una declinazione di +61.75 maggiore del limite +47.50; di conseguenza è una stella circumpolare.
Per un osservatore situato a una latitudine inferiore a +28.25N. quella stella, tramonterà sempre.

Astri Anticircumpolari :

Gli astri anticircumpolari, sono invece quelli, che a una certa latitudine dell'osservatore, non sorgono mai. Per calcolare il valore della declinazione; applicate il metodo precedente e invertite il segno.
Nel caso di un osservatore situato a 42.5N il valore della declinazione per gli astri anticircumpolari sarà -47.50.
Nei vostri listati, considerate i due casi e create un'istruzione condizionale if( ){...}, che blocchi il calcolo e visualizzi, eventualmente, un messaggio informativo.

Astri Occidui:

Gli astri che non sono né circumpolari né anticircumpolari, sono detti Occidui e sono quelli che a noi interessano per i calcoli.

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