Attenzione! Javascript è disabilitato

Il Cielo Delle Baronie

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

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>

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 e 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 in ore decimali.
     document.write("Azimut t:"+azimut_t+"<br>");  // scrive il risultato in ore decimali.
     document.write("Sorge:"+sorge+"<br>");        // scrive il risultato in ore decimali.
     document.write("Transita:"+transita+"<br>");  // scrive il risultato in ore decimali.
     document.write("Tramonta:"+tramonta+"<br>");  // scrive il risultato in ore decimali.

    //-->

</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 necessario.
Infatti può capitare che un astro tramonti alle 23 T.U., applicando una correzione di 2 ore, avremmo che, per il nostro tempo locale, quell'astro tramonterà alle 25. Con la funzione ore_24(25) l'istante diventa: ore 1.

Calcolare gli istanti per altre date:

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

    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 in ore decimali.
     document.write("Azimut t:"+azimut_t+"<br>");    // scrive il risultato in ore decimali.
     document.write("Sorge:"+sorge+"<br>");          // scrive il risultato in ore decimali.
     document.write("Transita:"+transita+"<br>");    // scrive il risultato in ore decimali.
     document.write("Tramonta:"+tramonta+"<br>");    // scrive il risultato in ore decimali.

    //-->

</script>

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

Il Sole

Per il Sole ho predisposto un algoritmo apposito, a causa 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 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: 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_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 in ore decimali.
     document.write("Azimut t:"+azimut_t+"<br>");    // scrive il risultato in ore decimali.
     document.write("Sorge:"+sorge+"<br>");          // scrive il risultato in ore decimali.
     document.write("Transita:"+transita+"<br>");    // scrive il risultato in ore decimali.
     document.write("Tramonta:"+tramonta+"<br>");    // scrive il risultato in ore decimali.

    //-->

</script>

L'istante del transito del Sole corrisponde al mezzogiorno vero locale.

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

<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: 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_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 in ore decimali.
     document.write("Azimut t:"+azimut_t+"<br>");    // scrive il risultato in ore decimali.
     document.write("Sorge:"+sorge+"<br>");          // scrive il risultato in ore decimali.
     document.write("Transita:"+transita+"<br>");    // scrive il risultato in ore decimali.
     document.write("Tramonta:"+tramonta+"<br>");    // scrive il risultato in ore decimali.

    //-->

</script>

I 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: sempre=0.
   var mi=0;          // minuti: sempre=0
   var se=0;          // secondi: sempre=0

    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 in ore decimali.
     document.write("Azimut t:"+azimut_t+"<br>");    // scrive il risultato in ore decimali.
     document.write("Sorge:"+sorge+"<br>");          // scrive il risultato in ore decimali.
     document.write("Transita:"+transita+"<br>");    // scrive il risultato in ore decimali.
     document.write("Tramonta:"+tramonta+"<br>");    // scrive il risultato in ore decimali.

    //-->

</script>

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