2020-12-27
Calcular la fase lunar
Algunas cosas sobre la Luna
La Luna es el único satélite natural de la tierra y ha sido siempre una fascinación para el hombre puesto que es el objeto más luminoso del cielo nocturno, de ahí viene su nombre, ya que Luna significa "luminoso".
Una de las cosas que llama la atención es su tamaño en comparación con la tierra: tiene un diámetro del cuarto de la tierra y 1/81 de su masa; convirtiéndolo en el satélite más grande con respecto su planeta del sistema solar.
En realidad el satélite más grande con respecto su planeta es Caronte, pero en 2006 los astrónomos decidieron cambiar a Plutón de categoría pasando a ser un planeta enano con lo que el puesto paso a ser de la Luna.
Se desconoce el origen de su formación, pero la teoría más aceptada es que en edades tempranas de la Tierra está choco contra un objeto del tamaño de Marte, haciendo que material rocoso orbitase el planeta para formar la Luna.
En el año 150 a.C el astrónomo/geógrafo Hiparco midió la distancia de la Luna a la Tierra obteniendo una distancia media 348000Km. Hoy en día, gracias a la tecnología laser se ha calculado que la distancia media a la Luna es de 384000Km y que la esta distancia aumenta en 3.8 cm al año. Se mide la distancia media dado que la orbita lunar es una elipse (no es una circunferencia).
Después de siglos de observaciones y mediciones se han medido los siguientes parámetros:
- Revolución sinódica: es el intervalo de tiempo necesario para que la Luna vuelva a tener una posición análoga con respecto al Sol y a la Tierra. Su duración es de 29 d 12 h 44 min 2,78 s. También se le denomina lunación o mes lunar.
- Revolución sideral: es el intervalo de tiempo que le toma a la Luna volver a tener una posición análoga con respecto a las estrellas. Su duración es de 27 d 7 h 43 min 11,5 s.
- Revolución trópica: es el lapso necesario para que la Luna vuelva a tener igual longitud celeste. Su duración es de 27 d 7 h 43 min 4,7 s.
- Revolución draconítica: es el tiempo que tarda la Luna en pasar dos veces consecutivas por el nodo ascendente. Su duración es de 27 d 5 h 5 min 36 s.
- Revolución anomalística: es el intervalo de tiempo que transcurre entre 2 pasos consecutivos de la Luna por el perigeo. Su duración es de 27 d 13 h 18 min 33 s.
El mes lunar es el parámetro que usaremos para calcular las distintas fases lunares.
La libración lunar nos hace percibir que lo que vemos de la Luna varíe como si se estuviese balanceando. Estos movimientos dependen del la excentricidad de su órbita, al eje de inclinación de la tierra y al movimiento de rotación de esta.
En la siguiente imagen podemos ver el efecto de la libración:
La Luna Azul ocurre cuando en un mismo mes se presentan dos lunas llenas siendo la segunda llamada así. Ocurre cada 2.53 años.
Calcular la fase lunar
La fase lunar depende del día del mes lunar en el que estemos, con la ventaja de que cada en cada día de dicho mes estará siempre en la misma fase. Así, conociendo la fase de luna nueva, que ocurre el primer día del mes lunar, de un determinado día, el ciclo se repetirá una y otra vez a partir de ese día.
Basta buscar un día que sepamos que había luna nueva, por ejemplo, el 6 de Enero del año 2000 a las 14:24 era luna nueva. Ahora solo queda saber el número de días lunares que han ocurrido desde esa fecha.
El problema radica en que nuestro calendario actual, el gregoriano, tiene fallos: febrero tiene un día mas si es bisiesto, al mes de octubre de 1582 le quitaron 10 días (mira la Wikipedia para ver por qué), etc. Con lo que no es buena idea para mirar usar este calendario para eventos astronómicos. Por eso se utiliza el calendario Juliano
La fecha juliana, día juliano o JD (por sus siglas en inglés) es el número de días y fracción transcurridos desde el mediodía del 1º de Enero del año 4713 A.C.
Para calcular la fecha juliana hay varias ecuaciones/algoritmos, pero yo me quedo con estos dos:
/* * Cálculo del día Juliano. * Fuente: https://docs.kde.org/trunk5/es/extragear-edu/kstars/ai-julianday.html * */ float diaJuliano(long Y, long M, long D) { return (1461*(Y+4800+(M-14)/12))/4+(367*(M-2-12*((M-14)/12)))/12-(3*((Y+4900+(M-14)/12)/100))/4+D-32075; }
/* * Calcular día juliano. * Fuente: */ float j3(int yy, int mm, int dd, int hour=0, int min=0, int seg=0) { float y; float m; float d; float a,b; if ( mm <= 2 ) { y = yy-1; m = mm+12; } else { y = yy; m = mm; } d = dd + hour/24 + min/1440 + seg/86400 ; a = floor(y/100); b = 2 - a + floor(a/4); return floor(365.25*(y+4716)) + floor(30.6001*(m+1) ) + d + b - 1524.5; }
De las dos fórmulas anteriores, la primera parece ser mas sencilla pero solo será válida hasta el año 2099. La segunda presenta la ventaja de poder calcular el día juliano incluyendo la hora del día también.
Bien, ya tenemos todo lo necesario para calcular la fase de la luna.
Pero, ¿cuales son las fases de la luna? Quitando la luna llena y la luna nueva, habrás oído las fases de creciente (cuando pasa de nueva a llena) y menguante (de llena a nueva). Aquí te dejo una imagen que te dará una idea de las fases típicas de la luna.
Aquí te dejo un código fuente que funciona en Arduino para que puedas usarlo en tus sketches:
// Devuelve la fase lunar según el año, mes y día. // El valor devuelto será un entero indicando la fase: // 0: Luna nueva. // 1: Creciente. // 2: Cuarto creciente. // 3: Gibosa crecente. // 4: Luna LLena. // 5: Gibosa menguante. // 6: Cuarto menguante. // 7: Menguante. double MyNormalize(double v) { v = v - floor(v); if (v < 0) v = v + 1; return v; } int moonPhase(int nYear, int nMonth, int nDay) { int phase; double AG, IP; long YY, MM, K1, K2, K3, JD; YY = nYear - floor((12 - nMonth) / 10); MM = nMonth + 9; if (MM >= 12) { MM = MM - 12; } K1 = floor(365.25 * (YY + 4712)); K2 = floor(30.6 * MM + 0.5); K3 = floor(floor((YY / 100) + 49) * 0.75) - 38; JD = K1 + K2 + nDay + 59; if (JD > 2299160) { JD = JD - K3; } IP = MyNormalize((JD - 2451550.1) / 29.530588853); AG = IP * 29.53; phase = 0; if ((AG < 1.84566) && (phase == 0)) phase = 0; // Nuevo; 0% iluminada if ((AG < 5.53699) && (phase == 0)) phase = 1; // Creciente; 25% iluminada if ((AG < 9.922831) && (phase == 0)) phase = 2; // Primer trimestre; 50% iluminada if ((AG < 12.91963) && (phase == 0)) phase = 3; // Luna llena; 75% iluminada if ((AG < 16.61096) && (phase == 0)) phase = 4; // Completo; 100% iluminado if ((AG < 20.30228) && (phase == 0)) phase = 5; // Luna menguante; 75% iluminada if ((AG < 23.99361) && (phase == 0)) phase = 6; // El último trimestre; 50% iluminada if ((AG < 27.68493) && (phase == 0)) phase = 7; // Menguante; 25% iluminada if (phase == 0) phase = 0; // Por defecto a los nuevos; 0% iluminada return phase; }
Una última reflexión
La luna es apasionante, me dejo atrás los eclipses, sus efectos sobre la tierra, sobre el hombre, sobre la cultura, etc. Pero poder poner todo en un pequeño documento que trata sobre como calcular las fases de la luna sería casi un despropósito.
Si te apasiona, puedes recurrir a la red, donde encontrarás muchísima información y en la que podrás pasar horas de entretenimiento
Si quieres consultar la fase de la luna un día concreto te dejo este formulario hecho con JavaScript para jugar: