📄 sunmoonposition.java
字号:
// J2ME Compass
// Copyright (C) 2007 Dana Peters
// http://www.qcontinuum.org/compass
package org.qcontinuum.compass;
import org.qcontinuum.astro.*;
import henson.midp.Float;
import java.util.*;
public class SunMoonPosition {
private UtcDate mUtcDate;
private HorizontalPosition mSunPosition, mMoonPosition;
private Float mMoonPhase;
private EarthHeading mDestinationHeading;
public SunMoonPosition(Date localDate) {
this(localDate, Compass.getPreferences().getLocation());
}
public SunMoonPosition(Date localDate, Location location) {
Date gmtDate = location.getGmt(localDate);
mUtcDate = new UtcDate(gmtDate);
EarthPosition earthPosition = location.getEarthPosition();
Float mjd = mUtcDate.getMJD();
EclipticPosition sunEcliptic = Astrometric.sunPosition(mjd);
EquitorialPosition sunEquitorial = sunEcliptic.toEquitorialPosition();
mSunPosition = sunEquitorial.toHorizontalPosition(earthPosition, mjd);
EclipticPosition moonEcliptic = Astrometric.moonPosition(mjd);
EquitorialPosition moonEquitorial = moonEcliptic.toEquitorialPosition();
mMoonPosition = moonEquitorial.toHorizontalPosition(earthPosition, mjd);
Float E = sunEcliptic.getLongitude().Sub(moonEcliptic.getLongitude());
// moonPhase = (1 + cos(pi - E)) / 2;
mMoonPhase = Float.cos(Float.PI.Sub(E)).Add(new Float(1)).Div(new Float(2));
Preferences preferences = Compass.getPreferences();
if (preferences.getDestination() == null)
mDestinationHeading = null;
else
mDestinationHeading = earthPosition.toEarthHeading(preferences.getDestination().getEarthPosition());
}
public UtcDate getUtcDate() {
return mUtcDate;
}
public HorizontalPosition getSunPosition() {
return mSunPosition;
}
public HorizontalPosition getMoonPosition() {
return mMoonPosition;
}
public Float getMoonPhase() {
return mMoonPhase;
}
public EarthHeading getDestinationHeading() {
return mDestinationHeading;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -