Code: Select all
ReferencePoint "Jupiter_bary" "Sol"
{
Beginning "1899 07 30 00:00"
Ending "2053 10 08 00:00"
OrbitFrame { EclipticJ2000 { Center "SSB"}}
SpiceOrbit
{
Kernel "de421.bsp"
Target "5"
Origin "0"
BoundingRadius 1e10
}
}
# I thought putting in beginning statements might help, but that just made
# Celestia ignore what I put in the Timeline array.Modify "Jupiter" "Sol"
Modify "Jupiter" "Sol"
{
Timeline
[
# Before Galileo
{
Ending "1972 01 02 00:00"
CustomOrbit "vsop87-jupiter"
BodyFrame { EquatorJ2000 { Center "Sol" } }
CustomRotation "iau-jupiter"
}
# JUP256
{
Ending "2000 01 02 00:00"
OrbitFrame { EclipticJ2000 { Center "Sol/Jupiter_bary"}}
SpiceOrbit
{
Kernel "jup256.bsp"
Target "599"
Origin "5"
BoundingRadius 1e10
}
BodyFrame { EquatorJ2000 { Center "Sol" } }
CustomRotation "iau-jupiter"
}
# JUP230
{
Ending "2049 12 31 00:00"
OrbitFrame { EclipticJ2000 { Center "Sol/Jupiter_bary"}}
SpiceOrbit
{
Kernel "jup230.bsp"
Target "599"
Origin "5"
BoundingRadius 1e10
}
BodyFrame { EquatorJ2000 { Center "Sol" } }
CustomRotation "iau-jupiter"
}
# After Galileo
{
CustomOrbit "vsop87-jupiter"
BodyFrame { EquatorJ2000 { Center "Sol" } }
CustomRotation "iau-jupiter"
}
]
}
I think that the bug was in the definition of JupSSBary: I was getting an error from SPICE saying that there wasn't enough information to compute the position of the solar system barycenter relative to the Sun. Celestia needs to be a bit smarter about automatically figuring out coverage windows from SPICE kernels. The good news is that JupSSBary is unnecessary: the position of the solar system barycenter is built in to Celestia. In fact, it's the origin of Celestia's coordinate system. Thus, the first change I made was to remove JupSSBary and make "SSB" ("Solar System Barycenter" would work too) the center of the orbit frame of Jupiter_bary.
The second change I made was to simplify Jupiter_bary. In Celestia, the ReferencePoint object is typically used to represent a barycenter--it's in almost all respects identical to an invisible planet. I imagine that you made the barycenter a planet and assigned it a radius so that you could check its location.
The last change I made was to change the BodyFrame and rotation models for Jupiter. In Celestia, the orientation of an object is the product of its rotation model and the orientation of its body frame. I've used the same body frame and rotation model for each phase of the timeline. The SVN revision of Celestia that you're using supports custom rotation models. The IAU rotation models for most of the major planets and moons in the solar system have been implemented, and they all give orientations in the J2000 Earth equatorial frame. Thus, I assigned each phase the rotation model "iau-jupiter" and the BodyFrame EquatorJ2000.
Hope this is helpful. If you don't mind, I'd like to use this code as an example in the documentation for Celestia timelines.
--Chris