Skip to content

Releases: cosinekitty/astronomy

Obscuration for solar and lunar eclipses

20 Oct 23:56
Compare
Choose a tag to compare

This release provides a new field obscuration in the data structures for lunar eclipses, global solar eclipses, and local solar eclipses. Obscuration is a floating point number that ranges from 0 to 1.

In a solar eclipse, obscuration is the fraction of the Sun's apparent disc area that is blocked from view by the Moon, as seen by the observer on the Earth. In a "global" solar eclipse calculation, the observer's location is given as the ideal location for the maximum eclipse. In a "local" solar eclipse calculation, the caller supplies the desired geographic location for the observer. The value of obscuration is 1 for a total eclipse, and somewhere between 0 and 1 for a partial or annular eclipse.

In a lunar eclipse, obscuration is the fraction of the Moon's apparent disc area that is covered by the Earth's umbra. The value is 1 for a total eclipse, and somewhere between 0 and 1 for a partial eclipse. The obscuration is 0 for penumbral lunar eclipses, because the Earth's umbra does not fall upon the Moon during them. Penumbral eclipses are very difficult to observe because they are faint and subtle, so no separate obscuration metric is reported for them.

Support calendar years outside 0000..9999.

07 Oct 02:16
Compare
Choose a tag to compare

Astronomy Engine now supports times outside the years 0000..9999, and supports formatting those times as ISO 8601 text. Times within the year range 0000..9999 are still formatted like this:

2022-10-06T22:37:45.891Z

Based on ISO 8601, and following the convention Node.js uses, dates outside the range 0000..9999 are now formatted with a leading prefix of - or +, followed by a 6-digit integer like

-001234-12-25T14:37:57.450Z
+043752-10-30T09:30:18.256Z

Reverse chronological search: moon phase and altitude

03 Oct 02:23
Compare
Choose a tag to compare

The following functions now allow searching backward or forward in time by passing in a negative or positive value for their limitDays parameter:

  • SearchMoonPhase
  • SearchRiseSet
  • SearchAltitude

The following function has added a new integer parameter direction that can be passed a positive value to search forward in time, or a negative value to search backward in time:

  • SearchHourAngle

To preserve backward compatibility, the C version of this function has been renamed SearchHourAngleEx, and SearchHourAngle is now a macro that expands to the equivalent call to SearchHourAngleEx with the extra argument +1.

In the other languages, which all support default parameter values, the direction parameter has a default value of +1, which preserves the original behavior of searching forward in time.

There were also minor fixes to SearchRiseSet and SearchAltitude where limitDays was not always strictly limiting the range of the search. Now, any time an altitude event is found that goes beyond limitDays, the search will fail as specified by the documentation.

Miscellaneous fixes to code and documentation.

22 Sep 16:30
Compare
Choose a tag to compare

What's Changed

  • Resolve cyclic dependency of Body.vsopModel by @ebraminio in #242
  • Prevent use of gcc "fast math" optimization in the C version, because it breaks things! See #245.
  • Various minor fixes to Python documentation.
  • Bump shell-quote from 1.7.2 to 1.7.3 in /generate by @dependabot in #232

Full Changelog: v2.1.2...v2.1.3

Generic light travel time correction

02 Jun 00:57
Compare
Choose a tag to compare

This release adds new functions CorrectLightTravel and BackdatePosition for enhanced ability to calculate apparent times and position vectors that are corrected for the amount of time it takes for light to travel from an observed body to an observer.

Added gravity simulator

27 May 23:52
Compare
Choose a tag to compare

The new gravity simulator feature allows defining an arbitrary list of small bodies such as asteroids, comets, or coasting spacecraft. The caller provides the position vectors and velocity vectors of the bodies at an initial time. Then the gravity simulator can step through small time increments and update the positions and velocities of the bodies as they are affected by the gravitational pull of the Sun and planets.

Support for Kotlin, Java, JVM

06 May 01:56
Compare
Choose a tag to compare

This is our first official release of Astronomy Engine that includes support for Kotlin and Java for the JVM. There are also a few minor enhancements and improvements in the other supported languages.

Special thanks to: @ebraminio, who helped me get the build environment set up, taught me lots of cool stuff about the Kotlin language, and provided numerous code reviews and extremely helpful feedback the whole time. His help made this project much faster and greatly improved the quality of the work.