Angle (angular distance) between 2 directions
[ang] = CL_gm_sphericDist(p1,p2)
Computes the angle between 2 vectors. Each vector is described by 2 spherical coordinates (analogous to longitude and latitude).
The three following formulas give the spherical distance between two vectors (where lambda: longitude, phi:latitude):
However, the first formula is used in this function as the two other ones may lead to rounding errors for small angles or antipodal points.
First direction in spherical coordinates: [longitude;latitude] [rad] (2xN)
Second direction in spherical coordinates: [longitude;latitude] [rad] (2xN)
Angle between p1 and p2 [rad] (1xN)
CNES - DCT/SB
1) R.W. Sinnott, "Virtues of the Haversine", Sky and Telescope, vol. 68, no. 2, 1984, p. 159
2) Weisstein, Eric W. "Great Circle." From MathWorld. http://mathworld.wolfram.com/GreatCircle.html
// Spherical distance between Toulouse (43deg 36' 19"N, 1deg 26' 34"E) // and Barcelona (41deg 24' 7"N, 2deg 10' 17"E) tlse_lat = 43 + 36/60 + 19/3600; tlse_lon = 1 + 26/60 + 34/3600; bcn_lat = 41 + 24/60 + 7/3600; bcn_lon = 2 + 10/60 + 17/3600; tlse_coord = CL_deg2rad([tlse_lon;tlse_lat]); bcn_coord = CL_deg2rad([bcn_lon;bcn_lat]); tlse_bcn = CL_gm_sphericDist(tlse_coord,bcn_coord); disp('Spherical distance : '+string(CL_rad2deg(tlse_bcn))+' deg'); earth_radius = 6378.e3; disp('Distance : '+string(tlse_bcn*earth_radius/1000)+' km'); | ![]() | ![]() |