Come calcolare la distanza da un punto a un segmento di linea, su una sfera?

Ho un segmento di linea (parte del cerchio grande) sulla terra. Il segmento di linea è definito dalle coordinate delle sue estremità. Ovviamente, due punti definiscono due segmenti di linea, quindi supponiamo di essere interessato a quello più corto.

Mi viene dato un terzo punto e sto cercando la (più breve) distanza tra la linea e il punto.

Tutte le coordinate sono date in longitudine \ latitudine (WGS 84).

Come calcolo la distanza?

Una soluzione in qualsiasi linguaggio di programmazione ragionevole farà.