Reference frames
Posted: 24.10.2006, 16:19
I'm currently developing a new feature for Celestia that will give SSC creators a lot more flexibility in placing and orienting objects. At the moment, you're very restricted: the reference frame of an object that orbits about a star is the J2000 ecliptic. For a planet, it's the mean equator of the object that it orbits, although in 1.5.0 you can use OrbitReferencePlane "ecliptic" to override this. Still, even 1.5.0 gives you just two choices, and the orientation of a body must be specified in the same reference frame as the orbit.
Here are a few situations in which you may want more choices:
- You may be using a tool that generates heliocentric cartesian coordinates, but uses the a coordinate system based on the J2000 Earth mean equator and equinox rather than the ecliptic. This is very common (as Selden recently discovered). It's not too hard to write a small script to rotation the coordinates to an ecliptic based system, but by specifying the appropriate reference frame in an ssc file, you don't have to.
- You want to place an object on the surface of a planet without having to do any tricky adjustment of orientation. To do this, you can just define a reference frame where the z-axis (or x-axis or y-axis--it's your choice) points up and the y axis points north. Then just place your model at the appropriate point on the surface and it will automatically be in the correct orientation (assuming that z is up in your modeler.)
- To extend the previous example . . . Suppose that you want to have a rover that moves across the surface of a planet. There is currently no good way to do this. Reference frames make it straightforward: define a reference frame as described above, with z pointing up from the center of the planet to the center of the object. Then assign the object a sampled orbit with coordinates on the surface of the planet. It's still slightly inconvenient because you'd rather use long/lat instead of cartesian coordinates in an xyz file, but otherwise it will work nicely.
- You can add a rotation to the object on the rover. It could be a uniform rotation (silly for a rover), or a SampledOrientation that would make the rover turn as it moved across the surface of the planet.
- You can use a reference frame to change the precession axis of an object with a precessing rotation.
- A natural way to describe the attitude of a spacecraft in low orbit around a planet is in a reference frame where one axies points toward the planet, and another axis points along the velocity vector. For example: http://liftoff.msfc.nasa.gov/academy/ro ... /lvlh.html
- You can define a reference frame in which a non-rotating object will always face some other object. For this frame, you'd define one axis of the frame to point from the observer object to the target object. Such a frame would be useful in ssc files, or in a script where you wanted to place the camera at a point where it will always see the sun-facing side of a planet.
I'm reluctant to be doing any new feature work in 1.5.0, but I don't want to introduce the new OrbitBarycenter and OrbitReferencePlane SSC fields only have them made immediately obsolete by reference frames in 1.5.1. I am trying to limit the scope of this new feature somewhat, so the full flexibility of reference frames may not be immediately available in 1.5.0. Later today, I'll post some sample frame definitions for ssc files.
--Chris
Here are a few situations in which you may want more choices:
- You may be using a tool that generates heliocentric cartesian coordinates, but uses the a coordinate system based on the J2000 Earth mean equator and equinox rather than the ecliptic. This is very common (as Selden recently discovered). It's not too hard to write a small script to rotation the coordinates to an ecliptic based system, but by specifying the appropriate reference frame in an ssc file, you don't have to.
- You want to place an object on the surface of a planet without having to do any tricky adjustment of orientation. To do this, you can just define a reference frame where the z-axis (or x-axis or y-axis--it's your choice) points up and the y axis points north. Then just place your model at the appropriate point on the surface and it will automatically be in the correct orientation (assuming that z is up in your modeler.)
- To extend the previous example . . . Suppose that you want to have a rover that moves across the surface of a planet. There is currently no good way to do this. Reference frames make it straightforward: define a reference frame as described above, with z pointing up from the center of the planet to the center of the object. Then assign the object a sampled orbit with coordinates on the surface of the planet. It's still slightly inconvenient because you'd rather use long/lat instead of cartesian coordinates in an xyz file, but otherwise it will work nicely.
- You can add a rotation to the object on the rover. It could be a uniform rotation (silly for a rover), or a SampledOrientation that would make the rover turn as it moved across the surface of the planet.
- You can use a reference frame to change the precession axis of an object with a precessing rotation.
- A natural way to describe the attitude of a spacecraft in low orbit around a planet is in a reference frame where one axies points toward the planet, and another axis points along the velocity vector. For example: http://liftoff.msfc.nasa.gov/academy/ro ... /lvlh.html
- You can define a reference frame in which a non-rotating object will always face some other object. For this frame, you'd define one axis of the frame to point from the observer object to the target object. Such a frame would be useful in ssc files, or in a script where you wanted to place the camera at a point where it will always see the sun-facing side of a planet.
I'm reluctant to be doing any new feature work in 1.5.0, but I don't want to introduce the new OrbitBarycenter and OrbitReferencePlane SSC fields only have them made immediately obsolete by reference frames in 1.5.1. I am trying to limit the scope of this new feature somewhat, so the full flexibility of reference frames may not be immediately available in 1.5.0. Later today, I'll post some sample frame definitions for ssc files.
--Chris