Page 1 of 1

CustomRotations

Posted: 07.03.2008, 16:59
by chris
Cross-posted from the developers mailing list...

In the past few weeks, I've been gradually implementing CustomRotations for various solar system bodies. These can replace the uniform rotations currently used for almost all objects in the base Celestia distribution. I've tried to document the sources for all the CustomRotation models thoroughly in customrotation.cpp.

The following CustomRotations have been implemented:

Code: Select all

iau-mercury
iau-venus
iau-earth
iau-mars
iau-jupiter
iau-saturn
iau-uranus
iau-neptune
iau-pluto

iau-moon

iau-mimas
iau-enceladus
iau-tethys
iau-telesto
iau-calypso
iau-dione
iau-helene
iau-rhea
iau-titan
iau-iapetus
iau-phoebe

earth-p03lp


There are still some obvious gaps: there are IAU defined rotation models for satellites of Jupiter, Uranus, and Neptune as well. It's just a matter of entering the data from the IAU/UAG Working Group on Cartographic Coordinates and Rotational Elements (http://astrogeology.usgs.gov/Projects/W ... able2.html)

I should credit Grant for bringing these to my attention. With Mimas especially, replacing the UniformRotation with CustomRotation "iau-mimas" makes a big difference. When using just a UniformRotation, the sub-Saturn point of Mimas drifts a great deal.

There's still some work to be done. The expressions for the pole positions of many of the bodies include secular terms that give obviously incorrect orientations if extrapolated too far into the past or future. These secular terms need to be clamped to some yet-to-be-determined time range. If anyone can advise on what an appropriate range might be, I'd appreciate it very much.

The IAU rotation model for the earth is very simplistic, with the RA and declination of the pole varying linearly over time. I've implemented a better one based on a Jan Vondrak's long-period extension of the P03 precession model. One of the resolutions at the 2006 meeting of the IAU is the adoption of the P03 precession model on January 1, 2009. This model improves on the IAU 1976 model currently in use, but the all of the precession quantities are still calculated with polynomials, limiting the time span over which the model may be used to less than a full precession cycle. Vondrak gave a presentation at IAU 2006 detailing an extension to the P03 model that agrees closely with P03 within 1000 years of the present, but which contains periodic terms that permit it to be used over a much longer time span (over a million years!) I've verified that the implementation in Celestia matches P03 between 1000 AD and 3000 AD to within a few hundredths of an arcsecond. You can enable it by adding the following line to the definition of Earth in solarsys.ssc:

Code: Select all

CustomRotation "earth-p03lp"


At the moment, nutations are not incorporated, but that will be addressed soon. The nutation.cpp file has an implementation of the IAU 2000 nutation model, which is compatible with P03.

One issue to consider now is whether we should add the option to enable a second equatorial grid, which is aligned with the Earth's equator of date instead of the J2000 equator.

Some references:

Expressions for IAU2000 precession quantities, N. Capitaine et al:
http://syrte.obspm.fr/documents/papers/PrecP03.pdf

Long-periodic precession parameters, J. Vondrak:
http://www.astronomy2006.com/files/vondrak.pdf

--Chris

Posted: 07.03.2008, 17:19
by chris
To illustrate just how poorly a UniformRotation (constant rotation about a fixed axis) describes to the rotation model of Mimas, here's a view of Mimas from Cassini generated by NASA's solar system simulator:

Image

Here's the same view at the same time in Celestia, using the IAU rotation model:

Image

Mimas is in exactly the same orientation as in the image from the Solar System Simulator.

Here's the view again, this time using the default Mimas rotation model in 1.5.0:

Image

As you can see, it's not even close--the huge crater Herschel shouldn't be visible at all.

--Chris

Posted: 07.03.2008, 17:49
by t00fri
convincing ;-)

...and from a "pioneering point of view", it's a pity that we can now just compare Celestia with that NASA gadget to correct OUR inaccuracies...

F.

Posted: 07.03.2008, 19:46
by chris
t00fri wrote:convincing ;-)

...and from a "pioneering point of view", it's a pity that we can now just compare Celestia with that NASA gadget to correct OUR inaccuracies...


It's not the most exciting feature, but it's necessary work nonetheless.

However, the Earth precession model is rather interesting--I don't know of any other software that can show the Earth's orientation over such a long time span. Of course, most of the credit should go to Jan Vondrak.

--Chris

Re: CustomRotations

Posted: 10.04.2008, 17:39
by Ajaja
Found strange differences in rotation models between SpiceRotation/UniformRotation and CustomRotation.
Examples. Celestia-svn-4250. Look at Earth from Sun at same time. Default config (UniformRotation):
Image

Modified:

Code: Select all

Modify "Earth" "Sol"
{
    SpiceRotation
    {
        Kernel              "earth_070425_370426_predict.bpc"
        Frame               "ITRF93"
        BaseFrame           "eclipj2000"
        Period              23.9344694
    }
}

Image

Code: Select all

Modify "Earth" "Sol"
{
    SpiceRotation
    {
        Kernel              "pck00008.tpc"
        Frame               "IAU_EARTH"
        BaseFrame           "eclipj2000"
        Period              23.9344694
    }
}

Image

Code: Select all

Modify "Earth" "Sol"
{
    BodyFrame {
        EquatorJ2000 { Center "Sol" }
    }
   CustomRotation "iau-earth"
}

Image
With EclipticJ2000 body frame CustomRotation "iau-earth" is definitely wrong:
Image

So, SpiceRotations, UniformRotation and CustomRotation "iau-earth" with EquatorJ2000 BodyFrame are very similar.
But CustomRotation "earth-p03lp" if different from above models:

Code: Select all

Modify "Earth" "Sol"
{
   CustomRotation "earth-p03lp"
}

Image
Is CustomRotation "earth-p03lp" broken, or I miss something ?

Re: CustomRotations

Posted: 10.04.2008, 17:59
by chris
Ajaja wrote:Found strange differences in rotation models between SpiceRotation/UniformRotation and CustomRotation.

Is CustomRotation "earth-p03lp" broken, or I miss something ?

Thank you very much for this detailed testing. There is something wrong with earth-p03lp right now: the orientation of the axis is correct (I took some care in verifying this), but the rotation about that axis is not right. I should have a fix ready at some time today.

--Chris

Re: CustomRotations

Posted: 11.04.2008, 16:58
by chris
chris wrote:
Ajaja wrote:Found strange differences in rotation models between SpiceRotation/UniformRotation and CustomRotation.

Is CustomRotation "earth-p03lp" broken, or I miss something ?

Thank you very much for this detailed testing. There is something wrong with earth-p03lp right now: the orientation of the axis is correct (I took some care in verifying this), but the rotation about that axis is not right. I should have a fix ready at some time today.

I've corrected the earth-p03lp rotation model. Revision 4260.

--Chris

Re: CustomRotations

Posted: 11.04.2008, 16:59
by Ajaja
Thanks!

One more question. I have been test some ancient (1999BC-1990BC) solar/moon eclipses with Celestia-svn-4260 . There are huge differenses between NASA data (http://eclipse.gsfc.nasa.gov) and Celestia. It seems like both CustomRotation and SpiceRotation models are not include some time conversion. Celestia with CustomOrbit and SpiceOrbit simulate ancient eclipses at correct time, but Earth orientation (in rotation) is wrong. Guess, Earth rotation error is equal to difference between uniform Coordinate Time scale and Earth-rotation dependent Universal Time (CT-UT, in http://ssd.jpl.nasa.gov/horizons.cgi terms). For 199xBC this value is more than 12 hours, so eclipses in Celestia occur in other hemisphere.

For testing I use:

Code: Select all

Modify "Earth" "Sol"
{
   OrbitFrame {
      EclipticJ2000 { Center "Sol" }
   }
    SpiceOrbit
    {
        Kernel "de408.bsp"
        Target "EARTH"
        Origin "SUN"
        BoundingRadius 3
        Period 1
    }
   BodyFrame {
      EclipticJ2000 { Center "Sol" }
   }
    SpiceRotation
    {
        Kernel              "pck00008.tpc"
        Frame               "IAU_EARTH"
        BaseFrame           "eclipj2000"
        Period              23.9344694
    }
}

Modify "Moon" "Sol/Earth"
{
   OrbitFrame {
      EclipticJ2000 { Center "Sol/Earth" }
   }
    SpiceOrbit
    {
        Kernel "de408.bsp"
        Target "MOON"
        Origin "EARTH"
        BoundingRadius 1e10
        Period 27.321661
    }
   BodyFrame {
      EclipticJ2000 { Center "Sol/Earth" }
   }
    SpiceRotation
    {
        Kernel              "pck00008.tpc"
        Frame               "IAU_MOON"
        BaseFrame           "eclipj2000"
        Period 27.321661
    }
}


For JPL:

Code: Select all

Modify "Earth" "Sol"
{
  OrbitFrame
  {
    EclipticJ2000 { Center "Sol" }
  }
  CustomOrbit "jpl-earth-sun"
  CustomRotation "earth-p03lp"
}


Modify "Moon" "Sol/Earth"
{
  OrbitFrame
  {
    EclipticJ2000 { Center "Sol/Earth" }
  }
  CustomOrbit "jpl-moon-earth"
  BodyFrame
  {
    EclipticJ2000 { Center "Sol/Earth" }
  }
  CustomRotation "iau_moon"
}

Re: CustomRotations

Posted: 11.04.2008, 18:46
by chris
Ajaja wrote:Thanks!

One more question. I have been test some ancient (1999BC-1990BC) solar/moon eclipses with Celestia-svn-4260 . There are huge differenses between NASA data (http://eclipse.gsfc.nasa.gov) and Celestia. It seems like both CustomRotation and SpiceRotation models are not include some time conversion. Celestia with CustomOrbit and SpiceOrbit simulate ancient eclipses at correct time, but Earth orientation (in rotation) is wrong. Guess, Earth rotation error is equal to difference between uniform Coordinate Time scale and Earth-rotation dependent Universal Time (CT-UT, in http://ssd.jpl.nasa.gov/horizons.cgi terms). For 199xBC this value is more than 12 hours, so eclipses in Celestia occur in other hemisphere.

UT isn't modeled well in SPICE's IAU_EARTH frame, or Celestia's iau-earth and p03lp CustomRotations. All of them use a constant rotation about a precessing pole. SPICE's IAU_EARTH and the iau-earth custom rotation should be identical: both assume a constant pole precession of -0.641 deg/century in RA and -0.557 deg/century in declination. I do plan on adding nutation and a better universal time model to the p03lp rotation model very soon. For the time being, you should try to find a SPICE frame kernel that gives a more accurate orientation for Earth at times in the distant past.

--Chris

Re: CustomRotations

Posted: 11.04.2008, 23:19
by Ajaja
Thanks for explanation. Unfortunatly I didn't find any kernels for distant past. I've added time correction in source code using simple expressions from http://eclipse.gsfc.nasa.gov/SEhelp/deltatpoly2004.html and rebuild Celestia. With this correction eclipses in Celestia are correspond to 5MCSE catalog :)

Re: CustomRotations

Posted: 11.04.2008, 23:24
by chris
Ajaja wrote:Thanks for explanation. Unfortunatly I didn't find any kernels for distant past. I've added time correction in source code using simple expressions from http://eclipse.gsfc.nasa.gov/SEhelp/deltatpoly2004.html and rebuild Celestia. With this correction eclipses in Celestia are correspond to 5MCSE catalog :)

Well done!

Did you apply the delta T correction to the iau-earth or p03lp rotation model?

--Chris

Re: CustomRotations

Posted: 12.04.2008, 08:41
by Ajaja
chris wrote:Did you apply the delta T correction to the iau-earth or p03lp rotation model?
To the SpiceRotation. Most probably, it was not quite correct, but I've added ?T correction to check it usefulness only (simplest ?T = -20 + 32 * u^2 for years <-500):

Code: Select all

Quatd
SpiceRotation::computeSpin(double jd) const
{
...
 double delta=0;
 if (jd<1538432.50000)
 {
  double t1=(jd-2385800.500000)/36525.0;
  delta=-20 + 32 * t1*t1;
 }
 double t = astro::daysToSecs(jd - astro::J2000);
 t=t-delta;
...

Re: CustomRotations

Posted: 29.04.2008, 06:22
by bdm
chris wrote:Vondrak gave a presentation at IAU 2006 detailing an extension to the P03 model that agrees closely with P03 within 1000 years of the present, but which contains periodic terms that permit it to be used over a much longer time span (over a million years!) I've verified that the implementation in Celestia matches P03 between 1000 AD and 3000 AD to within a few hundredths of an arcsecond.
Just to put that into perspective, one arcsecond of longitude is about 30.8 metres. One hundredth of an arcsecond is therefore about 30.8 centimetres. So when Chris is referring to "a few hundredths of an arcsecond", that is an accuracy of about a metre. I doubt any casual user would notice this discrepancy.

Yes, I am impressed. :)

Re: CustomRotations

Posted: 02.10.2008, 15:39
by cartrite
I was trying to match Celestia to a image taken by astronauts on August 19, 2008 of the Amazon River region.
http://eol.jsc.nasa.gov/scripts/sseop/p ... rame=13856
There specs reported that the image was taken from 4.9south 48.8west. The image I get when I take a screen shot in Celestia at 4.917s 48.828w. Comparing it to the image taken by the astronauts is a little off.

48.828w_4.917s.jpg


This is a lot closer but not quite right. This may also be because Celestia uses a sphere and not an ellipsoid. I'm using custom rotations "earth-p03lp"

52.098w_4.277s.jpg


cartrite