[Debian-astro-maintainers] Bug#788699: Update

Tomasz Buchert tomasz at debian.org
Sun Jun 21 16:29:08 UTC 2015


Hi guys,
I pondered the question of calculating Kepler orbits recently and just for fun
I implemented the algorithms implemented in "Astronomy On The Personal Computer"
by Montenbruck & Pfleger. This is the code that I got by translating the
code in the book: https://anonscm.debian.org/cgit/users/tomasz/orbits.git/.
It is around 90% identical to what is in the book.

The tricky cases are:
   1) (ecc ~ 1.0) and (e (ecc. anomaly) ~ 0 mod 2*pi) (i.e., the original case);
      they cause problems because the Newton's method divides by
      (1.0 - ecc * cos(e)) (elliptic case) or (ecc*cosh(e) - 1.0) (hyperbolic
      case) which are ~ 0
   2) ecc = 1.0; in this case the orbit is parabolic and the formula
      does not work at all; in the code, however, there is a special case
      for parabolic orbits which works great (it also applies a bit to ecc ~ 1.0)

Stellarium takes care of the second case explicitely, but if ecc ~ 1.0,
it simply calls into elliptic or hyperbolic code, which although uses
a bit different algorithms, still suffers from the 1st tricky case.

There are a few ways to solve the problem:
   1) approximate the 1st case with the second one when e ~ 0 mod 2*pi;
      this is what the original code tries to do, sort of; the difficulty is to
      find the cutoff point (the book chose quite arbitrary 5 degrees)
   2) clamp ecc ~ 1.0 to 1.0 for *any* e and use parabolic formula (the motivation
      for that is that if ecc ~ 1.0 than the object has a huge period, so
      there is a low chance that using the precise value of ecc will be accurate;
      moreover, it seems to me that eccentrities of such objects are very
      approximate anyway)
   3) use a better method for finding roots, a one that does not divide by zero
      (bisection?) and apply it to the tricky case; there is an implicit
      "trickiness" in the 1st case since the root is very close to the extremum
      (try apply Newton's method to x^2 = 0!)

Any ideas or comments?

Cheers,
Tomasz
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/debian-astro-maintainers/attachments/20150621/50c22b66/attachment.sig>


More information about the Debian-astro-maintainers mailing list