Conversión de coordenadas ecuatoriales a coordenadas horizontales

Se trata de convertir coordenadas celestes desde coordenadas ecuatoriales a coordenadas horizontales pasando a través de las Coordenadas horarias.

El sistema de coordenadas ecuatoriales no es un Sistema de coordenadas local por lo que las coordenadas ascensión recta y declinación no cambian para los distintos observadores, las Coordenadas horizontales es un Sistema local por lo que las coordenadas altura y acimut cambian para los distintos observadores.

Applet en Java-Script

Un script de JavaScript[1] que hace esto es:

<SCRIPT LANGUAGE="JavaScript">
<!-- hide this script tag's contents from old browsers
function compute(form) {
    AH=eval(form.arh.value)
    AM=eval(form.arm.value)
    AS=eval(form.ars.value)
    DG=eval(form.dcg.value)
    DM=eval(form.dcm.value)
    DS=eval(form.dcs.value)
    DD=eval(form.nday.value)
    MN=eval(form.nmonth.value)
    YR=eval(form.nyear.value)
    TH=eval(form.th.value)
    TM=eval(form.tm.value)
    TS=eval(form.ts.value)
    LG=eval(form.lg.value)
    LM=eval(form.lm.value)
    LS=eval(form.ls.value)
    BG=eval(form.bg.value)
    BM=eval(form.bm.value)
    BS=eval(form.bs.value)
    with (Math) { 
        <!--Datos entrada-->
        RA=AH+AM/60+AS/3600
        <!--Declinación-->
        DC=DG+DM/60+DS/3600
        <!--latitud-->
        LT=BG+BM/60+BS/3600
        <!--longitud-->
        LG=LG+LM/60+LS/3600
        <!--fecha juliana-->
        HR = TH + TM / 60+TS/3600;
        DD=DD+HR/24
        DY = floor(DD)
        if (MN<3) {
                YR = YR - 1;
                MN = MN + 12;
                }
        if (YR + MN / 100 + DY / 10000 >= 1582.1015)  {
                GR =2-floor(YR/100)+floor(floor(YR/100)/4)
                } else {
                        GR = 0
                        }
        JD=floor(365.25* YR)+floor(30.6001*(MN+1))+DY+1720994.5+GR  
        T=(JD- 2415020)/36525
        SS= 6.6460656 + 2400.051*T +0.00002581*T*T
        <!--tiempo sidereo a 0h Greenwich-->
        ST =(SS/24-floor(SS/24))*24
        <!--Tiempo sidereo local-->
        SA=ST+(DD-floor(DD))*24*1.002737908
        SA=SA+LG/15
        if (SA<0) {
                SA=SA+24
                }
        if (SA>24) {
                SA=SA-24
                }
        <!--conversion a hms del Tiempo sidereo local-->
        TSH=floor(SA);
        TSM=floor((SA - floor(SA)) * 60)
        TSS=((SA -floor(SA)) * 60 - TSM) * 60
        <!--Angulo horario-->
        H=SA-RA
        if (H < 0) {
                H = H + 24
                }
        H = H * 15
        R =180/PI
        AL=asin(sin(DC/R)*sin(LT/R)+cos(DC/R)*cos(LT/R)*cos(H/R))
        AZ=acos((-sin(DC/R)*cos(LT/R)+sin(LT/R)*cos(DC/R)*cos(H/R))/cos(AL))
        AZ = AZ * R
        if (sin(H / R) < 0) {
                AZ = 360 - AZ
                }
        <!--conversion a gms del acimut-->
        AZG=floor(AZ);
        AZM=floor((AZ - floor(AZ)) * 60)
        AZS=((AZ -floor(AZ)) * 60 - AZM) * 60
        AL=AL*R;
        <!--conversion a g.ms de la altura-->
        D = abs(AL);
        if (AL>0) {
                ALG=floor(D)
                } else {
                ALG=(-1)*floor(D)
                }
        ALM=floor((D - floor(D)) * 60)
        ALS = ((D - floor(D)) * 60 - ALM) * 60
        if (AL<0) {
                ALM=-ALM;
                ALS=-ALS;
                }
    }
    form.tsl.value =SA;
    form.tsh.value =TSH;
    form.tsm.value =TSM;
    form.tss.value =TSS;
    form.acimut.value=AZ;
    form.azg.value =AZG;
    form.azm.value =AZM;
    form.azs.value =AZS;
    form.altura.value=AL;
    form.alg.value =ALG;
    form.alm.value =ALM;
    form.als.value =ALS;
    
     
}
// done hiding from old browsers -->
</SCRIPT>

Basta con guardarlo en un archivo.

Other Languages