Hallo,
vielleicht ist auch meine hinzugefügte ( und sicher noch verbesserungsfähige ) Winkelberechnung noch von Interesse.

Klaus

'--------------------------------------------------------------------
'Distanz und Winkel zwischen zwei geogr. Punkten

Code:
$lib "double.lbx"
$regfile = "m64def.dat"
$hwstack = 32
$swstack = 32
$framesize = 96

Dim A1 As Double , A2 As Double
Dim A3 As Double , A4 As Double ,
Dim B1 As Double , B2 As Double
Dim B3 As Double , B4 As Double
Dim B5 As Double , B6 As Double
Dim B7 As Double , B8 As Double
Dim B9 As Double , B10 As Double
Dim Dist As Double , B11 As Double
Dim C1 As Double , C2 As Double
Dim C3 As Double , C4 As Double
Dim C5 As Double , Pi As Double
Dim Radian As Double , Ga As Double
Dim Be As Double , Le As Double
Dim Bf As Double , Lf As Double ,
Dim Zw As Double , Zw1 As Double
Dim Zw2 As Double , Zw3 As Double
Dim Bear As Double , Bear1 As Double
Dim Bear2 As Double , Bear3 As Double
Dim Z As String * 20 , Y As Single
Dim X As String * 10
Dim W As String * 20 , V As Single
Dim U As String * 10

Pi = 3.141592654
Radian = 0.017453292                                        'Pi/180

Initlcd
Cursor Off
Cls

'Koordinate 1
A1 = 49.96                                                  'Breite Eigen (BE)
A2 = 8.2                                                    'Laenge Eigen (LE)

'Koordinate 2
A3 = 48.96                                                  'Breite Fremd ( BF )
A4 = 8.2                                                    'Laenge Fremd ( LF)

'Grundformel zur Distanzberechung:
'6371.229 * Arccos(sin(a1 * Pi / 180) * Sin(a3 * Pi / 180) +
'Cos(a1 * Pi / 180) * Cos(a3 * Pi / 180)’ * Cos((a2 -a7) * Pi / 180))

'Zerlegung der Formel
'Sin(a1 * Pi / 180)

B1 = Deg2rad(a1)
C1 = Sin(b1)

'Sin(a3 * Pi / 180)

B2 = Deg2rad(a3)
C2 = Sin(b2)

'Cos(a1 * Pi / 180)

B3 = Deg2rad(a1)
C3 = Cos(b3)

'Cos(a3 * Pi / 180)

B4 = Deg2rad(a3)
C4 = Cos(b4)

'Cos((a2 -a4) * Pi / 180)

B5 = A2 - A4
B5 = Deg2rad(b5)
C5 = Cos(b5)

'B9 =(c1 * C2) +(c3 * C4 * C5)

B6 = C1 * C2
B7 = C3 * C4
B8 = B7 * C5
B9 = B6 + B8

'6371 , 229 * Arccos(b9)

B10 = Acos(b9)
Dist = B10 * 6371.229

'Winkelberechnung ( Bearing ):
'-----------------------------

Be = A1 * Radian
Le = A2 * Radian
Bf = A3 * Radian
Lf = A4 * Radian

Ga = Le - Lf

'Grundformeln zur Winkelberechung:
'Zw = Cos(be) * Cos(ga) * Cos(bf) + Sin(be) * Sin(bf)
'Zw = Atn(zw / Sqr(1 -zw * Zw))
'Zw = Pi / 2 - Zw

'Bear =((sin(bf) - Sin(be) * Cos(zw)) /(cos(be) * Sin(zw)))
'Bear = Atn(bear / Sqr(1 -bear * Bear))
'Bear =(pi / 2 -bear) / Radian
'Zerlegung der Formeln:

Zw1 = Cos(be)
Zw2 = Cos(ga)
Zw3 = Cos(bf)
Zw2 = Zw1 * Zw2
Zw3 = Zw2 * Zw3
Zw1 = Sin(be)
Zw2 = Sin(bf)
Zw2 = Zw1 * Zw2
Zw = Zw2 + Zw3

Zw1 = Zw * Zw
Zw1 = 1 - Zw1
Zw1 = Sqr(zw1)
Zw = Zw / Zw1
Zw = Atn(zw)

Zw1 = Pi / 2
Zw = Zw1 - Zw

Bear1 = Sin(bf)
Bear2 = Sin(be)
Bear3 = Cos(zw)
Bear3 = Bear3 * Bear2
Bear1 = Bear1 - Bear3
Bear2 = Cos(be)
Bear3 = Sin(zw)
Bear2 = Bear2 * Bear3
Bear = Bear1 / Bear2

Bear1 = Bear * Bear
Bear1 = 1 - Bear1
Bear1 = Sqr(bear1)
Bear = Bear / Bear1
Bear = Atn(bear)

Bear1 = Pi / 2
Bear = Bear1 - Bear
Bear = Bear / Radian

Ga = Sin(ga)
If Ga >= 0 Then Bear = 360 - Bear

Z = Str(dist)
Y = Val(z)
X = Fusing(y , "#.#")

W = Str(bear)
V = Val(w)
U = Fusing(v , "#.#")

Locate 1 , 1
Lcd "DST: " ; X ; " Km"
Locate 2 , 1
Lcd "BRG: " ; U ; " Grad"

End