### Distance between points on a sphere

If you try and find out how you compute the distance between points on a sphere, you’ll get a bunch of sites which offer to calculate it for you if you enter the coordinates. If you search harder, you can even get the formula. But no one seems to be offering a derivation. So here you go.

First, some preliminaries. The half angle formulas give us 2 sin² ½ψ = 1-cos ψ. (Easily derivable from cos 2α = cos² α – sin² α.) The straight-line distance (cutting through the inside of the sphere) between two points on a unit sphere with an angle ψ between them is 2 sin ½ψ. (Bisect the triangle formed by the two points and the center of the sphere.)

Consider A and B to be our two points we want to get the distance between, with latitudes φ_{A} and φ_{B}, and longitudes which differ by Θ. We’ll operate mostly on the disk formed by the parallel through B. The point where it intersects the pole is D, and the projection of A onto it is C. Let EB be perpendicular to DC.

The radius of the parallel through A is cos φ_{A} = DC; the one through B is cos φ_{B} = DB. Angle CDB is Θ, so EB = r_{B} sin Θ and ED = r_{B} cos Θ.

EC = CD – ED = r_{A} – r_{B} cos Θ.

BC² = EC² – EB² = r_{A}² – 2 r_{A} r_{B} cos Θ + r_{B}² cos² Θ + r_{B}² sin² Θ = r_{A}² + r_{B}² – 2 r_{A} r_{B} cos Θ.

AC = |sin φ_{A} – sin φ_{B}|.

AB² = BC² + AC² = r_{A}² + r_{B}² – 2 r_{A} r_{B} cos Θ + sin² φ_{A} + sin² φ_{B} – 2 sin φ_{A} sin φ_{B}

= 2 – 2 r_{A} r_{B} cos Θ – 2 sin φ_{A} sin φ_{B}.

If ψ is the angle AOB (which is also the along-surface distance between A and B), then

AB² = 4 sin² ½ψ = 2 – 2 cos ψ.

So, 1 – r_{A} r_{B} cos Θ – sin φ_{A} sin φ_{B} = 1 – cos ψ.

ψ = arccos(cos φ_{A} cos φ_{B} cos Θ + sin φ_{A} sin φ_{B}).