summaryrefslogtreecommitdiffstats
path: root/org/madore/ephem/Time.java
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2012-04-17 21:09:36 +0200
committerDavid A. Madore <david+git@madore.org>2012-04-17 21:09:36 +0200
commit12ab2221611336f6d209d643574fdc2d2b1fac16 (patch)
treee8c177bab281602e14494c3ad725e1bfa18a3066 /org/madore/ephem/Time.java
parent5f00eb3230d89f98d93c6e5bc8ecfa72e4e89b07 (diff)
downloadephem-12ab2221611336f6d209d643574fdc2d2b1fac16.tar.gz
ephem-12ab2221611336f6d209d643574fdc2d2b1fac16.tar.bz2
ephem-12ab2221611336f6d209d643574fdc2d2b1fac16.zip
Various small fixes + add a simple test (computing solar coordinates).
Diffstat (limited to 'org/madore/ephem/Time.java')
-rw-r--r--org/madore/ephem/Time.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/org/madore/ephem/Time.java b/org/madore/ephem/Time.java
new file mode 100644
index 0000000..3d2cb3e
--- /dev/null
+++ b/org/madore/ephem/Time.java
@@ -0,0 +1,56 @@
+package org.madore.ephem;
+
+public final class Time {
+
+ public static final class LeapSecond {
+ public int mjd;
+ public int offset;
+ public LeapSecond(int mjd, int offset) {
+ this.mjd = mjd;
+ this.offset = offset;
+ }
+ }
+
+ public static final LeapSecond[] leapSecondsTable = new LeapSecond[] {
+ new LeapSecond(41317, 10),
+ new LeapSecond(41499, 11),
+ new LeapSecond(41683, 12),
+ new LeapSecond(42048, 13),
+ new LeapSecond(42413, 14),
+ new LeapSecond(42778, 15),
+ new LeapSecond(43144, 16),
+ new LeapSecond(43509, 17),
+ new LeapSecond(43874, 18),
+ new LeapSecond(44239, 19),
+ new LeapSecond(44786, 20),
+ new LeapSecond(45151, 21),
+ new LeapSecond(45516, 22),
+ new LeapSecond(46247, 23),
+ new LeapSecond(47161, 24),
+ new LeapSecond(47892, 25),
+ new LeapSecond(48257, 26),
+ new LeapSecond(48804, 27),
+ new LeapSecond(49169, 28),
+ new LeapSecond(49534, 29),
+ new LeapSecond(50083, 30),
+ new LeapSecond(50630, 31),
+ new LeapSecond(51179, 32),
+ new LeapSecond(53736, 33),
+ new LeapSecond(54832, 34),
+ new LeapSecond(56109, 35),
+ };
+
+ public static double utcToTt(int utcMjd, double utcSeconds) {
+ // Returns JD in TT
+ int i0 = 0; int i1 = leapSecondsTable.length;
+ while ( i1-i0 > 1 ) {
+ int i = (i0+i1)/2;
+ if ( utcMjd >= leapSecondsTable[i].mjd )
+ i0 = i;
+ else
+ i1 = i;
+ }
+ return ( utcSeconds + leapSecondsTable[i0].offset + 32.184 )/86400. + utcMjd + 2400000.5;
+ }
+
+}