In article ,
Jake wrote:
Jonathan Silverlight wrote:
In message , Jake
writes
Five replies to this thread and not one of them addressing the original
subject matter.
How sadly illustrative of what sci.astro has become.
In my case, it's because I was fairly sure Jim Green's reply had
absolutely nothing to do with the question, even though I was much less
sure what the questioner wanted ;-) It would be helpful to know why the
question is being asked.
Because I wanted to convert from celestial coordinates (aka equatorial
coordinates) to heliographic coordinates, which AFAIK are always
heliographic _ecliptic_ coordinates. I don't see the point of
heliographic equatorial coordinates, although such an oddity may exist
so maybe I should have been more specific.
Your terminology seems a bit confused....
First, the term "celestial coordinates" is vague and ambiguous - it merely
means something like "coordinates in the sky", and as you're aware of
there are several different ways to define such coordinates. Presumably
you mean geocentric equatorial coordinates.
Second, earlier you talked about heliocentric coordinates. But here you
talk about heliographic coordinates instead. Although both of them are
heliocentric, there's a slight difference: heliographic coordinates are
longitude and latitude on the surface of the Sun, relative to the Sun's
pole and equator. Heliographic coordinates are used for specifying e.g.
where on the solar surface a sunspot is situated.
Anyway, to convert from geocentric equatorial coordinates, do like this:
Obtain the Right Ascension, Declination, and distande of the body. Note
that the distance is necessary - without that, you cannot convert to
heliocentric coordinates:
RA1 Dec1 r1
Obtain the corresponding quantities for the Sun at the date you're
interested in:
RAs Decs rs
Convert both of them from spherical to rectangular coordinates:
x1 = r1 * cos(RA1) * cos(Dec1)
y1 = r1 * sin(RA1) * cos(Dec1)
z1 = r1 * sin(Dec1)
xs = rs * cos(RAs) * cos(Decs)
ys = rs * sin(RAs) * cos(Decs)
zs = rs * sin(Decs)
Find the heliocentric rectangular equatorial coordinates for your body:
x2 = x1 - xs
y2 = y1 - ys
z2 = z1 - zs
Convert from equatorial to ecliptic coordinates
ecl = obliquity of the ecliptic
x3 = x2
y3 = y2 * cos(ecl) + z2 * sin(ecl)
z3 = - y2 * sin(ecl) + z2 * cos(ecl)
Finally, convert from rectangular to spherical coordinates:
lon3 = atan2( y3, x3 )
lat3 = atan2( z3, sqrt(x3*x3 + y3*y3) )
r3 = sqrt( x3*x3 + y3*y3 + z3*z3 )
where atan2() is a "four quadrant arc tangent" function. atan2() is a
standard library function in the programming languages FORTRAN, C,
C++, Java and some others. If you prefer some programming language
which lacks the atan2() library function, you can compute atan2(y,x)
like this: First compute the arc tangent of y/x. If x is negative,
add (or subtract) pi radians (or 180 degrees) to the angle to get the
final result. The case of x being exactly zero must be treated as a
special case: If x is zero and y is positive, the angle becomes pi/2
radians or 90 degrees. If x is zero and y is negative, the angle
becomes -pi/2 radians or -90 degrees. Finally if both x and y are
zero, the angle becomes undefined - for simplicity, just set it to
zero (the last case will happen exactly at the north or south pole of
a shperical coordinate system).
That's it!
This page has what looks like a useful description of doing the reverse
(converting heliocentric co-ordinates to right ascension/declination)
http://home.att.net/~srschmitt/script_planet_orbits.html
Here's another by Paul Schlyter
http://www.njsas.org/projects/tidal_forces/altaz/pausch/tutorial.html
I'm probably wrong, but it seems to me that converting from celestial
co-ordinates to heliocentric is about determining the orbit of an
object, which is a much bigger project.
Thanks, Jonathan.
--
----------------------------------------------------------------
Paul Schlyter, Grev Turegatan 40, SE-114 38 Stockholm, SWEDEN
e-mail: pausch at stockholm dot bostream dot se
WWW:
http://stjarnhimlen.se/