Estoy tratando de mejorar un sitio que muestra la región de la Tierra actualmente bajo la luz del día, y necesito una fórmula que, dada la hora actual, indique dónde (latitud/longitud) se encuentran el sol y la luna, con una precisión de 1 milla. ¿Alguien puede pensar en uno?
Idealmente, espero obtener algo que JavaScript pueda calcular a una "velocidad razonable" sin recursividad, bucles o bibliotecas adicionales.
He intentado varias cosas (por ejemplo, la serie de Fourier en RA/DEC del Sol/Luna), pero nada parece lo suficientemente preciso.
Nota: Me doy cuenta de que mis cálculos para la salida/puesta del sol/luna ignoran la refracción y el paralaje lunar: por ahora, me estoy enfocando en encontrar las posiciones superiores. Me doy cuenta de que puedo extraer datos de un programa CGI que no sea JavaScript (y lo he intentado), pero parece un acceso innecesario a la red.
EDITAR: Gracias, Dustin y todos.
En realidad, conozco http://ssd.jpl.nasa.gov/?horizons e incluso escribí programas para descargar y analizar sus datos ( https://github.com/barrycarter/bcapps/blob/master/bc- email-horizons.pl y https://github.com/barrycarter/bcapps/blob/master/bc-parse-horizons.pl ) con la esperanza de encontrar fórmulas simples ( https://github.com/barrycarter/bcapps/ blob/master/bc-fourier-cont.m y otros), pero no llegó a ninguna parte.
Me doy cuenta de que podría codificar los datos en mi JavaScript, pero eso haría que el script fuera innecesariamente grande.
Actualmente, reconstruyo el script cada minuto ( https://github.com/barrycarter/bcapps/blob/master/bc-sun-always-shines.pl ) usando datos JPL interpolados (los archivos sun/moonfakex/y.txt en https://github.com/barrycarter/bcapps/tree/master/data ), pero esto parece increíblemente complicado.
Esta puede ser una pregunta intrínsecamente difícil y/o sin sentido: para obtener una precisión de 1 milla, debe calcular la posición dentro de los 52 segundos del arco, que es considerablemente más pequeño que el ancho de 30 minutos (1800 segundos) del sol y la luna. .
El objetivo final es permitir que las personas se acerquen a su ciudad en los mapas de Google y vean la puesta de sol "barrer" sobre su ciudad (es decir, predecir que el sol se está poniendo sobre cierta parte de la ciudad y hacer que la gente en esa parte de la ciudad lo confirme ), pero dada la refracción y el paralaje, esto puede ser imposible.
Nadie más ha respondido, así que lo haré, pero voy a ignorar los detalles y hablaré con la geometría. La latitud del punto subsolar es simplemente la declinación del Sol. Deberías poder convencerte fácilmente de eso. La longitud es un poco más desafiante. Sabes que cuando el Sol está en el cenit, también debe estar en el meridiano celeste local. Eso significa que su ángulo horario local (LHA) debe ser cero. Sabes que LHA es la diferencia entre la hora sideral local (LST) y la ascensión recta (RA) del Sol. Para que LHA sea cero, debe tener LHA = RA. Si conoce LHA y la hora sidérea en Greenwich (GST), la diferencia entre las dos es la longitud requerida. Descuidé la diferencia entre el tiempo sideral medio y aparente y las coordenadas medias, aparentes y topocéntricas del Sol. Puede dar cuenta de estos.
Se puede aplicar un proceso similar a la Luna para encontrar el punto sublunar.
Larry O'Brien
Valle
polvo