moving space ships

Let’s say we have a space ship and it’s moving at some velocity. It’s not accelerating — its drives are off — it’s just drifting. There is nothing to slow it down in space (no air resistance or other interesting friction sources) and nothing to speed it up. There’s no reason for it to change direction. It’s just going to keep going at this speed in this direction forever. For simplicity we’ll use units of meters per second and consider time in 1 second increments.

We can represent this situation like so:

v1
It just goes ON like this.

On the right is our space ship and on the left is a vector indicating its velocity. In one second, the ship will be at the end of the arrow: its length indicates how far the ship will move in our 1 second tick. It’s predicting¬† the future for our space ship. This will go on forever.

Now if we want to turn, we can’t just steer — there’s no surface to get traction on, no wheels to redirect our momentum. The only tools we have are rotation and thrust. So that’s what we do. We rotate and we turn on the drive for a while, adding more velocity which we represent as a second vector in the direction of our burn. We can use the vector to find out where we’ll be next: we add a vector to the end of the existing one but at the angle of our burn.

v2
I want to turn left 40 degrees so let’s just rotate 40 degrees and burn, right?

So where will we be after our next tick? Well the trick with vectors is you add them nose to tail, preserving the angles, and then find the hypotenuse (sticking two vectors together gives you two sides of a triangle, and your new vector is the missing side of it!)

v3
Imagine our little space ship travelling along that new line forever.

 

And we’ll see that with that little 40-odd degree turn and burn (adding velocity!) our new vector has us starting to turn to the left. But we are also going faster than before! And we’re not pointing in the direction we’re travelling. This, in my opinion, summarizes a great deal of what’s weird about travelling in space compared to a road vehicle — you can only add velocity, the direction you’re pointing in determines the direction of acceleration and nothing else, and you need to spend an awful lot of fuel to make an interesting change of direction. Let’s try that turn again but much more sharply.

v4
Burn baby burn!

We’re really cranking the wheel over here! The same rules for adding vectors apply of course so we get a final vector of:

v5
Again, we should imagine little triangle space ship forever moving in the direction of the arrow, at a speed indicated by the arrow’s length, and oriented at a sharp angle to the direction of travel. Forever.

Well that’s a tighter turn! Notice a few things. We’re totally pointing away from our direction of travel for one. For another, our vector is shorter: we’ve managed to slow down by adding velocity in a direction that partially opposes our initial vector. So now we know that the only way to slow down is the same as everything else in space travel: add velocity.

This is why in the latest rev of Diaspora we only track a space craft’s “delta-v” or its total ability to change its velocity. Everything about how it moves, how fast it moves, and where it goes depends on this value. It’s how you start, how you steer, and how you stop. And, when you’re out, you just follow that vector forever.

Well surely not forever. What if there’s a planet in the way? I’m glad you asked. Same rules.

So when you travel near another significant mass, it continuously adds a vector for you, whether you accelerate or not. So let’s say we’re passing by a planet. We have our existing vector but we also add a new one that points to the center of the mass and has a size (magnitude, we say) related to the total mass. Planets add pretty big vectors.

v6
We just wanted to fly by this featureless planet but apparently the universe does not allow such things. Note that it’s only by happenstance that the gravitational vector touches the planet. It could be any length depending only on the mass of the planet.

And the result is:

v7
Planets are powerful attractors! It’s going to be close.

Wow! Notice a few things here. First, you don’t fall into the planet if you already have a big enough vector. If we had a smaller (or no) vector, we’d splat on the surface. But we fall past it! Precisely choosing altitude and vector is how we go into orbit: we just keep falling forever around the planet. But that’s not what this maneuver is going to do. The other thing to notice is that we are going way way faster than before — we’ve taken a ton of delta-v from the planet itself! Since delta-v is in such short supply, this has to be a useful move! We sometimes call it a slingshot maneuver, and it’s a very common way to get real spacecraft long distances in a relatively short period of time. Let’s look at the next second in this picture.

So now our two vectors are our original vector and the gravitational vector, which points to the center of mass of our planet:

v8
Now we are going to be going around this planet a bit but way too fast to orbit it.

Which gives us a result of:

v9
Zoom! If you do the next iteration yourself you might be surprised at the result.

We are going even faster now! All for free! And in a radically new direction.

Now, reality doesn’t actually progress in one second increments, so to find our actual path of travel we’d need to start looking at smaller increments. Do the vector addition every tenth of a second, every millionth of a second, refining and refining the path. This would be calculus, and we would see our actual path is a smooth curve. But the principle is the same and the result we care about is the same: we can steal velocity from planets.

In space all you can control is the change in your velocity, but you can steal velocity from planets. Another time we’ll talk about stealing negative velocity.

a note on gaming

This post is not about a game. You could game this way — it’s easy to see how you could do that, using counters or miniatures. It’s already been done too — Traveller, Triplanetary, Mayday, and even in 3-dimensional space in Vector-3. It’s not news for gaming. But my game targets people who don’t know the physics and maybe don’t care about it, but need a context to understand the design decisions that are based on physics. I will be leaning heavily into abstraction but you need to understand what you’re abstracting first.