This project demonstrates how the World War II-era GEE hyperbolic navigation system works, using two Python scripts:
animation.py– animated signal propagation and triangulationstatic.py– static visualization showing GEE range circles
GEE was a hyperbolic radio navigation system used by the Royal Air Force during World War II. It allowed aircraft to determine their location by comparing the time delays between pulses received from synchronized ground-based radio transmitters.
Unlike systems requiring precise clocks on the aircraft, GEE relied on differential time measurements from pulse pairs. It allowed for reasonably accurate positioning even under wartime conditions with limited instrumentation.
- A Master Station emits a radio pulse at a fixed interval.
- Slave Stations wait to receive the master’s pulse and then transmit their own pulse after a small delay (e.g., 0.1 ms).
- An aircraft receives the master pulse and the delayed slave pulses.
- By measuring the difference in arrival times, the aircraft determines:
- The distance to each station.
- The difference in distance between stations, which defines a hyperbola of possible positions.
- With two slave stations, the aircraft determines two hyperbolas.
- The intersection of those hyperbolas gives the aircraft's position.
git clone https://github.com/yourusername/gee-nav-visualized.git
cd gee-nav-visualizedpython -m venv .venv-
Windows (PowerShell):
.venv\Scripts\Activate.ps1
If you get a security error, run:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
-
macOS/Linux:
source .venv/bin/activate
pip install matplotlib numpypython animation.py-
Randomly places 3 stations and an aircraft.
-
Simulates real-time pulse emission, propagation, and reception.
-
Shows:
- Expanding master/slave signals
- Aircraft-calculated distance circles
- Triangulation rings from each station
- Time difference labels
python static.py- Displays a frozen version of the above simulation.
- Ideal for printed teaching materials or step-by-step analysis.
If you want to simulate GEE calculations by hand using this visual output:
-
Measure the time difference between pulses (from oscilloscope or simulated data).
-
Convert time difference to distance:
Distance = Time × Speed of Radio Waves = Time (ms) × 300 km/ms -
For each station:
-
Draw a circle with radius = distance from station to aircraft.
-
If comparing master to slave stations:
- The difference in distances gives a hyperbolic line of position.
-
-
The intersection of two hyperbolas = aircraft location.
Example:
- Master pulse received at 0.70 ms → 0.70 × 300 = 210 km
- Slave A pulse received at 1.23 ms (sent at 0.85 ms) → 0.38 ms delay → 114 km distance
- Aircraft is 210 km from Master, 114 km from Slave A → lies at the intersection of those two ranges
| File | Purpose |
|---|---|
animation.py |
Animated simulation of GEE in real-time |
static.py |
Static visual snapshot of GEE triangulation |
README.md |
You're reading it! |
MIT License. Free for educational and research use.
