Calendario ático

Publicado el 3 de Targelión, Ol.700.3. Actualizado el 29 de Esciroforión, Ol.700.3.

attic.c

attic.c es un programa en C que muestra la fecha actual en el calendario ático (el calendario festivo lunisolar usado en la antigua Atenas) en el terminal sin necesidad de usar servicios en línea. Es una traducción a C del algoritmo escrito por Xanthe en Javascript con varias adiciones de mi parte. El programa usa la librería SunCalc que también traduje a C (o al menos solo las partes que necesitaba).

Por defecto el programa calcula solsticios y lunas nuevas al amanecer desde el punto de vista de tu ubicación, no de Atenas. Esto puede ser cambiado en las opciones, pero es una diferencia con el algoritmo de Xanthe que debes tener en cuenta. Hice este cambio porque considero que tiene más sentido que la fecha lunisolar refleje el cielo local. Esto obviamente significa que la fecha ática calculada puede no ser la misma en todo el mundo debido a que las lunas nuevas no ocurren a la misma hora globalmente (aunque sí en el mismo momento).

El programa asume que el día empieza al atardecer, a diferencia del calendario gregoriano. Es posible cambiar las opciones para que los días empiecen al amanecer o a medianoche, a gusto.

Dado que el programa debe calcular atardeceres, puede que no funcione muy bien dentro de los círculos polares.

Usa attic.c en conjunto con hora.c para también estar al tanto de la hora.

Puede que hayan inexactitudes en los cálculos y errores en el código. No pretendo que attic.c sea un programa autoritativo, es decir, que calcule la fecha ática estándar, así que úsalo bajo tu propio riesgo.

Uso

Para usar attic.c, descarga el código fuente

  1. attic.c
  2. suncalc.c
  3. suncalc.h

y compila el programa con cc -o attic attic.c suncalc.c -lm. Al ejecutarlo sin opciones, la fecha ática actual se muestra en el formato Ol.(olimpiada).(año de la olimpiada) (nombre del mes) (día del mes):

Ol.700.3 Thargelion 3

Opciones

-r: se muestra la fecha ática con sus valores en bruto (olimpiada año mes día) separados por espacios para su uso en otros programas. Aquí el mes es un número del 0 al 12, donde 0 es hecatombeón. 6 siempre es el mes intercalar posideón II, por lo que 7 es gamelión y así sucesivamente.

700 3 11 3

-i: se muestra la fecha ática en formato pseudo-ISO 8601 (OOO-Y-MM-DD). Aquí los meses siempre van de 1 a 12, pero en un año bisiesto el mes intercalar posideón II se muestra como 06.2.

700-3-11-03

-a: se muestra la fecha ática como sin opciones, excepto que el nombre del mes está abreviado.

Ol.700.3 Tha. 3

Configuración

Si necesitas cambiar más opciones del programa, te invito a modificar el código fuente y recompilar el programa. Los siguientes macros alteran el comportamiento del programa:

¿Comentarios? Dime qué piensas en el libro de visitas.