For a maths task in school, I am investigating the orbit of the International Space Station around the Earth. I understand that when the 3D movement in space is represented on a 2D surface, the relationship is not sinusoidal, however I have created the following (simple) model, which I am unsure is the most accurate. Below you can also find my calculated values with the formula (in red), compared to the actual values from an online API. Any help improving on this be greatly appreciated!


(This only applies for one of the curves (the one pictured below), as the wave is translated 22.5 degrees to the right after each cycle.)

My data can be found in the following google doc: https://docs.google.com/spreadsheets/d/1Ac8yQn8ybdtZWK8JyKAOIw46o3UJufAoidR5unjVeHs/edit?usp=sharing

ISS ground track versus sinusoid

  • $\begingroup$ It's an interesting question! I've made an edit but I'm not sure exactly what you would like to ask. Are you looking for a better equation that fits the ground track? One think you might notice is that the ground track does not repeat. After every 92 minute orbit the Earth has rotated by about 15 degrees underneath it, so the period of your sinusoid should be closer to 360-22.5=337.5 degrees. While your question is not answered there, see Why does the ISS track appear to be sinusoidal? $\endgroup$ – uhoh Apr 13 at 12:18
  • $\begingroup$ Also see ground track. $\endgroup$ – uhoh Apr 13 at 12:24
  • 1
    $\begingroup$ You are new to Stack Exchange so you don't know that it's generally discouraged to cross-post the same question to multiple SE sites. (question in Math SE) It might speed up getting an answer but it leads to answer fragmentation which is a problem for future readers. This is frequently confusing to new users, but we don't have a way to easily link answers to the same question that are posted on multiple sites. $\endgroup$ – uhoh Apr 13 at 13:01

tl;dr: use a parametric equation.

If the Earth were not rotating, then we would have something like

\begin{align} x & = \cos \omega (t-t_0)\\ y & = \sin \omega (t-t_0) \ \cos i\\ z & = \sin \omega (t-t_0) \ \sin i\\ \end{align}

where the radius of the orbit is 1, $\omega$ is $2 \pi/T$ and $T$ is the period, and $i$ is the inclination of the orbit.

Then we would have

\begin{align} lon & = \arctan2(y, x) + const\\ lat & = \arcsin(z)\\ \end{align}

If the Earth is rotating then

$$lon = \arctan2(y, x) - \omega_E (t-t_0) + const$$

Solving this for longitude as a function of latitude looks like some serious work and I am not sure there is an analytical solution.

Instead you can try the parametric equation approach where you first make a hidden table of times, and then solve for $lon(t)$ and $lat(t)$ and plot $lat$ vs $lon$

Here is a plot, I haven't adjusted $t_0$ or $const$ and just used rough values for $w$ and $i$ but it should be enough to get you stared.

Here is some further reading:

ISS ground track simulation

Python script:

import numpy as np
import matplotlib.pyplot as plt

twopi = 2*np.pi
to_degs, to_rads = 180/np.pi, np.pi/180.

omega = twopi/(92*60)
omega_E = twopi/(23*3600 + 56*60 + 4)

time = 60 * np.arange(101.) # 100 minutes

t0 = 1000. # arbitrary, you can fit this later
inc = 51.
const = 1.0  # arbitrary, you can fit this later

x = np.cos(omega * (time-t0))
y = np.sin(omega * (time-t0)) * np.cos(to_rads*inc)
z = np.sin(omega * (time-t0)) * np.sin(to_rads*inc)

lon = np.arctan2(y, x) - omega_E * (time-t0) + const
lat = np.arcsin(z)

if True:
    plt.plot(to_degs*lon, to_degs*lat, '.k')
    plt.xlim(-180, 180)
    plt.ylim(-60, 60)
| improve this answer | |
  • 1
    $\begingroup$ Thank you very much! This is greatly appreciated! $\endgroup$ – 3rik Felvinczi Apr 14 at 8:06
  • $\begingroup$ @ErikFelvinczi this was fun, welcome to Stack Exchange! $\endgroup$ – uhoh Apr 14 at 9:33
  • 1
    $\begingroup$ Thanks a lot :) $\endgroup$ – 3rik Felvinczi Apr 14 at 10:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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