Points on the sphere#

Displacements#

The displacement of a point on the sphere is described by movement along a geodesic. In the language of ships, this is called “great-circle navigation”, while in differential geometry, it is the so-called “exponential map”.

On the sphere, we encode displacement as a complex value \(\alpha\) with spin weight \(1\). The absolute value \(|\alpha|\) is the angular distance of the displacement: If \(\hat{u}\) and \(\hat{u}'\) are two points on the sphere, and \(\alpha\) is the complex displacement between them, then \(\hat{u} \cdot \hat{u}' = \cos|\alpha|\).

The complex argument \(\arg\alpha\) (in radians) is the direction of the displacement: By convention, \(\arg\alpha = 0\) is north, \(\arg\alpha = \frac{\pi}{2}\) is east, \(\arg\alpha = \pi\) is south, and \(\arg\alpha = -\frac{\pi}{2}\) is west. With this definition, the gradients of potential fields recover their intuitive meaning, e.g. in gravitational lensing.

There are two functions for working with points and displacements: Given a set of points and their displacements, the displace() function computes the new set of points after applying the displacement. Conversely, given an initial and a final set of points, the displacement() function computes the displacement that would transform the one set into the other.

angst.displace(lon, lat, alpha)#

Displace points with longitude lon and latitude lat (both in degrees) by alpha. Inputs must be array-like. The displacement alpha must be complex-valued or have a leading axis of size 2 for its real and imaginary component.

Returns a tuple newlon, newlat of longitude and latitude (both in degrees) of the displaced points.

angst.displacement(from_lon, from_lat, to_lon, to_lat)#

Compute the complex displacement that transforms points with longitude from_lon and latitude from_lat into points with longitude to_lon and latitude to_lat (all in degrees). All inputs must be array-like.