|
KosherJava Zmanim Homepage Includes a dynamic Zmanim calendar generator |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.sourceforge.zmanim.util.AstronomicalCalculator
An abstract class that all sun time calculating classes extend. This allows the algorithm used to be changed at runtime, easily allowing comparison the results of using different algorithms.
Constructor Summary | |
AstronomicalCalculator()
|
Method Summary | |
(package private) double |
adjustZenith(double zenith,
double elevation)
Adjusts the zenith to account for solar refraction, solar radius and elevation. |
abstract String |
getCalculatorName()
|
static AstronomicalCalculator |
getDefault()
getDefault method returns the default sun times calculation engine. |
(package private) double |
getElevationAdjustment(double elevation)
Method to return the adjustment to the zenith required to account for the elevation. |
(package private) double |
getRefraction()
Method to get the refraction value to be used when calculating sunrise and sunset. |
(package private) double |
getSolarRadius()
Method to get the sun's radius. |
abstract double |
getUTCSunrise(AstronomicalCalendar astronomicalCalendar,
double zenith,
boolean adjustForElevation)
A method that calculates UTC sunrise as well as any time based on an angle above or below sunrise. |
abstract double |
getUTCSunset(AstronomicalCalendar astronomicalCalendar,
double zenith,
boolean adjustForElevation)
A method that calculates UTC sunset as well as any time based on an angle above or below sunset. |
void |
setRefraction(double refraction)
A method to allow overriding the default refraction of the calculator. |
void |
setSolarRadius(double solarRadius)
Method to set the sun's radius. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public AstronomicalCalculator()
Method Detail |
public static AstronomicalCalculator getDefault()
SunTimesCalculator
.public abstract String getCalculatorName()
public abstract double getUTCSunrise(AstronomicalCalendar astronomicalCalendar, double zenith, boolean adjustForElevation)
astronomicalCalendar
- Used to calculate day of year.zenith
- the azimuth below the vertical zenith of 90 degrees. for
sunrise typically the zenith
used for
the calculation uses geometric zenith of 90° and
adjusts
this slightly to account for
solar refraction and the sun's radius. Another example would
be AstronomicalCalendar.getBeginNauticalTwilight()
that passes AstronomicalCalendar.NAUTICAL_ZENITH
to
this method.
Double.NaN
will be returned.public abstract double getUTCSunset(AstronomicalCalendar astronomicalCalendar, double zenith, boolean adjustForElevation)
astronomicalCalendar
- Used to calculate day of year.zenith
- the azimuth below the vertical zenith of 90°. For
sunset typically the zenith
used for the
calculation uses geometric zenith of 90° and
adjusts
this slightly to account for
solar refraction and the sun's radius. Another example would
be AstronomicalCalendar.getEndNauticalTwilight()
that
passes AstronomicalCalendar.NAUTICAL_ZENITH
to this
method.
Double.NaN
will be returned.double getElevationAdjustment(double elevation)
nautical twilight
since those calculations are based on the level of available light at the
given dip below the horizon, something that is not affected by elevation,
the adjustment should only made if the zenith == 90°
adjusted
for refraction and solar radius.elevationAdjustment = Math.toDegrees(Math.acos(earthRadiusInMeters / (earthRadiusInMeters + elevationMeters)));The source of this algorthitm is Calendrical Calculations by Edward M. Reingold and Nachum Dershowitz. An alternate algorithm that produces an almost identical (but not accurate) result found in Ma'aglay Tzedek by Moishe Kosower and other sources is:
elevationAdjustment = 0.0347 * Math.sqrt(elevationMeters);
elevation
- elevation in Meters.
double adjustZenith(double zenith, double elevation)
setSolarRadius(double)
method , and atmospheric refraction
accounts for 34 minutes or so (this can be changed via the
setRefraction(double)
method), giving a total of 50 arcminutes.
The total value for ZENITH is 90+(5/6) or 90.8333333° for true
sunrise/sunset. Since a person at an elevation can see blow the horizon
of a person at sea level, this will also adjust the zenith to account for
elevation if available.
sun's radius
,
refraction
and
elevation
adjustment.double getRefraction()
public void setRefraction(double refraction)
refraction
- The refraction in arc minutes.getRefraction()
double getSolarRadius()
public void setSolarRadius(double solarRadius)
solarRadius
- The sun's radius in arc minutes.
|
KosherJava Zmanim Homepage Includes a dynamic Zmanim calendar generator |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |