Calculate the phase, distance, phase-angle, and illuminated ratio of the moon on any given date.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
.gitattributes
.gitignore
.travis.yml
README.md
build.xml
moonfx.iml
pom.xml

README.md

MoonFx

Build Status

Calculate the phase, distance, phase-angle, and illuminated ratio of the moon on any given date. Based on moonfx.bas from Sky & Telescope.

Installation

In root build.gradle:

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

In app build.gradle:

	dependencies {
		compile 'com.github.jesgs:moonfx:v1.0.1'
	}

Usage

void setDate(LocalDateTime date) Sets the current date. Uses java.time.LocalDateTime

LocalDateTime getDate() Gets the current date in the form of a Date object

String getFormattedDate(String format) Returns a formatted date string, format specified by format parameter

double getSynodicPhase() Get current synodic phase of the moon, aka Moon's age in days (number of days from New Moon)

double getDistanceInEarthRadii() Get distance measured in Earth radii

double getEclipticLatitude() Get moon's ecliptic latitude

double getEclipticLongitude() Get moon's ecliptic longitude

double getJulianDate() Get the Julian Date for the date specified by setDate()

double getPhaseAngle(double synodicAge) Get the current approximate phase angle of the Moon. Uses value from getSynodicDate()

double getIlluminatedRatio(double synodicAge) Get Illuminated ratio of moon according to synodic age

Examples

MoonFx moonFx = new MoonFx();
moonFx.setDate(new Date()); // Thu Feb 09 17:25:26 CST 2017

System.out.println("Moon's age from new (days): " + moonFx.getSynodicPhase());
System.out.println("Distance (Earth radii): " + (int)moonFx.getDistanceInEarthRadii());
System.out.println("Distance (Miles): " + (int)(moonFx.getDistanceInEarthRadii() * MoonFx.EARTH_RADIUS_MI));

Outputs:

Moon's age from new (days): 12.945493872886475
Distance (Earth radii): 58
Distance (Miles): 231066

Changelog

  • 1.1.0 — Current development version

    • Refactored Julian Date method
    • Refactored phase angle calculations
    • Refactored illuminated ratio calculations
    • Add unit tests
    • Add automated testing
  • 1.0.1 — Stable

    • Adjusted Julian Date calculation for better precision
  • 1.0.0

    • Initial release