Identifying the Course to Steer Algebraically

Most navigation techniques taught for identifying the course to steer relies on the graphical addition of vectors. This is by far the the technique that requires the least amount of mathematics.

I recently wrote a software that writes figures to help students learning the « graphical method ». Ironically, this meant that I had to dive in the underlying mathematics so that the computer could solve it.

In that type of problem, the surface speed of the boat is assumed to be known and the course over the ground is also assumed to be known. What needs to be found is the course to steer and the speed over the ground.

Because, the problem relies on a system of two equations involving trigonometric functions, I thought until recently that the problem had no closed form solution and had to be found numerically.

It turns out there is a closed form solution. If we denote the course to steer \theta_s and assume to be working on a small enough portion of the earth, allowing us to neglect its curvature, it can be found by computing:

\theta_s =\theta_g -\sin^{-1}\left(\frac{v_d}{v_s}\sin\left(\theta_d-\theta_g\right)\right),

where \theta_d is the set, \theta_g is the course over the ground, v_s is the surface speed and v_d is the drift. If there is a calculator onboard, this may be easier (and definitely more precise) than the graphical addition of vectors.

In the Figure on top of this post, there is a one hour construction of a completely solved course to steer problem. Using the data contained in the Figure, using only the known information before the problem is solved, the formula yields:

\theta_s = 135-\sin^{-1}\left(\frac{2}{5}\sin\left(220-135\right)\right) \approx 111.52°,

which is the value in the figure, rounded to the nearest degree (112°).

Before digging into how to obtain this formula, it is worth mentionning three things.

First, for the physicists reading this post, I use the word « speed » to describe what you would call « velocity ». I know! Please behave.

Second, the formula has an intuitive interpretation: the course to steer \theta_s is equal to the desired course over the ground \theta_g with a correction (-\sin^{-1}\left(\frac{v_d}{v_s}\sin\left(\theta_d-\theta_g\right)\right)). The correction is a function of how strongly the current pushes the boat away from the desired track. The strength is measured by the speed ratio (v_d/v_s), but also by the difference of direction over which the speed is applied. The stronger is the current, the bigger is the correction. The more the set is important relative to the course over the ground, the bigger is the correction. Conversely, if the drift is zero, or if the set is equal to the course over the ground, then the correction is null.

In the example, the correction is of 23°.

Third, there is a dirty trick that can be used to compute this expression if the difference between angles (set and course over the ground) is small enough. I discuss it in the conclusion.

Derivation

The derivation is based on the conservation of movement principle in the euclidian plane. The x/y decomposition of the vectors must hold:

v_s \cos(\theta_s) + v_d \cos(\theta_d) = v_g \cos(\theta_g),\\
v_s \sin(\theta_s) + v_d \sin(\theta_d) = v_g \sin(\theta_g),

where v_g and \theta_s are unkown. Isolating v_g  and eliminating the variable by using both equation yields:

v_s\frac{\cos(\theta_s) }{\cos(\theta_g)} + v_d \frac{\cos(\theta_d)}{\cos(\theta_g)} = v_s \frac{\sin(\theta_s)}{\sin(\theta_g)} + v_d \frac{\sin(\theta_d)}{\sin(\theta_g)}.

With a little algebra, one can find:

v_s\left[\sin(\theta_g)\cos(\theta_s) - \cos(\theta_g)\sin(\theta_s)\right] = v_d \left[\sin(\theta_d)\cos(\theta_g) - \cos(\theta_d)\sin(\theta_g)\right].

Do you remember the day when your high school professor told that you should remember trigonometric identities? Me neither. I was stuck at this step for a while, shrugging and thinking I would just pitch the problem to a numerical solver.

But recently, I played with tides, which involved the use of trigonometric identities. This made me realize that the terms between brackets can be simplified. Recall that:

 \sin(a)\cos(b) - \cos(a)\sin(b) = \sin(a-b),

and so:

v_s\sin(\theta_g - \theta_s)= v_d\sin(\theta_d-\theta_g).

From there, almost all the work is done. All that is needed is to isolate \theta_s, which is the course to steer. This solution translates into a single line in the program (image below) and the equation at the beginning of the text.

Further Simplification

When the set and the course over the ground are close one another, one can use a trick to make the expression even simpler, which is that \sin(x) \approx x when x is small. In such a case, the expression can be approximated by:

\theta_s \approx \theta_g -\frac{v_d}{v_s}\left(\theta_d-\theta_g\right).

The usual rule is to not use this approximation for x no greater than 20 degrees. This means that the difference between the set and the course over the ground should not be greater than 20 degrees.

Conclusion

For the humankind, none of this new knowledge, but it is a cool piece of knowledge that I rediscovered recently. If you can handle a pocket calculator and are not affraid of trigonometry, the formula above may be faster than the graphical addition of vectors… but not faster than using a chartplotter.