# Demo — Geolocation Explorer

One bearing is a line; cross two and you have a fix. But the *quality* of that fix is set almost entirely by geometry — the angle at which the bearings cross — not by how good the receivers are. This demo lets you drag the receivers and the emitter and watch the error ellipse breathe.

## The idea

Each receiver gives a line of position with an angular uncertainty band. The fix lives where the bands overlap, and the shape of that overlap is governed by the **cut angle**: near $90^\circ$ gives a tight, near-circular error; a shallow cut smears it along range.

## Interactive demo

<a class="demo-fullscreen" href="../_static/demos/GeolocationExplorer.html" target="_blank" rel="noopener">Open in full screen</a>

<div class="demo-wrap">
<iframe src="../_static/demos/GeolocationExplorer.html"
        title="Interactive cross-bearing geolocation explorer"
        width="100%"
        loading="lazy">
</iframe>
</div>

## Walkthrough

1. **Start with a good cut.** With the emitter abeam the receiver pair, the two bearings cross near $90^\circ$ and the error ellipse is small and round. Note the CEP readout.
2. **Push the emitter downrange.** As it moves far from the baseline, the cut angle shrinks, the ellipse stretches along the line of sight, and CEP grows — the *same* receivers now do far worse.
3. **Drag onto the seam.** Move the emitter onto the receivers' baseline. The cut collapses, range becomes unobservable, and the fix runs away — the geometry has failed, not the hardware.
4. **Widen the baseline.** Drag one receiver out perpendicular to the line of sight to reopen the cut toward $90^\circ$ and watch the ellipse tighten again.

## Key observations

- **Geometry sets the error, not receiver quality.** This is the whole lesson — the receivers never change in the type-along; only the geometry does.
- **A shallow cut smears error along range.** Cross-range stays decent; downrange blows up.
- **Wide baselines hold a strong cut at long range** — exactly the standoff geometry Project 2 exploits to geolocate from outside the threat rings.

## Source

<a class="matlab-link" href="../_static/downloads/ECE%20495%20EW%20%E2%80%93%20Code.zip#code/L14_TwoReceiverCrossFix.m" download><svg viewBox="0 0 22 22" width="14" height="14" aria-hidden="true" style="vertical-align:-2px;margin-right:6px;"><rect width="22" height="22" rx="3" fill="#e87722"/><text x="11" y="15.5" text-anchor="middle" font-family="'Inter',sans-serif" font-size="9" font-weight="800" fill="#fff" letter-spacing="-0.04em">MAT</text></svg><span class="ml-text">MATLAB · code/L14_TwoReceiverCrossFix.m</span><span class="ml-arrow">↓</span></a>

The in-class script crosses two noisy bearings into a fix, repeats it thousands of times to map the error cloud, then moves the emitter downrange to show the same receivers degrade as the cut angle shrinks.
