Maanfase I

Als het niet tot op de seconde hoeft te kloppen dan is de formule om de huidige maanfase te berekenen is verrassend simpel:

var d = new Date();
k = 12.3685 * ( d.getTime() / 31557600000 - 30.0144003346 ) % 1;

k=0,00 : nieuwe maan
k=0,25 : eerste kwartier
k=0,50 : volle maan
k=0,75 : laatste kwartier

De oorspronkelijke formule komt uit Astronomical Formulae for Calculators van Jean Meeus. Ik heb de formule aangepast zodat deze met Unix Time werkt.


Voor de nerds: 12.3685 is het aantal maancycli in een jaar, 31557600000 is het aantal milliseconden in een jaar en 30.0144003346 is het aantal jaar tussen het begin van het Unix Epoch op donderdag 1 januari 1970 om middernacht en de eerste nieuwe maan in het J2000 epoch op donderdag 6 januari 2000 om 20:14 UTC. Altijd weer die donderdag…


vervolgens kiest het script er één van een selectie van zestien afbeeldingen bij. Eigenlijk zou ik de maan willen renderen, zodat de werkelijke continu veranderende fase zichtbaar is, maar de bedoeling voor deze code is dat de maanfase een klein ikoontje in de hoek van deze site wordt, dus dit is een afdoende oplossing.

Update: Ik heb de code voorlopig verstopt in het hoofdmenu: /themes/minimo/layouts/partials/nav/menus/main.html