ADD: new track message, Entity class and Position class
This commit is contained in:
132
libs/geographiclib/wrapper/excel/Geodesic.bas
Normal file
132
libs/geographiclib/wrapper/excel/Geodesic.bas
Normal file
@@ -0,0 +1,132 @@
|
||||
Attribute VB_Name = "Geodesic"
|
||||
Option Explicit
|
||||
|
||||
' Declare the DLL functions
|
||||
|
||||
Private Declare PtrSafe Sub gdirect Lib "cgeodesic.dll" _
|
||||
(ByVal lat1 As Double, ByVal lon1 As Double, _
|
||||
ByVal azi1 As Double, ByVal s12 As Double, _
|
||||
ByRef lat2 As Double, ByRef lon2 As Double, ByRef azi2 As Double)
|
||||
|
||||
Private Declare PtrSafe Sub ginverse Lib "cgeodesic.dll" _
|
||||
(ByVal lat1 As Double, ByVal lon1 As Double, _
|
||||
ByVal lat2 As Double, ByVal lon2 As Double, _
|
||||
ByRef s12 As Double, ByRef azi1 As Double, ByRef azi2 As Double)
|
||||
|
||||
Private Declare PtrSafe Sub rdirect Lib "cgeodesic.dll" _
|
||||
(ByVal lat1 As Double, ByVal lon1 As Double, _
|
||||
ByVal azi12 As Double, ByVal s12 As Double, _
|
||||
ByRef lat2 As Double, ByRef lon2 As Double)
|
||||
|
||||
Private Declare PtrSafe Sub rinverse Lib "cgeodesic.dll" _
|
||||
(ByVal lat1 As Double, ByVal lon1 As Double, _
|
||||
ByVal lat2 As Double, ByVal lon2 As Double, _
|
||||
ByRef s12 As Double, ByRef azi12 As Double)
|
||||
|
||||
' Define the custom worksheet functions that call the DLL functions
|
||||
|
||||
Function geodesic_direct_lat2(lat1 As Double, lon1 As Double, _
|
||||
azi1 As Double, s12 As Double) As Double
|
||||
Attribute geodesic_direct_lat2.VB_Description = _
|
||||
"Solves direct geodesic problem for lat2."
|
||||
Dim lat2 As Double
|
||||
Dim lon2 As Double
|
||||
Dim azi2 As Double
|
||||
Call gdirect(lat1, lon1, azi1, s12, lat2, lon2, azi2)
|
||||
geodesic_direct_lat2 = lat2
|
||||
End Function
|
||||
|
||||
Function geodesic_direct_lon2(lat1 As Double, lon1 As Double, _
|
||||
azi1 As Double, s12 As Double) As Double
|
||||
Attribute geodesic_direct_lon2.VB_Description = _
|
||||
"Solves direct geodesic problem for lon2."
|
||||
Dim lat2 As Double
|
||||
Dim lon2 As Double
|
||||
Dim azi2 As Double
|
||||
Call gdirect(lat1, lon1, azi1, s12, lat2, lon2, azi2)
|
||||
geodesic_direct_lon2 = lon2
|
||||
End Function
|
||||
|
||||
Function geodesic_direct_azi2(lat1 As Double, lon1 As Double, _
|
||||
azi1 As Double, s12 As Double) As Double
|
||||
Attribute geodesic_direct_azi2.VB_Description = _
|
||||
"Solves direct geodesic problem for azi2."
|
||||
Dim lat2 As Double
|
||||
Dim lon2 As Double
|
||||
Dim azi2 As Double
|
||||
Call gdirect(lat1, lon1, azi1, s12, lat2, lon2, azi2)
|
||||
geodesic_direct_azi2 = azi2
|
||||
End Function
|
||||
|
||||
Function geodesic_inverse_s12(lat1 As Double, lon1 As Double, _
|
||||
lat2 As Double, lon2 As Double) As Double
|
||||
Attribute geodesic_inverse_s12.VB_Description = _
|
||||
"Solves inverse geodesic problem for s12."
|
||||
Dim s12 As Double
|
||||
Dim azi1 As Double
|
||||
Dim azi2 As Double
|
||||
Call ginverse(lat1, lon1, lat2, lon2, s12, azi1, azi2)
|
||||
geodesic_inverse_s12 = s12
|
||||
End Function
|
||||
|
||||
Function geodesic_inverse_azi1(lat1 As Double, lon1 As Double, _
|
||||
lat2 As Double, lon2 As Double) As Double
|
||||
Attribute geodesic_inverse_azi1.VB_Description = _
|
||||
"Solves inverse geodesic problem for azi1."
|
||||
Dim s12 As Double
|
||||
Dim azi1 As Double
|
||||
Dim azi2 As Double
|
||||
Call ginverse(lat1, lon1, lat2, lon2, s12, azi1, azi2)
|
||||
geodesic_inverse_azi1 = azi1
|
||||
End Function
|
||||
|
||||
Function geodesic_inverse_azi2(lat1 As Double, lon1 As Double, _
|
||||
lat2 As Double, lon2 As Double) As Double
|
||||
Attribute geodesic_inverse_azi2.VB_Description = _
|
||||
"Solves inverse geodesic problem for azi2."
|
||||
Dim s12 As Double
|
||||
Dim azi1 As Double
|
||||
Dim azi2 As Double
|
||||
Call ginverse(lat1, lon1, lat2, lon2, s12, azi1, azi2)
|
||||
geodesic_inverse_azi2 = azi2
|
||||
End Function
|
||||
|
||||
Function rhumb_direct_lat2(lat1 As Double, lon1 As Double, _
|
||||
azi12 As Double, s12 As Double) As Double
|
||||
Attribute rhumb_direct_lat2.VB_Description = _
|
||||
"Solves direct rhumb problem for lat2."
|
||||
Dim lat2 As Double
|
||||
Dim lon2 As Double
|
||||
Call rdirect(lat1, lon1, azi12, s12, lat2, lon2)
|
||||
rhumb_direct_lat2 = lat2
|
||||
End Function
|
||||
|
||||
Function rhumb_direct_lon2(lat1 As Double, lon1 As Double, _
|
||||
azi12 As Double, s12 As Double) As Double
|
||||
Attribute rhumb_direct_lon2.VB_Description = _
|
||||
"Solves direct rhumb problem for lon2."
|
||||
Dim lat2 As Double
|
||||
Dim lon2 As Double
|
||||
Call rdirect(lat1, lon1, azi12, s12, lat2, lon2)
|
||||
rhumb_direct_lon2 = lon2
|
||||
End Function
|
||||
|
||||
Function rhumb_inverse_s12(lat1 As Double, lon1 As Double, _
|
||||
lat2 As Double, lon2 As Double) As Double
|
||||
Attribute rhumb_inverse_s12.VB_Description = _
|
||||
"Solves inverse rhumb problem for s12."
|
||||
Dim s12 As Double
|
||||
Dim azi12 As Double
|
||||
Call rinverse(lat1, lon1, lat2, lon2, s12, azi12)
|
||||
rhumb_inverse_s12 = s12
|
||||
End Function
|
||||
|
||||
Function rhumb_inverse_azi12(lat1 As Double, lon1 As Double, _
|
||||
lat2 As Double, lon2 As Double) As Double
|
||||
Attribute rhumb_inverse_azi12.VB_Description = _
|
||||
"Solves inverse rhumb problem for azi12."
|
||||
Dim s12 As Double
|
||||
Dim azi12 As Double
|
||||
Call rinverse(lat1, lon1, lat2, lon2, s12, azi12)
|
||||
rhumb_inverse_azi12 = azi12
|
||||
End Function
|
||||
Reference in New Issue
Block a user