Look angles to a target
Azimuth, elevation, and straight-line range from an observer to a target, both with heights above the ellipsoid, with a warning when the Earth's curve hides the target.
Planning and education aid. Not for primary navigation. Full disclaimer
Point at 89.43° and 0.4653°, 150,352.422 m away.
- Elevation
- Straight-line range
- Horizon elevation
Provenance
- Computed by
- navigation.vector.look-angles 1.0.0, core 0.1.0
- Model
- Both points to WGS 84 ECEF, then east-north-up at the observer: azimuth = atan2(E, N), elevation = atan2(U, √(E² + N²)). The horizon is at −acos(Rₑ / (Rₑ + h)) with Rₑ = 6,371 km / (1 − k); refraction raises the elevation by k × (ground distance / 6,371 km) / 2
- Accuracy
- Exact geometry; the horizon and refraction use a mean-radius sphere and a single refraction coefficient, and ignore terrain.
- Notes
- None
- Cites
- Karney, C. F. F., GeographicLib, GeographicLib Geocentric and LocalCartesian classes
Something look off?
How we got thisFormula, worked example, sources, and proof
Model: Both points to WGS 84 ECEF, then east-north-up at the observer: azimuth = atan2(E, N), elevation = atan2(U, √(E² + N²)). The horizon is at −acos(Rₑ / (Rₑ + h)) with Rₑ = 6,371 km / (1 − k); refraction raises the elevation by k × (ground distance / 6,371 km) / 2
Show your work
East, north, up at the observer
rotate the Earth-centered offset into the local frame150,352.422 m apart= E 150,340.136 m, N 1,484.351 m, U 1,221.019 mAzimuth
atan2(E, N)atan2(150,340.136, 1,484.351)= 89.43°
The same steps an agent gets from the MCP server with explain: true.
Accuracy: Exact geometry; the horizon and refraction use a mean-radius sphere and a single refraction coefficient, and ignore terrain.
When to use this: Use this to point something: the azimuth, elevation and range from an observer to a target, with the horizon depression beside them so you can tell at a glance whether the target is above it. An antenna, a camera, a tracking mount, a line-of-sight check.
Limitations: The horizon here is the geometric one for a smooth sphere, and the ground is not smooth: a hill, a building or a tree between you and the target hides it whatever the numbers say. Refraction is reported only if you ask for a factor, since assuming one would be inventing an atmosphere; the standard 4/3 effective radius is a fair-weather average and a temperature inversion can carry a signal far past it. And this is a straight line through the air, not a radio path budget.
Worked example: A 3,000 m aircraft 150 km east of a 10 m mast. Source: Local east-north-up from GeographicLib LocalCartesian conventions. It is golden test vector v001, and every build checks the tool still gives its answer within its tolerance.
You enter
- Observer height
- 10 m
- Observer latitude
- 40 deg
- Observer longitude
- -105 deg
- Target height
- 3000 m
- Target latitude
- 40 deg
- Target longitude
- -103.24 deg
You get
- Azimuth
- 89.43°
- Elevation
- 0.4653°
- Straight-line range
- 150,352.422 m
- Horizon elevation
- -0.1015°
Review: Not yet independently reviewed by a geodesist.
Last verified: 2026-09-18, when a maintainer last confirmed this tool's sources at the issuer. See the sources ledger.
Status: version 1.0.0, core 0.1.0. See this tool in the verification report.
Checked against: 21 golden test vectors (download the test vectors, each with its source and tolerance). See how results are checked and every source.
Sources
- GeographicLib Geocentric and LocalCartesian classes, Karney, C. F. F., GeographicLib, GeographicLib 2.x. Geocentric.cpp: geodetic to ECEF; LocalCartesian.cpp: the east-north-up rotation. Read free.