# Conversion between Astronomical Frames, ex. IRCF, FK5, FK4, etc…

I'm a little bit confused about reference frames, and I was wondering if someone could help clarify a few things?

So let's say I have equatorial coordinates that refer to the mean equator and equinox of an non standard arbitrary epoch. Now, if those coordinates are referred to the mean equator and equinox that epoch, then is the mean equator/equinox of the specific epoch considered the reference frame for those coordinates?

…and then how would you go about converting those coordinates to another reference frame like say the IRCF or FK5? I assume that I would need to precess them to J2000 accounting for any applicable proper motion (and if they referred to the true equator nutation). What else do you need to put them in either the ICRF or FK5 frames?

Also, something else I'm confused about is the epoch of a reference frame. So, let's say I have the IRCF astrometric coordinates of a planet at JD 2456963.5 TDB (or any other arbitrary date). Since they're IRCF coordinates, then the epoch of the reference frame is still J2000, but the coordinates refer to the instant of 2456963.5 TDB correct?

Any clarification would be greatly appreciated, and thanks in advance!

I'm not sure this answers your question, but ICRF is a non-precessing reference frame.

On J2000 (2000-01-01 12:00:00 UTC), the z axis of the ICRF frame was exactly parallel to a line connecting the Earth's center to the Earth's north pole.

Since then, the Earth's north pole has precessed, so the ICRF z axis and the geocenter-north pole line are no longer parallel.

To see this, you can visit http://ssd.jpl.nasa.gov/horizons.cgi and use these settings:

(this is actually looking from the north pole "down" to the Earth's center, so we would expect a negative z value).

The interesting part of the results:

$$SOE 2445701.000000000, A.D. 1984-Jan-01 12:00:00.0000, 1.007696415090285E+01, -3.712508526111991E-02, -6.356744326939433E+03, -2.994380889331686E-07, -2.570088696418019E-07, -4.731801778858530E-10, 2.120384334099952E-02, 6.356752314245179E+03, 5.329972950848752E-25, 2451545.000000000, A.D. 2000-Jan-01 12:00:00.0000, 1.601081935638483E-01, 1.746805655485580E-01, -6.356752309828780E+03, 2.230286001476848E-07, -8.078442785945724E-07, -1.658173608778433E-11, 2.120384334099953E-02, 6.356752314245181E+03, -5.549834335071262E-23, 2457389.000000000, A.D. 2016-Jan-01 12:00:00.0000, -9.877267476902714E+00, 3.153970319756332E-01, -6.356744632653835E+03, 1.794887917287106E-07, -5.409368308792473E-07, -3.057333255094828E-10, 2.120384334099952E-02, 6.356752314245179E+03, -5.736383388350969E-23,$$EOE


It's a little hard to notice because of the scientific notation (and the embarrassing fact that x and y aren't exactly zero at J2000), but the x and y values at J2000 (the middle entry) are nearly zero.

The y value is nearly zero for all three entries, but the x value changes. In 1984, the x value is about +10m, and, in 2016, the x value is almost -10m, showing the effects of precession.

One benefit of a non-precessing frame like ICRF is that star positions are relatively constant (excluding proper motion and the solar system's own motion). For example, the z axis will always point (very roughly) to Polaris, even after precession has changed the north star to, for example, Deneb.

By default, NASA now uses ICRF coordinates to indicate where planets are, so, if you're looking to map planets on a J2000 starchart, you should use the ICRF coordinates.

The only problem you'll have using ICRF/J2000 coordinates (instead of J2016 coordinates) is that any calculations you make for stellar/planetary azimuth and altitude will be off slightly, not enough to really notice unless you are doing precision work.

• Thanks for your reply, that does clarify a few things. I wonder though, so would I just offset the coordinates by the residual XYZ amount on JD2451545? Nov 3 '15 at 19:15
• If you could tell us a little more specifically what you're trying to do, we might be able to help more?
– user21
Nov 3 '15 at 19:27
• Sure, I'm writing a software class that represents equatorial coordinates. The user supplies the frame/equinox, the right ascension and declination. I would like it to have a way to convert to different systems, so you can say provide FK5/J2016 coordinates and have that convert to ICRF/J2000 for example. Also, thanks so much for your answers! Nov 3 '15 at 21:06
• I assume you're familiar with the SPICE libraries naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/req/kernel.html which already do this? Or are you writing this for a class and/or in a different language and/or for a different reason?
– user21
Nov 4 '15 at 11:54
• I am familiar with SPICE, but I'm working in PHP and while I could have it externally rely on the libraries I'd rather have it all PHP based. Nov 4 '15 at 22:38