As a way to understand orbital motion, I’ve seen the idea of “Newton’s cannonball,” illustrated below from Wikipedia:

In this thought experiment, a cannon at the top of a tall mountain fires a cannonball at increasing velocities, until eventually it moves so fast that it achieves orbit.

**Problem:**Model a projectile being launched into orbit in this manner, and visually explore the transition between falling to Earth and orbiting.

For low speeds, the cannonball will fall in the familiar parabolic arc (curve A). But, as you can see from the diagram above, if launched with greater speed, it will fall a greater distance than it would have on a flat Earth, since the Earth’s surface has curved away from under it (curve B). If it were launched with sufficient speed, Earth’s surface will curve away from it as fast as it’s falling, and it will never reach the ground. It would be perpetually falling — it would be in orbit.

I programmed a simulation in Python. First let’s review projectile motion. For constant acceleration, **s** = ½**a***t*^{2} + **v _{0}**

*t*+

**s**, and we can divide that into

_{0}*x*and

*y*components. For projectiles with short trajectories, we treat the Earth as flat, so the acceleration is always downwards (this is the familiar setup used in math/physics classes). But if the cannonball moves far enough, the direction of acceleration changes.

I will divide up the trajectory into short time intervals and assume that the direction and magnitude of the force/acceleration don’t change over an interval. Also, I will assume the Earth is perfectly spherical, and there is no air resistance. (If not for the atmosphere, we could launch something into orbit from a tall building — and hope it doesn’t hit another tall building!) For visual clarity, I am going to launch from a height of 10% of the Earth’s radius, which works out to 10% of 6367 km or 637 km. Note that Earth’s highest mountain, Mount Everest, is only 8.8 km high, and the International Space Station orbits between 409 km and 416 km, so we’re a bit beyond that.

I’m setting the origin (0, 0) at the center of the Earth. The force due to gravity is

where *m*_{E} is the mass of the Earth and *m*_{p} is the mass of the projectile, and **r** is the distance to the projectile. For the projectile, **F**=*m*_{p}**a**, or **a** = **F**/*m*_{p}. We can divide the force by the mass of the projectile to get acceleration (which is therefore not dependent on the mass of the projectile).

At each step, we’ll take the coordinates of the projectile (*x*, *y*) and calculate the distance *r*. Using the above equation, we can get the magnitude of the acceleration, and multiply by *x*/*r* and *y*/*r* to get the components of acceleration in the *x* and *y* directions, respectively. We’ll use the *x*– and *y*-components of acceleration, velocity, and position to get the new position coordinates and the components of acceleration to get the new velocity.

Here is the animation. I used a Δ*t* of 1 second, and ran the program for 100,000 simulated seconds (at each launch velocity), or 27.8 hours. It started out with a launch velocity of 0 m/s (the trajectory is straight down), then increased to end up at 16,000 m/s (around the speed of *New Horizons,* the fastest spacecraft launched to date).

I’ll discuss my observations in a subsequent post. For now, note that the projectile is essentially falling continuously, but never reaching the ground. This is why people in orbiting spacecraft experience weightlessness. It is *not* because there is no gravity — on the contrary, gravity is what is keeping them in orbit. But they are falling, and since they and the spacecraft are falling at the same rate, there is nothing to push them against the craft.

It’s cool that you made up this entire problem. https://mathsux.org/