# Changing direction over time

## Main Question or Discussion Point

Hello. When a missile changes direction over time to reach a line to target, how do you know when to begin turning?

What is the math called? Where might I find examples of this math?

To restate my question:

If your direction vector is due north, and a horizontal line to the target can be drawn from a point 500 meters in front of your nose to the target point at direction vector due west, how do you know when to begin turning?

The change in direction over time is measured in radians (of change in direction) per second. But since we aren't only aiming to change our direction vector toward the target due west, we also have to be on this heading when we reach the target's height (hence I mentioned we have to end up on a line to target) This presents the variables of: our position, our acceleration, our current speed, and our current direction vector. All of these things are known quantities.

Thanks for any help!

Last edited:

berkeman
Mentor
You should keep calculating where the intercept point will be in space, based on your vector and the target vector, and turn toward that intercept point. If the target does not maneuver, then that first calculation is all you need. As the target maneuvers, you need to keep using your two real-time velocity vectors to calculate the estimated intercept point, and keep turning toward that intercept point in space.

Hello, I think your proposal results in a "snap-to-target" missile. I want a missile that curves into its target.

In ASCII the problem looks thusly:

y
|________________________________ .TargetPosition (Static Target)
|----------*
|------*
|----*
|--*
|*
*_________________________________x
Our Position is at the origin

The question I have is, if the only variable you can control is when to begin turning, how do you time when to begin turning so that you'll end up on the "line-to-target",

Thanks for any help.

berkeman
Mentor
If you're not pointed at the predicted intercept point already, you start turning right away. Doing anything other than changing your vector for the predicted intercept point is sub-optimal.

Pursuit curves are an aspect of pde's if that's what you're thinking. But I don't think guided missiles are that smart.

If you're not pointed at the predicted intercept point already, you start turning right away. Doing anything other than changing your vector for the predicted intercept point is sub-optimal.
If I understand you correctly you are saying that a missile which intends to collide with a target should change its direction vector toward the target (if the target is static) or to the predicted intercept point (if the target is moving).

I disagree with you.

I think if a missile intends to collide with a static target it should first ascend to its prescribed flight altitude defined as the altitude at which the missile can sustain the longest flight time and thus maximum distance.

My objective is to level off at a prescribed altitude exactly, so I need to time when to begin turning toward the horizontal so that my altitude is at flight altitude by the time my direction is horizontal.

I have posted this question in many forums and nobody knows the answer. I thought it was because I was bad at math, but I guess this is a tough one.

berkeman
Mentor
If I understand you correctly you are saying that a missile which intends to collide with a target should change its direction vector toward the target (if the target is static) or to the predicted intercept point (if the target is moving).

I disagree with you.
Well then I want *you* designing the missles for the other side when I'm flying fighter jets.

I have posted this question in many forums and nobody knows the answer. I thought it was because I was bad at math, but I guess this is a tough one.
Nobody knows the answer because it pretty hard to understand what you meant.

If you are so good at maths, maybe try and support your explanation with something. Just because you are mis manipulating a thing, it doesn't mean you are always right

I agree that a missile should always keep tracking the objective, that is the earliest modification to its flight path it can do, and also it ll keep the flight distance to a minimum.

Last edited:
D H
Staff Emeritus
There is a big difference between short-range missiles, where gravity is a perturbing effect, and long-range missiles, where gravity is a dominating effect. What kind of missile are you talking about here? For example, does it fire all the way to the target or go ballistic at some point?

There is a reason you aren't finding a lot of information on missile guidance on the 'net, and it is the same reason that I am a bit leery about offering detailed assistance on the subject. I don't want to land in jail. Missile technology is subject to ITAR restrictions.

If you were a point, and you want to be on a specific line segment, and your rate of direction change is constant, how would you know when to begin turning so that you'll intersect the line at the precise moment that your slope is equal to the line (so that you will travel along that specific line segment).

Remember to take acceleration and velocity into account.

I'm not asking you to sell me weapons grade plutonium, just some help with a math problem. I am very bad at math so I'd appreciate your help.

Do you still not understand what I am asking anyone?

It seems like this is a pretty complicated question because nobody can answer it.

Last edited:
berkeman
Mentor
It's not complicated if the problem statement would include a drawing and some math. You can start turning at any time. The longer you wait, the tighter your turn has to be. Draw the two lines (yours and the target). You can draw infinitely many arcs for paths you can take in transitioning from one line of travel to the other.

You need to put some other constraint on the problem before you can choose one of the infitely many paths.

Perhaps (and I may be wrong) the confusion is because you're asking a simpler question then others are interpreting it as. Is what you're asking that if a missile is cruising how does it know to start turning? Well that's because it, I imagine, has a flight path which its guidance computer determines using partial differential equations and such and it knows its own orientation (due to gyroscopes in the missile) and the n it can determine (basically by doing a numerical derivative of the flight path) what its tangent vector should be and then it orients itself so that it matches this tangent vector every couple fractions of a second (it technically would be making constant, tiny corrections). However, I think the algorithm which generates the flight path is designed to create a flight path that has that maximum amount of straight flying and when not straight flying turns of a constant curvature (curvature being a quantity of differntial geometry and vector calculus) thus when its flight path comes to a curve the amount of the curve will be constant (by cleverly plotting the flight path) and thus every second or whatever when it checks its own trajectory through gyroscopes and such) and compares it to the flight path it will not need to make small adjustment. So really the 'cleverness' comes from the algorithm which generates the flight path (which is actively recomputing the flight path for a moving target and as new information becomes available).

As for something like heat seaking missile they just have a little infra-red camera on the front of them and they keep adjusting their heading to keep the biggest brightest thing that camera shows in the center of its vision field until it hits it and goes boom.

Thanks for your help, it's appreciated. Please allow me to further clarify my problem. (See the above post I made for the diagram).

I have my current position. Position(x,y,z) And my target's position. TargetPosition(x,y,z)
I have my current speed and direction. Velocity(x,y,z)
I have my acceleration. Acceleration = A
I have my flight altitude. FA = 5000m
I have the (I don't know what you call it) constant which defines the magnitude of change in my Velocity Normal (current direction) per second. Lets say .05

I have my targets position along the x,y plane. TargetPosition - Position = TargetDirection
TargetDirection.z = 0 (Because we don't care about height as we aren't aiming directly at the target... the height is FA)

If we need to reach the flight altitude at the same moment we are travelling horizontally so that we remain at the flight altitude, how do you know when to begin turning?

The turn is calculated like this:

Normalize my velocity and call it DV (Direction Vector).

Add or subtract on a per-component basis .05 * TimeDelta (or in other words .05 per second).

Ex.

TargetDirection.z = .15 DV.z = .10

In this scenario we have to add .05 to DV in order to turn toward the target direction. Let's apply this change:

Dv.z = Dv.z + 0.05

Now we are at the TargetDirection.z. Yay! Do this for the rest of the components until DV = TargetDirection.

And that is it.

The scenerio I put forth in the original post is if DV = (0, 0, 1) = straight up and our position is at origin. And our target direction = (1, 0, 0). When do we begin turning if when we reach target direction we must be at a height of FA. Say... 5000m.

P.S. I started learning calculus to figure this out because I believe the math to figure this out involves derivatives. It'll probably take me a few more days to create the equation which I don't really have the time for. I have to pump out the missile pathing algorithm by july and I have many other things I still have to do. I would really love the man who can give me this answer!

Last edited:
I believe, as you've phrased the problem, that is actually very difficult. One of the main problems is that you say that the magnitude of the change is a constant which I would not think it would be. However, if it is a constant then it acts on a constraint for a path minimization problem. The type of math you're looking at is differential geometry in 3-dimensions. I don't really have time to get into the calculation myself (although I may have time later and if I do do it I will post it). However, this is not how guidance systems work in missiles. They are far simpler devices who just make adjustments until they are at the right heading (which is plotted to be the shortest path from A to B that avoids obstacles) if they change their heading and then see something ahead of them they try to make a random course correction, if it's still there they try again, if they eventually get around it the computer copmutes a new path, if they don't they slam into the side of the obstacle (say a mountain). For you example if launched upwards they will turn as soon as they leave the launcher until their gyroscope tells them they are level (and if they over shoot they will adjust).

Ok. I'm not going to do the path determination stuff because that would be a HUGE pain (but I'd probably approach it using the Langrangian multiplier approach) but as for at what 'time' to turn here's the math (ask me if you don't understand any of it):

Let's say Mr. Rocket (whose velocity is always v (i.e. the magnitude is always v)) has an initial heading given by the vector Vi (velocity initial and for your case is (0,0,v)). And he wants his final heading to be Vf (which in your example is (v,0,0)) and furthermore, Mr. Rocket's initial position is (0,0,0) (the origin) and he wants his final position to be (d,o,1000) i.e. 1000 feet in the air and we don't care how far along x. So here's what he calculates:

we know that the dot product Vi dot Vf = |Vi||Vf|cos(thetac). (where thetac is the degree change in heading he has to make). So therefore the amount he has to turn is arccos(Vi dot Vc/|Vi||Vf|) and since |Vi|=|Vf|=v we get: thetac = arccos(Vi dot Vf/v^2). Now that's how much he has to turn.

Now as you said the amount he can turn (his d(Theta)/dt ) is a constant, let's call it c. So if d(Theta)/dt = c then (by abusing leibniz notation) dTheta = c*dt and finally (through integrating) thetac = c*tc where tc is the amount of time it takes to make a turn of thetac. Therefore tc = thetac/c (and we just determined thetac).

Now, almost there, we know that the velocity in the upwards direction equals v*cos(theta) (in the case you wanted where the turns is totally to the x-direction and away from the z direction). We can write this as (V_z) = v*cos(theta) and we can rewrite V_z as d(Z)/dt where Z is the distance travelled in the z-direction. Therefore, dZ/dt = v*cos(theta) now we integrate this to get Z = (v/c)*sin(theta) and from our dTheta/dt=c we know that theta=c*t so we have Z = (v/c)*sin(c*t) and what is our t here? Well it's the time to make the turn (which we called tc) so therefore the amount it continues to go higher in the z direction while continuing to make the turn equals Z(turn)=(v/c)*sin(c*tc) and we said tc = thetac/c so we get Z(turn) =(v/c)*sin(thetac) (because the c's cancel) and we know thetac is arccos(Vi dot Vf/v^2) so if his maximum z height is supposed to be 1000 he should start turning when his height is... *drumroll*:

**** 1000 - (v/c)*sin(arccos(Vi dot Vf/v^2)) ****

hope that helps. It was a lot of typing.

Wow thanks maverick_starstrider. I am thankful for your effort. I have a question though: where does your calculation take into account the change in Mr. Rocket's velocity due to acceleration?

Also I should applogize for not being more clear. Before going into this calculation I already know the time it is going to take to make the direction change so the second paragraph is unncessary. Sorry.

I am going to keep looking at your math and I'll post my results when I get the time.

Thaks again.

To be quite frank it doesnt.... Cause I forgot. If I have time i'll rework it.