Comment 7 for bug 965811

Revision history for this message
Brandon Rhodes (brandon-rhodes) wrote :

Hah! No wonder you got a different number of arcseconds: the number of arcseconds changes through the day, even as I sit here in the Common Grounds coffee shop in Bluffton, Ohio, tracking down this issue! So we would have had to run your test program at exactly equivalent times of day to get the same result.

The two effects that cause points 0.1 radian apart in the apparent sky to be a different distance apart in the "real" sky lying behind it are "nutation" and "aberration".

Aberration accounts for the fact that the Earth's velocity through space makes objects to either side of us look like they are "more in front" of us than they really are, just like driving through snow makes the flakes look like they are mostly in front of you. The amount by which aberration affects any given coordinate differs: a point directly ahead or directly behind retains its coordinate exactly; and any point directly abeam is maximally affected. Unless your two points 0.1 radian apart happened to be along a circle of points that all have the same aberration, you will find that the "real" points behind those apparent points of starlight are some slightly different distance apart than 0.1.

Nutation puzzles me more — I am not sure why it should matter. It involves the fact that the earth's axis wobbles slightly all the time, and so converting an alt-az to a "real star atlas" RA and dec need to edit out this wobble since star atlases pretend that our axis precesses in a uniform circle without wobbles. But why should this affect a pair of coordinates whose time (mjd) is exactly the same? I am not sure. At the moment the effect is huge — about 21.1 arcseconds as I type this. I will have to look into this later, but at least I can now name the two effects that you are seeing. If you comment out one or both of these two lines in "circum.c" "obj_fixed()" and recompile, you should be able to drop the difference between your separations nearly to zero:

 nut_eq(mjed, &ra, &dec);
 ab_eq(mjed, lsn, &ra, &dec);