Skip to contentSkip to Content
Orbital MechanicsOrbital elements

Orbital elements

Draft

A state vector, six numbers of position and velocity, fully determines an orbit. It is also almost unreadable: nothing in it tells you whether the orbit is circular, how high it goes, or which way it is tilted. The classical elements carry the same six degrees of freedom arranged so each number means something.

The six classical elements

ElementSymbolControlsRange
Semi-major axisaaSize, and therefore period and energy>0> 0 bound, <0< 0 hyperbolic
EccentricityeeShape00 circular, <1<1 elliptical, 1\ge 1 open
InclinationiiTilt of the orbital plane from the equator00 to 180°180°
Right ascension of the ascending nodeΩ\OmegaSwivel of the plane about the pole00 to 360°360°
Argument of periapsisω\omegaRotation of the ellipse within its plane00 to 360°360°
True anomalyν\nuWhere the body is on the orbit, now00 to 360°360°

The grouping matters more than the list. The first two fix the shape of the conic and never change under two-body motion. The next three fix its orientation in inertial space and likewise never change. Only the last varies with time.

That separation is what makes perturbation analysis tractable. Under a real force model the first five drift slowly, and describing that drift is far easier than integrating the state vector directly. See Orbital perturbations.

Inclination above 90° means retrograde motion. Sun-synchronous orbits sit near 98°, which is retrograde, and that is not incidental: it is the only way to get the nodal precession to come out positive.

From state vector to elements

The conversion runs through the vectors already derived in Gravitation and the two-body problem.

h=r×v,n=z^×h,e=v×hμr^\mathbf{h} = \mathbf{r} \times \mathbf{v}, \qquad \mathbf{n} = \hat{\mathbf{z}} \times \mathbf{h}, \qquad \mathbf{e} = \frac{\mathbf{v} \times \mathbf{h}}{\mu} - \hat{\mathbf{r}}

h\mathbf{h} is normal to the orbital plane, n\mathbf{n} points along the line of nodes, and e\mathbf{e} points at periapsis. Every angle is then the angle between two of these:

i=arccoshzh,Ω=arccosnxn,ω=arccosnene,ν=arccosereri = \arccos\frac{h_z}{h}, \qquad \Omega = \arccos\frac{n_x}{n}, \qquad \omega = \arccos\frac{\mathbf{n}\cdot\mathbf{e}}{ne}, \qquad \nu = \arccos\frac{\mathbf{e}\cdot\mathbf{r}}{er}

with aa from the energy integral and e=ee = |\mathbf{e}|.

Each arccos returns a value in [0,π][0, \pi], so three of the four need a quadrant check. Omitting them is the single most common bug in a first conversion routine, and it produces an orbit that is correct half the time, which is worse than one that is always wrong.

AngleResolve to the upper half only if
Ω\Omegany0n_y \ge 0; otherwise Ω=360°arccos(nx/n)\Omega = 360° - \arccos(n_x/n)
ω\omegaez0e_z \ge 0; otherwise ω=360°arccos(ne/ne)\omega = 360° - \arccos(\mathbf{n}\cdot\mathbf{e}/ne)
ν\nurv0\mathbf{r}\cdot\mathbf{v} \ge 0; otherwise ν=360°arccos(er/er)\nu = 360° - \arccos(\mathbf{e}\cdot\mathbf{r}/er)

One further precaution is required and is routinely omitted: clamp the cosine to [1,1][-1, 1] before taking the inverse. Floating-point round-off pushes a normalised dot product to values such as 1.0000000000000002, whose arccosine is not a number, and that then propagates silently through the rest of the state. It is not defensive padding; it is a case that occurs on ordinary inputs.

Where the classical set breaks

Two of the six elements are defined by reference to something that can cease to exist.

Circular orbit, e → 0
Periapsis is undefined, so ω is undefined. The line of apsides has no direction.
Equatorial orbit, i → 0
The line of nodes is undefined, so Ω is undefined. The plane has no ascending node.
Both at once
Only a and ν remain meaningful. A geostationary orbit sits at exactly this double singularity.

These are not edge cases to be handled defensively. They are the two most commercially important orbit classes on the list. Near-circular Earth observation orbits and geostationary communications orbits both sit arbitrarily close to a singularity, so ω\omega and Ω\Omega become numerically ill conditioned: tiny changes in the state produce huge swings in the reported angles, while the physical orbit barely moves.

The workaround is to use element sets with no singularity.

Equinoctial elements

Equinoctial elements replace the ill-conditioned angles with combinations that stay finite:

h=esin(ω+Ω),k=ecos(ω+Ω),p=tani2sinΩ,q=tani2cosΩh = e\sin(\omega + \Omega), \qquad k = e\cos(\omega + \Omega), \qquad p = \tan\frac{i}{2}\sin\Omega, \qquad q = \tan\frac{i}{2}\cos\Omega

together with aa and the mean longitude λ=M+ω+Ω\lambda = M + \omega + \Omega.

As e0e \to 0, both hh and kk go smoothly to zero rather than blowing up. As i0i \to 0, both pp and qq do the same. The set is non-singular everywhere except i=180°i = 180°, which no operational orbit uses.

Modified equinoctial elements substitute the semi-latus rectum p=a(1e2)p = a(1-e^2) for aa, which extends the set to parabolic and hyperbolic trajectories as well. This is the form most low-thrust trajectory optimisers work in, because the equations of motion in these variables are smooth and well scaled. See Trajectory optimization.

SetSingular atGood for
Classicale=0e=0, i=0i=0Human interpretation, textbook derivations
Equinoctiali=180°i=180°Near-circular and near-equatorial orbits, averaging
Modified equinoctiali=180°i=180°Low-thrust optimisation, all conic types
Cartesian stateNowhereNumerical integration, the actual force model

Two-line element sets

A TLE is the most widely distributed orbital data product in existence, and it is routinely misused. Four properties are essential.

The elements are mean, not osculating. The short-period oscillations from J2J_2 have been averaged out. Feeding TLE elements into a Keplerian propagator does not reproduce SGP4 and will not match reality; the elements only mean what they mean inside the theory that generated them.

The frame is TEME. True equator, mean equinox. It is not J2000 and not GCRF. As noted in Reference frames and time systems, treating SGP4 output as J2000 costs more than 40 km at low Earth orbit radii.

The epoch matters more than the numbers. Accuracy is roughly a kilometre at epoch and degrades by a few kilometres per day, faster during high solar activity. A week-old TLE for a low satellite is qualitative information.

The drag term is a fitted parameter, not physics. The BB^* field absorbs whatever the fit needed to match the observations, and can even come out negative. It is not a ballistic coefficient and should not be interpreted as one.

FieldMeaning
EpochYear and fractional day, UTC
Inclination, RAAN, argument of perigeeDegrees, mean elements in TEME
EccentricityDecimal point implied, leading zero omitted
Mean anomalyDegrees
Mean motionRevolutions per day, Brouwer mean, not 2π/T2\pi/T
BB^*Fitted drag term, units of inverse Earth radii

The correct use is to propagate with SGP4, convert TEME to the frame you need, and treat the result as having kilometre-scale uncertainty. Anything requiring better than that needs tracking data or an operator ephemeris.

References

  • Vallado, D. A. Fundamentals of Astrodynamics and Applications, 5th ed., Microcosm Press, 2022, chapter 2.
  • Broucke, R. A. and Cefola, P. J. “On the Equinoctial Orbit Elements”, Celestial Mechanics, 5:303, 1972.
  • Walker, M. J. H., Ireland, B. and Owens, J. “A Set of Modified Equinoctial Orbit Elements”, Celestial Mechanics, 36:409, 1985.
  • Vallado, D. A., Crawford, P., Hujsak, R. and Kelso, T. S. “Revisiting Spacetrack Report #3”, AIAA 2006-6753.
Last updated on