As explained in the answer to this question, IERS technical notes give a clear procedure to convert coordinates between the GCRF and ITRF frames.

However, I believe these refer only to position vectors.

But what about also converting velocity vectors? I guess we need to consider the rotation of Earth, but my question is, how would this be exactly performed?

Some smaller parts of this question would be:

  • Since the Z axis in the ITRF frame is aligned with the instantaneous rotation axis, as stated here, would the angular velocity vector have X and Y components equal to 0, and Z equal to the speed of rotation of Earth?
  • Can this speed of rotation be considered constant for the time-scales involved in propagation of orbits of artificial satellites?
  • How would exactly the angular velocity vector be somehow taken into consideration together with the position of the object to calculate the additional velocity that we need to add when going into GCRF frame?

1 Answer 1


I guess we need to consider the rotation of Earth, but my question is, how would this be exactly performed?

Exactly or approximately? Exactly is very difficult. Approximately is easy.

The transformation from the GCRF to the ITRF is calculated as equation (1) in SOFA Tools for Earth Attitude as

$$\mathbf{R}_{\text{GCRF}\to\text{ITRF}} = \mathbf{R}_{\text{PM}} \mathbf{R}_3(\theta) \mathbf{R}_{\text{NPB}}$$

Take the time derivative of this (if you can) and you'll get an ugly mess. But you will get the Earth's instantaneous axis of rotation (as a skew symmetric matrix) times the transformation from GCRF to ITRF. That skew symmetric matrix is the Earth's angular velocity vector with respect to inertial expressed in ITRF.

Ignoring polar motion entirely (polar motion is very small) and ignoring the time derivative of the nutation-precession-bias transformation matrix (precession is large but the rate is very small) leads to a very simple expression for the Earth's angular velocity vector: It is very close to 2 pi radians per sidereal day about the axis going from the center of the Earth to the North Pole (ITRF +z, ignoring polar motion).

Transport theorem
Regardless of which technique you use to calculate $\boldsymbol{\omega}$, the transport theorem says that given an object's GCRF position and velocity, the object's velocity in ITRF (ECEF) is

$$\mathbf{v}_{\text{ITRF}} = \mathbf{R}_{\text{GCRF}\to\text{ITRF}} \mathbf{v}_{\text{GCRF}} - \boldsymbol{\omega} \times \left(\mathbf{R}_{\text{GCRF}\to\text{ITRF}} \mathbf{r}_{\text{GCRF}}\right)$$

  • 2
    $\begingroup$ Is MathJax broken today, or just slow? $\endgroup$ Feb 2, 2022 at 16:15
  • $\begingroup$ Thanks a lot, this clears up many things! So it seems the key is how accurate we want to be when calculating $\omega$. I have seen that Earth orientation parameters give the exact duration of a day (in seconds of deviation from the standard 86400s). For the purposes of propagation of orbits of artificial satellites, I think I will try the approximate way. Is there any applications where the exact way (getting the messy time derivative you mentioned) would be required? $\endgroup$
    – Rafa
    Feb 3, 2022 at 1:44
  • $\begingroup$ @DavidHammen By taking the time derivative of the RGCRF→ICRF matrix, what would be the accurate deltaT to do this computation (R' = (R(t+deltaT)-R(t))/deltaT) ? $\endgroup$
    – GuillaumeJ
    Mar 15, 2022 at 14:11
  • 2
    $\begingroup$ @GuillaumeJ Zero, or nearly so. That is not a good way to calculate the derivative of a transformation matrix. A much better approach is to use $\dot{\mathbf{R}}_{R\to I} = \mathbf{R}_{R\to I} \mathbf{Sk}(\vec \omega)$ where $\mathbf{R}_{R\to I}$ is the transformation matrix from Earth-fixed to Earth-centered inertial, $\mathbf{Sk}(\vec \omega)$ is the skew-symmetric cross product matrix generated from $\vec\omega$, and $\vec\omega$ is the angular velocity of the Earth with respect to inertial, expressed in Earth-fixed coordinates. $\endgroup$ Mar 15, 2022 at 14:49
  • $\begingroup$ @DavidHammen Thanks a lot! $\vec{w}$ is just $w_x=0, w_y=0, w_z=7.2921159 × 10^{−5}$ ? Or is it more complicated ? If it is, can you give me any documentation on how to compute this vector ? $\endgroup$
    – GuillaumeJ
    Mar 15, 2022 at 15:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.