-
-
About us
-
The journal
-
Submit
-
Resources
-
Links
-
-
-
Journal of Computational Astronomy & Astronomical Computing (JCAAC)
JAAC 1, 57-63 (2024)
Section: Astronomical Computing
Cálculo del día juliano
T. Alonso, Starion/European Space Agency
talonsoalbi@gmail.com
Presentación
El objetivo de esta sección es desarrollar los fundamentos del cálculo de efemérides astronómicas desde una
perspectiva más moderna en comparación con otras fuentes disponibles. Este tipo de cálculos ha sido muy habitual
en el pasado en otras publicaciones conocidas como Sky & Telescope, pero con el tiempo esta tradición se ha perdido,
a pesar de que hoy día las aplicaciones y posibilidades de la programación se han multiplicado. Existen nuevos
lenguajes de programación que facilitan el trabajo, y la potencia de los ordenadores permite obtener resultados más
precisos y rápidos que nunca. Por otro lado, la mayoría de las fuentes de información disponibles en este campo
están escritas en inglés, lo que puede resultar un obstáculo para algunos aficionados.
Por tanto, en esta sección se presentará y explicará en castellano piezas de código que permitirán hacer multitud
de cálculos en astronomía. Para no excluir al público anglosajón se incluyen los comentarios del código en inglés,
además del resumen al principio del artículo. El lenguaje de programación elegido para presentar el código es
Java, que resulta muy verboso y fácil de leer e interpretar, si bien esto depende mucho de cómo se escriba y
documente el código. No es necesario que el lector lo escriba por sí mismo, sino que puede ser copiado desde
el repositorio de software disponible, para evitar errores de transcripción en las operaciones matemáticas. A lo
largo de múltiples artículos veremos desde los fundamentos más básicos como escalas de tiempo y cambios de
coordenadas, hasta aplicaciones más interesantes que incluirán obtener la posición precisa del Sol, los planetas, la
Luna y otros satélites, y la predicción de eclipses y otros eventos astronómicos. En esta primera ocasión veremos
cómo transformar fechas entre nuestro calendario y el día Juliano, que es la base para calcular intervalos de tiempo,
y así poder posteriormente obtener las posiciones de los astros.
El objetivo de esta sección no es servir como curso de programación, de manera que partimos de la idea de que el
lector ya tiene suficientes conocimientos de programación en un determinado lenguaje como para portar el código
a su lenguaje favorito, en el caso de que no sea Java. Históricamente estuvo muy extendido el uso de Basic, lo
que sigue siendo posible hoy día gracias a las múltiples herramientas de programación gratuitas que existen para
tan entrañable lenguaje (algunas como FreeBasic muy evolucionadas en comparación con el lenguaje original).
Habitualmente los ficheros de código Java se integran en un proyecto utilizando un Entorno de Desarrollo Integrado,
o IDE en inglés, que facilita mucho el trabajo, permitiendo también el uso del código Java para la programación en
dispositivos móviles como Android. El lector es libre de decidir cómo organizar su código y establecer los objetivos
que pretenda conseguir con él, pues el código presentado aquí puede utilizarse libremente respetando las normas
de distribución del repositorio.
Presentation
In this section we will develop algorithms to cover from the most basic calculations, like obtaining the
Julian day in this first chapter, to more complex ones that will allow us to calculate the positions of
the celestial bodies and astronomical events like eclipses and many others. The programming language
chosen to present the code is Java, but the readers are expected to write this code in their preferred lan-
guage, taking advantage of the software repository to avoid errors in the transcription of the mathematical
operations.
The Julian day is basically a continuous count of days, with the day 1 set to January 1, 4713 B.C, at
noon (UTC). It was developed by Joseph Scaliger and became soon a very useful system to count the
time interval between events. In astronomy is essential to compute how much the celestial bodies have
moved in a given interval of time, so the Julian day is used in most calculations. In the code presented,
the relevant calculations are located around lines 143 (to obtain the Julian day from a civil date in the
Gregorian calendar we use today, or even the old civil Julian calendar if the input boolean is set to true),
and from line 53, to do the opposite calculation from the Julian day to the civil calendar. The output in
the latter is set automatically to the Julian civil calendar for dates corresponding officially to this calendar,
before October, 5, 1582. Inexistent dates in 1582 between October, 5 and October, 14 cannot be used and
will throw an error. The code follows the astronomical convention for negative years, so year cero in the
program is year one B.C. in the calendar, and the first Julian day belongs to the year number -4712 in the
program. The comments included, the results presented in the main program at the end of the Java code,
and the many tools available online to obtain the Julian day should be enough for the reader to test the
calculations presented here.
The Journal of Computational Astronomy & Astronomical Computing is an effort by the FAAE - Grupo de Cálculo Astronómico (GCA) to
encourage the use of software tools and the development of codes and algorithms for astronomical applications within the framework of
amateur astronomy, as well as to connect the amateur community with the professional astronomy community and promote cross-collaboration and
ProAm projects between both groups.