1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//! Code to calculate angular separations.
/// Angular separation between two sets of spherical coordinates. (`eraSeps`)
///
/// Given:
/// * `a_long`: first longitude (radians)
/// * `a_lat`: first latitude (radians)
/// * `b_long`: second longitude (radians)
/// * `b_lat`: second latitude (radians)
///
/// Returned:
/// * angular separation (radians)
///
/// Angular separation between two p-vectors. (`eraSepp`)
///
/// Given:
/// * `a`: first p-vector (not necessarily unit length)
/// * `b`: second p-vector (not necessarily unit length)
///
/// Returned:
/// * angular separation (radians, always positive)
///
/// Notes:
///
/// * The angular separation is most simply formulated in terms of
/// scalar product. However, this gives poor accuracy for angles
/// near zero and pi. The present algorithm uses both cross product
/// and dot product, to deliver full accuracy whatever the size of
/// the angle.
///