/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.cepmuvakkit.times.posAlgo; /** * @author mehmetrg */ public class SunMoonPosition { private Horizontal sunPosition, moonPosition; private double moonPhase; private EarthHeading qiblaInfo; private SolarPosition solar; private LunarPosition lunar; private Ecliptic moonPosEc, solarPosEc; private Equatorial moonPosEq, solarPosEq; public SunMoonPosition(double jd, double latitude, double longitude, double altitude, double ΔT) { solar = new SolarPosition(); lunar = new LunarPosition(); EarthPosition earth = new EarthPosition(latitude, longitude); double tau_Sun = 8.32 / (1440.0); // 8.32 min [cy] moonPosEc = lunar.calculateMoonEclipticCoordinates(jd, ΔT); solarPosEc = solar.calculateSunEclipticCoordinatesAstronomic(jd - tau_Sun, ΔT); double E = Math.toRadians(solarPosEc.λ - moonPosEc.λ); moonPosEq = lunar.calculateMoonEqutarialCoordinates(moonPosEc, jd, ΔT); solarPosEq = solar.calculateSunEquatorialCoordinates(solarPosEc, jd, ΔT); moonPosition = moonPosEq.Equ2Topocentric(longitude, latitude, altitude, jd, ΔT);//az=183.5858 sunPosition = solarPosEq.Equ2Topocentric(longitude, latitude, altitude, jd, ΔT); //System.out.println(moonPosition.Az); // System.out.println(moonPosition.h); // double E = 0;// APC_Sun.L-APC_Moon.l_Moon;//l_moon 1.4421 L=6.18064// E=4.73850629772695878 EarthPosition qibla = new EarthPosition(21.416666667, 39.816666); qiblaInfo = earth.toEarthHeading(qibla); // moonPhase = (1 + cos(pi - E)) / 2; moonPhase = (1 + Math.cos(Math.PI - E)) / 2;//48694254279852139 e-17 //System.out.println(qiblaInfo.getKiloMetres()); } public Horizontal getSunPosition() { return sunPosition; } public Horizontal getMoonPosition() { return moonPosition; } public double getMoonPhase() { return moonPhase; } public EarthHeading getDestinationHeading() { return qiblaInfo; } public double illumunatedFractionofMoon(double jd, double ΔT) { return moonPhase; } }