52 lines
1.5 KiB
VB.net
52 lines
1.5 KiB
VB.net
Module Module1
|
|
|
|
Function Delta_Bearing(b1 As Decimal, b2 As Decimal) As Decimal
|
|
Dim d As Decimal = 0
|
|
|
|
' Convert bearing to W.C.B
|
|
While b1 < 0
|
|
b1 += 360
|
|
End While
|
|
While b1 > 360
|
|
b1 -= 360
|
|
End While
|
|
|
|
While b2 < 0
|
|
b2 += 360
|
|
End While
|
|
While b2 > 0
|
|
b2 -= 360
|
|
End While
|
|
|
|
' Calculate delta bearing
|
|
d = (b2 - b1) Mod 360
|
|
' Convert result to Q.B
|
|
If d > 180 Then
|
|
d -= 360
|
|
ElseIf d < -180 Then
|
|
d += 360
|
|
End If
|
|
|
|
Return d
|
|
End Function
|
|
|
|
Sub Main()
|
|
' Calculate standard test cases
|
|
Console.WriteLine(Delta_Bearing(20, 45))
|
|
Console.WriteLine(Delta_Bearing(-45, 45))
|
|
Console.WriteLine(Delta_Bearing(-85, 90))
|
|
Console.WriteLine(Delta_Bearing(-95, 90))
|
|
Console.WriteLine(Delta_Bearing(-45, 125))
|
|
Console.WriteLine(Delta_Bearing(-45, 145))
|
|
Console.WriteLine(Delta_Bearing(29.4803, -88.6381))
|
|
Console.WriteLine(Delta_Bearing(-78.3251, -159.036))
|
|
|
|
' Calculate optional test cases
|
|
Console.WriteLine(Delta_Bearing(-70099.742338109383, 29840.674378767231))
|
|
Console.WriteLine(Delta_Bearing(-165313.6666297357, 33693.9894517456))
|
|
Console.WriteLine(Delta_Bearing(1174.8380510598456, -154146.66490124757))
|
|
Console.WriteLine(Delta_Bearing(60175.773067955459, 42213.071923543728))
|
|
End Sub
|
|
|
|
End Module
|