Trigonometry – Calculate Position Based on Angles Between Three Known Points

euclidean-geometrytrigonometry

Assume that the positions of three points – A, B and C – are known (arbitrary 2D orthonormal coordinates). Hence it is easy to calculate the sides and angles of the resulting triangle.

The position of the observer, denoted O, is unknown (although on the same plane) but the angles between the points A, B and C are measured by the observer; $ \theta_{AB},\;\theta_{AC},$ and $\theta_{BC} $.

enter image description here

Is it possible to calculate the position of the observer based on this information? According to my intuition the answer is affirmative, however a google search has left me disappointed.

Best Answer

It's possible. Assuming all measured angles are greater than 0, the following should work for any position of the observer.

Given a line segment AB, the loci of points P such that the angle APB has a constant value are circular arcs that pass through the points A and B. In other words, if you have measured an angle $\theta_{AB}$ between the points $A$ and $B$, your position must be on a particular circular arc passing through $A$ and $B$. This arc can be determined when you know the angle and the position of $A$ and $B$. And when you have $3$ points, you can make $3$ circular arcs and find their common intersection point. That point will be the position of the observer.

Step 1 (AB)

Angle_AB

To find the circular arc passing through $A$ and $B$, first find the bisector of $AB$. Now find the point on the bisector which creates an angle of $\theta_{AB}$ to the cord $AB$. This can be determined using the formula $$h_{AB} = x_{AB}*cot(\frac{\theta_{AB}}{2})$$

Draw a circle through this point and points $A$ and $B$. The observer's position will be on this circle.

Step 2 (BC)

Angle_BC

In the same way as was done above, we find the circular arc passing through $B$ and $C$ (the red circle is the one found above).

We see that the new circle intersects the first circle at point $B$ (not surprising) and at the observer's position. We have now determined the observer's position.

To make absolutely sure, we can do the last circular arc:

Angle_AC

And we have a match.