point.go
func BearingTo(p1, p2 Point) float64 {
	dLon := toRadians(p2.Lon() - p1.Lon())

	lat1 := toRadians(p1.Lat())
	lat2 := toRadians(p2.Lat())

	y := math.Sin(dLon) * math.Cos(lat2)
	x := math.Cos(lat1)*math.Sin(lat2) -
		math.Sin(lat1)*math.Cos(lat2)*math.Cos(dLon)
	brng := toDegrees(math.Atan2(y, x))

	return brng
}
func BearingTo(p1, p2 Point) float64 {
	dLon := toRadians(p2.Lon() - p1.Lon())

	lat1 := toRadians(p1.Lat())
	lat2 := toRadians(p2.Lat())

	y := math.Sin(dLon) * math.Cos(lat2)
	x := math.Cos(lat1)*math.Sin(lat2) -
		math.Sin(lat1)*math.Cos(lat2)*math.Cos(dLon)
	brng := toDegrees(math.Atan2(y, x))

	return brng
}
func BearingTo ( p1 , p2 Point ) float64 { dLon := toRadians ( p2 . Lon ( ) - p1 . Lon ( ) ) lat1 := toRadians ( p1 . Lat ( ) ) lat2 := toRadians ( p2 . Lat ( ) ) y := math . Sin ( dLon ) * math . Cos ( lat2 ) x := math . Cos ( lat1 ) * math . Sin ( lat2 ) - math . Sin ( lat1 ) * math . Cos ( lat2 ) * math . Cos ( dLon ) brng := toDegrees ( math . Atan2 ( y , x ) ) return brng }
// BearingTo returns the bearing from p1 to p2
BearingTo returns the bearing from p1 to p2