tojulianday() discrepancies

All Lua-tools for Celestia in one forum.
Topic author
Posts: 24
Joined: 24.12.2021
With us: 2 years 5 months

tojulianday() discrepancies

Post #1by TJackson » 31.12.2021, 00:33

Hi. I'm interested in repeating experiments such as the historic Romer calculations of the speed of light back in 1676. I'm also interested in researching the accuracy of the timing kept by those historical astronomers as compared to today's high precision timing and determining their timing errors based on celestial events. In preparation for that, I took a close look at the differences in the times entered as parameters when calling tojulianday() and those reported as UTC times in the upper right of the Celestia display window. And I noticed a trend. The differences are all under a minute or so, and they show an inflection point around the year 1970. And the differences appear to be increasing. A minute or so discrepancy in the timing of Celestial events may not be of much importance for many applications of Celestia, but if that degree of accuracy is important to any, here is what I found:

Celestia Julian Table.png

Added after 16 minutes 40 seconds:
i.e. If you want a tour of all the pretty objects in the solar system for sixth graders, it might not matter. If you are a NASA engineer and want to set launch windows and such to minimize fuel consumption, then it just might.

Posts: 10190
Joined: 04.09.2002
With us: 21 years 9 months
Location: NY, USA

Post #2by selden » 31.12.2021, 01:21

Celestia's internal planetary CustomOrbit calculations use VSOP87 theory, truncated for better performance. If you want more accurate positioning you'll need to tell Celestia to use more accurate algorithms.

The following is quoted from Celestia's solarsys.ssc. It's a plain text file which you can view using any text editor. Notepad could be used under Windows, for example. I use emacs.
# CustomOrbits are used for most of the large bodies in the solar system.
# These are orbital calculations built into Celestia. In most cases,
# EllipticalOrbits are provided as well in order to give the reader of this
# file some rough idea of the shape and size of a body's orbit. If a body has
# a CustomOrbit defined, its EllipticalOrbit is *not* used by Celestia; the
# CustomOrbit will override the EllipticalOrbit.
# For the planets, the orbits are calculated using the VSOP87 theory
# (P. Bretagnon and G. Francou, "Planetary theories in rectangular and
# spherical variables. VSOP87 solutions", Astronomy & Astrophysics 202
# (1988) 309-315.
# The orbits of the Galilean satellites are from J. H. Lieske's "E5" theory
# as given in Jean Meeus's _Astronomical Algorithms_, pp. 301-315
# The orbits of the following Saturnian satellites are from Gerard Dourneau
# (1987), "Observations et etude du mouvement des huit premiers satellites
# de Saturne":
# Mimas, Enceladus, Tethys, Dione, Rhea, Titan, Hyperion, Iapetus
# The orbits of the five largest Uranian satellites are from Laskar and
# Jacobson (1978), "An Analytical Ephemeris of the Uranian Satellites"
# (Miranda, Ariel, Umbriel, Titania, and Oberon)
# **** IMPORTANT ****
# For applications where more accuracy is required, the orbits of any solar
# system body may be replaced by a SPICE kernel or a file of postion/velocity
# samples. Detailed documentation on how to do this may be found on the
# Celestia WikiBook:
# It is also possible to use JPL's DE405 or DE406 ephemeris For the positions
# of the planets, Moon, and Pluto. Details are here:
# *******************

Posts: 823
Joined: 08.10.2019
With us: 4 years 8 months

Post #3by SevenSpheres » 31.12.2021, 02:17

Selden, that's not what the OP is asking about...

In response to the OP's question, Wikibooks says:
Starting with version 1.5.0, although Celestia still displays UTC on the screen, it uses the TDB time scale internally for everything else, so for CELX scripting !!! For these newer Celestia versions, using the UTC Julian date (as a result of this celestia:tojulianday() method) in the celestia:settime() method, will cause the WRONG setting of the simutation time. To set the simulation time, using Julian date for these newer Celestia versions, the 1.5.0 celestia:utctotdb() method should be used instead of this celestia:tojulianday() method.
For more information on TDB, UTC, and how time is used in Celestia, see Celestia/Time Scales.
My Addons: viewtopic.php?f=23&t=19978 • Discord server admin
Celestia versions: 1.5.1, 1.6.1, 1.6.2, 1.7.0, and some unofficial versions like Celestia-ED

Return to “Lua-Tools”