Determine la dirección de la brújula de un lat / lon al otro

¿Alguien tiene un algoritmo para determinar la dirección de un lat / lon a otro (pseudocódigo):

CalculateHeading( lat1, lon1, lat2, long2 ) returns string heading

Donde el encabezado es p. NW, SW, E, etc.

Básicamente, tengo dos puntos en un mapa y quiero tener una idea general de la dirección teniendo en cuenta que 50 millas al este y una milla al norte son simplemente este y no noreste.

Respuestas a la pregunta(3)

Su respuesta a la pregunta