ESPACIO EN BLANCO

Astronomical Computing

Última actualización: 31 Octubre 2024
Visto: 374

JCAAC (2024), 1, 57–63

 

SECTION

Astronomical Computing

Tomás Alonso Albi 1

Agrupación Astronómica de Madrid and Universidad Autónoma de Madrid, 28049 Madrid, Spain. E-mail: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Keywords: programación, programming, efemérides, ephemerides, cálculo astronómico, astronomical computing
@ This article is licensed under a Creative Commons Attribution 4.0 License
Este artículo adjunta un software accesible en https://github.com/JCAAC-FAAE

 

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 language, 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 on line to obtain the Julian day should be enough for the reader to test the calculations presented here.

 

download .pdf


 

Journal CA&AC

Edited by The Federación de Asociaciones Astronómicas de España in Madrid (C/ Serrano, 117) - ISSN: 3045-5693


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.


This work is licensed under a Creative Commons Attribution 4.0 License