2
$\begingroup$

When looking for a formula to convert polar ecliptic geocentric coordinates of an object to equatorial coordinates I find various sources that give these formulae (like Wikipedia):

Declination $δ = \arcsin(\cos ε \times \sin β + \sin ε \times \cos β \times \sin λ)$
Right ascension $α = \arctan((\cos ε \times \sin λ - \sin ε \times \tan β) / \cos λ)$

Where
β = ecliptic geocentric latitude
λ = ecliptic geocentric longitude
ε = obliquity of the ecliptic

But when applying these formulae I get results like in the following list where β = 0° and ε = 23.4°:

 λ       δ        α
  0   0.0000   0.0000
 45  16.3095  42.5443
 90  23.4000  90.0000
135  16.3095 -42.5443
180   0.0000  -0.0000
225 -16.3095  42.5443
270 -23.4000  90.0000
315 -16.3095 -42.5443
360  -0.0000  -0.0000

The values for declination seem good, but right ascension values seem to lack some sort of adjustment to the quadrant of the full circle (just a guess). But nowhere did I find any mentioning of this. Can you help? Thanks.

$\endgroup$
5
  • 3
    $\begingroup$ This is a standard problem with using an arctan function and the reason that a lot of programming languages have two functions the simple one like you appear to have used and a more complex one that takes two parameters for when you are dividing (before the arctan function) as in this case. Here is a video describing the issue (youtu.be/_JbkTK17MrY). $\endgroup$ Commented May 26, 2016 at 10:54
  • $\begingroup$ You do know that inverse trigonometric functions return a value between -90 and +90 right? $\endgroup$
    – ProfRob
    Commented May 26, 2016 at 10:55
  • $\begingroup$ I was not aware of this. I am using JavaScript for the calculation and found this documentation: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… So I made an educated guess and tried α=atan2((cos ε∗sin λ−sin ε∗tan β), cos λ) and the results are promising. Just need to add 360° if the result is negative to get the expected values. Can you confirm I am correct? $\endgroup$
    – atarax42
    Commented May 26, 2016 at 15:03
  • $\begingroup$ Yes, in many program languages atan2(x,y) gives the same result as atan(x/y), but in the correct quadrant. $\endgroup$
    – AstroFloyd
    Commented Jul 8, 2016 at 19:33
  • 2
    $\begingroup$ The rotation matrix formulation in that Wikipedia article leads to $\alpha = \mathrm{atan2}(\cos \beta \sin \lambda \cos \varepsilon - \sin \beta \sin \varepsilon, \cos \beta \cos \lambda)$, equivalent in most cases but avoiding an infinite term $\tan \beta$ at the ecliptic poles, costing one more trig function call. $\endgroup$
    – Mike G
    Commented Aug 18, 2016 at 20:39

1 Answer 1

3
$\begingroup$

Convert commments to community wiki

This is a standard problem with using an arctan function (inverse tan function returns a value between -90 and +90). A lot of programming languages have two functions the simple one like you appear to have used and a more complex one that takes two parameters for when you are dividing (before the arctan function) as in this case. (This is described in further detail at (http://youtu.be/_JbkTK17MrY)

In Java you can use α=atan2((cos ε∗sin λ−sin ε∗tan β), cos λ) you may need to add 360 if the angle returned is negative.

An alternative is α=atan2(cosβsinλcosε−sinβsinε,cosβcosλ). This is equivalent in most cases but avoids an infinite term tanβtan⁡β at the ecliptic poles, costing one more trig function call.

$\endgroup$
1
  • $\begingroup$ Just wanted to say thank you for that last paragraph. I've been trying to implement the algorithms from Astronomical Algorithms, and I realized that the tan(β) term was a ticking timebomb. $\endgroup$ Commented Jul 16, 2022 at 21:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .