diff options
author | David A. Madore <david+git@madore.org> | 2012-03-27 16:08:35 +0200 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2012-03-27 19:37:08 +0200 |
commit | 2ee3f055058d10ec7a50182e102ba0a235878f71 (patch) | |
tree | 8f0340e704f6b38bb0c95cb881603bd0ecfc8c7d /org/madore/ephem/Precession.java | |
parent | d64c37f6f24abbfb7e02b8f9ea670a9b5e794f2e (diff) | |
download | ephem-2ee3f055058d10ec7a50182e102ba0a235878f71.tar.gz ephem-2ee3f055058d10ec7a50182e102ba0a235878f71.tar.bz2 ephem-2ee3f055058d10ec7a50182e102ba0a235878f71.zip |
Simple matrix library + formula for precession.
Diffstat (limited to 'org/madore/ephem/Precession.java')
-rw-r--r-- | org/madore/ephem/Precession.java | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/org/madore/ephem/Precession.java b/org/madore/ephem/Precession.java new file mode 100644 index 0000000..5ac3a03 --- /dev/null +++ b/org/madore/ephem/Precession.java @@ -0,0 +1,22 @@ +package org.madore.ephem; + +public final class Precession { + + // The following angles are in arcseconds, argument is in Julian centuries since J2000. + public static final double epsilon = 84381.406; + public static Comput.Polynomial psi + = new Comput.Polynomial(0, 5038.481507, -1.0790069, -0.00114045, 0.000132851, -0.0000000951); + public static Comput.Polynomial omega + = new Comput.Polynomial(epsilon, -0.025754, 0.0512623, -0.00772503, -0.000000467, 0.0000003337); + public static Comput.Polynomial chi + = new Comput.Polynomial(0, 10.556403, -2.3814292, -0.00121197, 0.000170663, -0.0000000560); + + public static Frames.RotationMatrix matrix(double t) { + Frames.RotationMatrix mat1 = Frames.RotationMatrix.rotx(epsilon*Comput.arcsecond); + Frames.RotationMatrix mat2 = Frames.RotationMatrix.rotz(-psi.v(t)*Comput.arcsecond).apply(mat1); + Frames.RotationMatrix mat3 = Frames.RotationMatrix.rotx(-omega.v(t)*Comput.arcsecond).apply(mat2); + Frames.RotationMatrix mat4 = Frames.RotationMatrix.rotz(chi.v(t)*Comput.arcsecond).apply(mat3); + return mat4; + } + +} |