Calculate an aircraft's current geographical latitude and longitude (sometimes also called a fix) from the known positions of two VOR stations, two NDB stations, or mixed VOR and NDB stations, and either the VOR station's magnetic declination, or for an NDB, the local magnetic declination, preferably at the aircraft's current position, plus either the aircraft's magnetic radial FROM the VOR station, or the relative ADF bearing measured clockwise from the aircraft's nose, and the magnetic heading of the aircraft at the time of that ADF reading.
This program is designed for experimental navigation calculations over distances and at altitudes typical of general aviation (GA). It uses an approximate planar model of the Earth's surface, with corrections for the convergence of meridians towards the poles, rather than full spherical or ellipsoidal geometry.
This approximation introduces systematic position errors that can become substantial over long distances. The magnitude of these errors depends on the geographical configuration and generally increases with distance. Consequently, the program is not suitable for the extended navigation distances typical of high-altitude airline operations.
|
⚠️ For educational and flight-simulation use only. Not suitable as a primary or safety-critical navigation aid in real aircraft. ⚠️ |
To initialize for a new pair of navigation stations, press E'. Enter the geographical coordinates and magnetic declination of both navigation stations, followed by the appropriate VOR radial or ADF relative bearing for each station. Either station may be a VOR or an NDB:
| Key | Input / Output | Format / Unit |
|---|---|---|
| VOR/NDB 1 latitude | DDDMM.mmmmm | |
| VOR/NDB 1 longitude | DDDMM.mmmmm | |
| VOR 1 station declination / NDB 1 local declination | DDD.ddddddd | |
| VOR 1 magnetic radial FROM station / NDB 1 relative ADF bearing | DDD.ddddddd | |
| A' | VOR/NDB 2 latitude | DDDMM.mmmmm |
| B' | VOR/NDB 2 longitude | DDDMM.mmmmm |
| C' | VOR 2 station declination / NDB 2 local declination | DDD.ddddddd |
| D' | VOR 2 magnetic radial FROM station / NDB 2 relative ADF bearing | DDD.ddddddd |
VOR observations: No aircraft heading is needed. After initialization, the heading registers are zero; leave them at zero for any station that is a VOR. The program adds that VOR's station declination to the magnetic radial to obtain its true radial.
NDB/ADF observations: The ADF gives a bearing relative to the aircraft's nose, not a geographical bearing. The program converts the relative bearing to an absolute true bearing by adding the aircraft's magnetic heading at the moment of the ADF reading and then the local magnetic declination. Enter the magnetic heading and invoke the appropriate heading-storage subroutine:
| Subroutine | Explanation | When to use | Format / Unit |
|---|---|---|---|
| Store aircraft's magnetic heading for ADF 1 readout (NDB 1) in Register 13 (mnemonic: '(' comes first) | Do NOT use for VOR | DDD.ddddddd | |
| Store aircraft's magnetic heading for ADF 2 readout (NDB 2) in Register 14 (mnemonic: ')' comes second) | Do NOT use for VOR | DDD.ddddddd | |
| Store aircraft's magnetic heading for both ADF readouts in Registers 13 and 14 (mnemonic: 'EE' is "double") | Do NOT use for VOR | DDD.ddddddd |
Thus, in a VOR/NDB combination, store the magnetic heading only for the NDB; leave the VOR's heading register at zero. For two NDBs, use and separately if the aircraft's heading changed between ADF readings, or if the same heading applies to both.
or D' do not store the aircraft's heading automatically. and D' versus , and are mutually independent.
Do not enter an already converted absolute magnetic bearing as though it were a relative ADF bearing while a nonzero heading is stored.
Press to calculate the aircraft's position. If the geometry is acceptable, the aircraft's latitude appears on the display (x), and its longitude is placed in the test register t, both in DDDMM.mmmmm format. After calculation, , , , A', B' and C' retrieve their stored values instead of accepting new ones; and D' always accept new readings (in order to allow for quick successive fixes).
For another fix using the same pair of stations, enter new radials or ADF readings with and D', update the magnetic heading for each NDB as necessary, and press again. To change station coordinates or declinations, press E' and re-enter all data; initialization clears registers 01–29, including the stored headings.
Intersection quality: After pressing , use to display the acute intersection angle (0–90°) in x and the error margin amplification factor in t. The error margin amplification factor indicates how the geometry magnifies bearing errors; it is not an absolute position-error estimate. This subroutine also works after a rejected calculation.
| Intersection angle | Error margin amplification factor | Assessment |
|---|---|---|
| 0° to <5° | ≥11.47× (undefined at 0°) | REJECT |
| 5° to <15° | 3.86–11.47× | Poor |
| 15° to <30° | 2.00–3.86× | Marginal |
| 30° to <60° | 1.15–2.00× | Good |
| 60° to 90° | 1.00–1.15× | Excellent |
If the (folded) acute intersection angle is less than 5°, the program rejects the fix and stops with a blinking "9.9999999 99" in the display (x), instead of producing position coordinates (and register t is set to zero). can still be used after that to examine the intersection geometry.
| Key | Input / Output | Format / Unit |
|---|---|---|
| Enter or retrieve VOR/NDB 1 latitude | DDDMM.mmmmm | |
| Enter or retrieve VOR/NDB 1 longitude | DDDMM.mmmmm | |
| Enter or retrieve VOR 1 station / NDB 1 local magnetic declination | DDD.ddddddd | |
| Enter VOR 1 magnetic radial or NDB 1 relative ADF bearing (always input) | DDD.ddddddd | |
| Calculate aircraft position; switch station data keys to output mode | DDDMM.mmmmm | |
| A' | Enter or retrieve VOR/NDB 2 latitude | DDDMM.mmmmm |
| B' | Enter or retrieve VOR/NDB 2 longitude | DDDMM.mmmmm |
| C' | Enter or retrieve VOR 2 station / NDB 2 local magnetic declination | DDD.ddddddd |
| D' | Enter VOR 2 magnetic radial or NDB 2 relative ADF bearing (always input) | DDD.ddddddd |
| E' | Clear registers 01–29; switch all station data keys to input mode; enforce Deg mode | n/a |
| Keys | Explanation | Location | Format / Unit |
|---|---|---|---|
| Store aircraft's magnetic heading for ADF 1 bearing | Register 13 | DDD.ddddddd | |
| Store aircraft's magnetic heading for ADF 2 bearing | Register 14 | DDD.ddddddd | |
| Store aircraft's magnetic heading for both ADF bearings | Registers 13 and 14 | DDD.ddddddd | |
| Display intersection geometry (only after calculation with ) | Display (x): angle in degrees (0-90); Register t: error margin amplification factor | DDD.ddddddd; n/a | |
| Converts cockpit format DDDMM.mmmmm to decimal degrees DDD.ddddddd | Display (x) and Register 00 | DDD.ddddddd | |
| Converts decimal degrees DDD.ddddddd to cockpit format DDDMM.mmmmm | Display (x) and Register 00 | DDDMM.mmmmm |
| Location | Value | Format / Unit |
|---|---|---|
| Display (x): | Result aircraft's latitude based on VOR/NDB 1 | DDDMM.mmmmm |
| Register t: | Result aircraft's longitude based on VOR/NDB 1 | DDDMM.mmmmm |
| Register 07: | Result aircraft's latitude based on VOR/NDB 1 | DDD.ddddddd |
| Register 08: | Result aircraft's longitude based on VOR/NDB 1 | DDD.ddddddd |
| Register 11: | VOR 1 true radial/NDB 1 true absolute ADF bearing | DDD.ddddddd |
| Register 12: | VOR 2 true radial/NDB 2 true absolute ADF bearing | DDD.ddddddd |
| Register 16: | Rejection factor = abs(sin(RCL11-RCL12)), reject if < sin(5) | n/a |
| Register 17: | Intersection angle (0-90) | DDD.ddddddd |
| Register 18: | Error margin amplification factor = (1 / rejection factor) | n/a |
| Register 21: | Signed distance d1 from VOR/NDB 1 | nautical miles |
| Register 22: | Signed distance d2 from VOR/NDB 2 | nautical miles |
| Register 23: | Result aircraft's latitude based on VOR/NDB 2 (for cross-checking) | DDD.ddddddd |
| Register 24: | Result aircraft's longitude based on VOR/NDB 2 (for cross-checking) | DDD.ddddddd |
Distances in registers 21 and 22 are signed because the program intersects complete lines rather than directional rays. A negative value places the aircraft on the opposite side of the station from the direction used in the calculation. In particular, negative distances are normal for NDB bearings, which point TO the beacon.
Registers 23 and 24 provide a second calculation of the intersection coordinates, starting from station 2; they are available for cross-checking only. The normal displayed fix uses registers 07 and 08. The true directions in registers 11 and 12 are used directly in trigonometric calculations and are not normalized to 0–360°.
After , x and t show the intersection angle and error margin amplification factor instead of latitude and longitude; the stored coordinates in registers 07 and 08 remain available. Or simply press again.
The program does not interrupt ongoing calculations. Its functions and subroutines do not use or internally, so ongoing arithmetic operations are not prematurely cleared or evaluated.
| Register | Purpose | Format / Unit |
|---|---|---|
| 00 | Coordinate conversion result | DDDMM.mmmmm, DDD.ddddddd |
| 01 | VOR/NDB 1 latitude | DDDMM.mmmmm |
| 02 | VOR/NDB 1 longitude | DDDMM.mmmmm |
| 03 | VOR 1/local declination | DDD.ddddddd |
| 04 | VOR/NDB 2 latitude | DDDMM.mmmmm |
| 05 | VOR/NDB 2 longitude | DDDMM.mmmmm |
| 06 | VOR 2/local declination | DDD.ddddddd |
| 07 | Result aircraft's latitude based on VOR/NDB 1 | DDD.ddddddd |
| 08 | Result aircraft's longitude based on VOR/NDB 1 | DDD.ddddddd |
| 09 | VOR/NDB 1 magnetic radial/relative magnetic ADF | DDD.ddddddd |
| 10 | VOR/NDB 2 magnetic radial/relative magnetic ADF | DDD.ddddddd |
| 11 | VOR 1 true radial/NDB 1 true absolute ADF bearing (mnemonic: 11 = 1) | DDD.ddddddd |
| 12 | VOR 2 true radial/NDB 2 true absolute ADF bearing (mnemonic: 12 = 2) | DDD.ddddddd |
| 13 | NDB 1 magnetic aircraft heading at readout ADF | DDD.ddddddd |
| 14 | NDB 2 magnetic aircraft heading at readout ADF | DDD.ddddddd |
| 15 | Signed denominator = sin(RCL11-RCL12) | n/a |
| 16 | Rejection factor = abs(sin(RCL11-RCL12)), reject if < sin(5) | n/a |
| 17 | Intersection angle (0-90) | DDD.ddddddd |
| 18 | Error margin amplification factor = (1 / rejection factor) | n/a |
| 19 | VOR 2 lat. - VOR 1 lat. (Y2 - Y1) | DDD.ddddddd |
| 20 | VOR 2 long. - VOR 1 long. (X2 - X1) * COS( mean latitude ) | DDD.ddddddd |
| 21 | Signed distance d1 from VOR/NDB 1 (first in degrees, eventually in nm) | DDD.ddddddd, nm |
| 22 | Signed distance d2 from VOR/NDB 2 (first in degrees, eventually in nm) | DDD.ddddddd, nm |
| 23 | Result aircraft's latitude based on VOR/NDB 2 (for cross-checking with RCL 07) | DDD.ddddddd |
| 24 | Result aircraft's longitude based on VOR/NDB 2 (for cross-checking with RCL 08) | DDD.ddddddd |
| 25 | VOR/NDB 1 latitude (converted from DDDMM.mmmmm) | DDD.ddddddd |
| 26 | VOR/NDB 1 longitude (converted from DDDMM.mmmmm) | DDD.ddddddd |
| 27 | VOR/NDB 2 latitude (converted from DDDMM.mmmmm) | DDD.ddddddd |
| 28 | VOR/NDB 2 longitude (converted from DDDMM.mmmmm) | DDD.ddddddd |
| 29 | COS( mean latitude of VOR/NDB 1 and VOR/NDB 2 ) | n/a |
| 30 | Scratchpad for coordinate conversions | n/a |
| t | Aircraft longitude in cockpit format; error margin amplification factor, internal use | DDDMM.mmmmm, n/a |
| Flag 0 | Controls input/output mode for VOR/NDB 1 and VOR/NDB 2 station data (latitude, longitude, declination) | 0 = input, 1 = output |
| Abbreviation | Meaning | Explanation |
|---|---|---|
| ADF | Automatic Direction Finder | A marine and aircraft radio-navigation instrument that automatically and continuously displays the relative bearing of the aircraft to a ground-based radio transmitter (such as a Non-Directional Beacon or NDB) |
| AGL, height | Above Ground Level | The vertical distance of an aircraft measured directly above a specific ground surface, airfield or VOR/DME station |
| AM | Amplitude Modulation | A method of broadcasting radio signals where the amplitude (strength) of the carrier wave is varied to embed audio information |
| AMSL | Above Mean Sea Level | Refers to the altitude of an aircraft or geographic feature measured relative to the average level of the ocean's surface |
| ATC | Air Traffic Control | A ground-based service that manages aircraft on the ground and in the air to prevent collisions and keep traffic moving safely |
| BRG | Bearing | Direction from one geographical point to another on a compass rose |
| CDI | Course Deviation Indicator | A needle inside an OBI that shows a pilot whether an aircraft is to the left, right, or directly on the center of an intended magnetic course to or from a VOR station, selected with the OBS knob |
| DECL | Magnetic Declination | Difference between magnetic and true (geographic) north, same as magnetic variation |
| DME | Distance Measuring Equipment | A radio navigation system that measures the direct slant-range distance between an aircraft and a ground-based transponder station |
| DVOR | Doppler VHF Omnidirectional Range | A ground-based radio navigation system that uses the Doppler effect to give pilots accurate bearing and direction information to or from the DVOR station |
| EHF | Extremely High Frequency (30 - 300 GHz) | Used in cutting-edge, high-resolution airport surface movement radars and advanced military satellite nets |
| FL | Flight Level | Refers to an aircraft's altitude expressed in hundreds of feet above a standard atmospheric pressure setting of 1013.25 hPa (or 29.92 inHg) |
| FM | Frequency Modulation | A method where the frequency of the radio carrier wave is varied instead of its amplitude, offering clearer audio and greater resistance to static or electrical interference |
| GA | General Aviation | Refers to all civilian aircraft operations such as private flying, flight training, business jets, and aerial work, other than scheduled commercial airline or military flights |
| HF | High Frequency (3 - 30 MHz) | HF radio waves reflect off the Earth's ionosphere to provide ultra-long-range communication, making them essential for transoceanic and remote arctic flights |
| LF | Low Frequency (30 - 300 kHz) | Drives Non-Directional Beacons (NDBs) utilized for legacy automatic direction finding (ADF) navigation |
| MB | Magnetic Bearing | Bearing referenced to magnetic north |
| MF | Medium Frequency (300 kHz - 3 MHz) | Houses commercial AM broadcasting (which pilots can use for crude navigation) and some legacy maritime/aviation distress frequencies |
| MH | Magnetic Heading | Aircraft heading relative to magnetic north |
| MSL | Mean Sea Level | Measures an aircraft's altitude above the average level of the ocean, providing a fixed and consistent reference point for navigation and air traffic control regardless of the terrain below |
| NDB | Non-Directional Beacon | A ground-based radio transmitter that broadcasts signals in all directions, allowing an aircraft's Automatic Direction Finder (ADF) to determine the bearing to the station for navigation |
| OBI | Omni Bearing Indicator | A cockpit instrument that displays a pilot's aircraft position relative to a VOR (VHF Omnidirectional Range) navigation beacon |
| OBS | Omni-Bearing Selector | A rotatable cockpit control knob on an OBI that pilots use to select a specific magnetic course to or from a VOR station |
| RAD | Radial | The magnetic bearing FROM a VOR station |
| RB | Relative Bearing | The angle indicated by an ADF relative to the aircraft's nose |
| SHF | Super High Frequency (3 - 30 GHz) | Crucial for modern weather radar, precision Microwave Landing Systems (MLS), and satellite data communications (SATCOM) |
| SR | Slant Range | Slant range is the direct, diagonal line-of-sight distance between an aircraft and a ground station or radar, forming the hypotenuse of a right triangle created by the aircraft's altitude and its horizontal ground distance |
| TACAN | Tactical Air Navigation | A military radio navigation system that provides a pilot with both the direction (bearing) and distance (slant range) to a ground- or ship-based station |
| TB | True Bearing | Bearing referenced to true (geographic) north |
| TH | True Heading | Aircraft heading relative to true (geographic) north |
| UHF | Ultra High Frequency (300 MHz - 3 GHz) | UHF frequencies are primarily reserved for military aviation communications and advanced tactical systems due to their high data-carrying capacity and smaller antenna requirements |
| VAR | Magnetic Variation | Difference between magnetic and true (geographic) north, same as magnetic declination |
| VHF | Very High Frequency (30 - 300 MHz) | VHF is the primary frequency band for civil aviation, utilizing line-of-sight propagation for crystal-clear short-to-medium-range voice communication with Air Traffic Control (ATC) |
| VLF | Very Low Frequency (3 - 30 kHz) | Historically used for backup global navigation (Omega system) and subterranean tracking |
| VOR | VHF Omnidirectional Range | A ground-based radio navigation system that sends out signals in all directions so pilots can find their exact magnetic bearing to or from a station |
| VOR/DME | VOR with DME | Combined bearing and distance navigation facility |
| VORTAC | VOR+TACAN | Physically combines a civilian VOR and a military TACAN transmitter into a single ground station that serves both civilian and military aircraft simultaneously |
|