Changelog

View Source

All notable changes to this project are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.0.0] - 2024-07-03

First public release.

Added

  • sonnenstand module with the public API: day_of_year/1, declination/1, equation_of_time/1, hour_angle/2, elevation/3, and azimuth/3.
  • Type specs and EDoc documentation for all public functions.
  • EUnit test suite, including reference values for Berlin and a regression test for the azimuth quadrant.
  • Validation suite against the NOAA Solar Calculator (Berlin, Johannesburg, and Sydney at the solstices and equinoxes), confirming solar noon to within ~30 s and sunrise/sunset to within a few minutes. See test/sonnenstand_noaa_tests.erl.
  • rebar3 project setup with Dialyzer and ex_doc configuration.

Changed

  • English public API replacing the previous mixed German/English names (hoeheelevation, azimutazimuth, zeitgleichungequation_of_time, stundenwinkelhour_angle).
  • Degree-to-radian conversion now uses math:pi()/180 instead of a hardcoded constant, improving precision.
  • Date/time inputs are now interpreted as UTC (the original algorithm was fixed to the 15° E / UTC+1 meridian). The seconds component of the time is now taken into account.

Fixed

  • Azimuth quadrant bug: afternoon azimuths were mirrored onto the morning (eastern) side because math:acos/1 only returns 0..180°. Azimuths now correctly fall in the western half after solar noon.

Removed

  • Unused OTP application/supervisor scaffolding (sonnenstand_app, sonnenstand_sup); sonnenstand is now a pure library application.
  • Exploratory playground_calendar/0 function.