geoprimsField-grade geospatial math

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

89.43°

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?

Your values

Showing an example. Change anything.
More options 1
Run many at once from a CSV

Loading…

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

  1. East, north, up at the observer

    rotate the Earth-centered offset into the local frame

    150,352.422 m apart = E 150,340.136 m, N 1,484.351 m, U 1,221.019 m

  2. Azimuth

    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