Sidereon.Geodesic (Sidereon v0.23.0)

Copy Markdown View Source

WGS84 geodesic direct and inverse solves.

Angles are degrees and distances are metres at this boundary. The underlying solver is Karney's WGS84 geodesic implementation from sidereon-core.

Summary

Types

Direct geodesic result.

Inverse geodesic result.

Functions

Solve the WGS84 direct geodesic problem.

Solve the WGS84 inverse geodesic problem.

Types

direct_result()

@type direct_result() :: %{lat2_deg: float(), lon2_deg: float(), azi2_deg: float()}

Direct geodesic result.

inverse_result()

@type inverse_result() :: %{s12_m: float(), azi1_deg: float(), azi2_deg: float()}

Inverse geodesic result.

Functions

direct(lat1_deg, lon1_deg, azi1_deg, s12_m)

@spec direct(number(), number(), number(), number()) ::
  {:ok, direct_result()} | {:error, Sidereon.Geodesic.GeodesicError.t()}

Solve the WGS84 direct geodesic problem.

Inputs are point 1 latitude, longitude, forward azimuth, and geodesic distance. Returns point 2 latitude, longitude, and forward azimuth.

inverse(lat1_deg, lon1_deg, lat2_deg, lon2_deg)

@spec inverse(number(), number(), number(), number()) ::
  {:ok, inverse_result()} | {:error, Sidereon.Geodesic.GeodesicError.t()}

Solve the WGS84 inverse geodesic problem.

Inputs are point 1 latitude and longitude followed by point 2 latitude and longitude, all in degrees. Returns geodesic distance and forward azimuths.