Cálculo de acimut a partir de coordenadas ecuatoriales

Intento obtener el acimut de un objeto a partir de sus coordenadas ecuatoriales usando esta fórmula:

a = arcán 2 ( pecado ( θ α ) , pecado φ porque ( θ α ) porque φ broncearse d )

Donde
φ = latitud geográfica del observador (aquí: 0°)
θ = tiempo sideral (aquí: 0°)
δ = declinación
α = ascensión recta

Hice dos funciones de JavaScript para implementar este cálculo:

  obliq = deg2rad(23.44);  // obliquity of ecliptic
  lat2  = deg2rad(0);  // observer's latitude
  lmst  = deg2rad(0);  // siderial time

  function equatorial(lat, lon) {
    // returns equatorial from ecliptic coordinates
    dec = Math.asin( Math.cos(obliq) * Math.sin(lat) + Math.sin(obliq) *
          Math.cos(lat) * Math.sin(lon));
    ra  = Math.atan2(Math.cos(obliq) * Math.sin(lon) - Math.sin(obliq) * Math.tan(lat),
          Math.cos(lon));
    ra += 2 * Math.PI * (ra < 0);
    return [dec, ra];
  }

  function horizontal(lat, lon) {
    // returns horizontal from ecliptic coordinates
    coords = equatorial(lat, lon);
    dec = coords[0];  // δ
    ra  = coords[1];  // α
    alt = Math.asin(Math.sin(lat2) * Math.sin(dec) + Math.cos(lat2) *
          Math.cos(dec) * Math.cos(lmst - ra));
    azm = Math.atan2(Math.sin(lmst - ra), Math.sin(lat2) * Math.cos(lmst - ra) -
          Math.cos(lat2) * Math.tan(dec));
    azm += 2 * Math.PI * (azm < 0);
    return [alt, azm];
  }

No puedo ver ningún error, pero obtengo resultados extraños para el azimut (a) como se puede ver en esta tabla (los otros valores parecen correctos):

   λ       δ         α         h         a
    0    0.0000    0.0000   90.0000    0.0000
   15    5.9094   13.8115   75.0000  246.5600
   30   11.4723   27.9104   60.0000  246.5600
   45   16.3366   42.5357   45.0000  246.5600
   60   20.1510   57.8186   30.0000  246.5600
   75   22.5962   73.7196   15.0000  246.5600
   90   23.4400   90.0000    0.0000  246.5600
  105   22.5962  106.2804  -15.0000  246.5600
  120   20.1510  122.1814  -30.0000  246.5600
  135   16.3366  137.4643  -45.0000  246.5600
  150   11.4723  152.0896  -60.0000  246.5600
  165    5.9094  166.1885  -75.0000  246.5600
  180    0.0000  180.0000  -90.0000  248.3079
  195   -5.9094  193.8115  -75.0000   66.5600
  210  -11.4723  207.9104  -60.0000   66.5600
  225  -16.3366  222.5357  -45.0000   66.5600
  240  -20.1510  237.8186  -30.0000   66.5600
  255  -22.5962  253.7196  -15.0000   66.5600
  270  -23.4400  270.0000   -0.0000   66.5600
  285  -22.5962  286.2804   15.0000   66.5600
  300  -20.1510  302.1814   30.0000   66.5600
  315  -16.3366  317.4643   45.0000   66.5600
  330  -11.4723  332.0896   60.0000   66.5600
  345   -5.9094  346.1885   75.0000   66.5600
  360   -0.0000  360.0000   90.0000   68.3079

¿Alguien ve el error? Gracias.

Esto es más depuración que astronomía, ¿quizás más adecuado para stackoverflow? No obtengo sus valores en una prueba rápida en la consola de Chrome; Le sugiero que imprima los valores intermedios para ver qué está pasando.
Depende de donde este el error. Supongo que está en la fórmula original y no en el código. Pero no se si la fórmula es correcta o no, por eso pregunto. Si alguien puede confirmar que la fórmula debería generar los valores correctos, buscaría el error en mi implementación. El ejemplo de código es solo para documentar mi enfoque.

Respuestas (1)

lat2= 0 y lmst= 0 colocan el equinoccio de primavera en el cenit, por lo que la mayoría de los puntos de la eclíptica deberían tener un azimut en obliqgrados al norte del este o obliqgrados al sur del oeste. Pruebe otros valores para lat2o lmsty vea si los acimutes resultantes tienen sentido.

Cuando pruebo datos reales como lmst= 184.18° (12h16m); obliq= 23,44° para obtener el acimut de Venus el 27 de mayo de 2016 a las 19 h TU para Berlín ( lat2= 52,52°; lon2= 13,41667°) la función devuelve 127,38° pero el Almanaque astronómico dice que debería ser 307,366°. δ, αy hson según el Almanaque.
Ajá, los acimutes en tu tabla también están 180 desviados . Negar ambos argumentos de atan2.