================================================================== ADDITION: BOAT RADAR — BELLINGHAM POLICE PATROL BOAT ================================================================== I want to add a radar scope showing the view from a marine radar mounted on a Bellingham Police Department patrol boat. The boat is on a continuous back-and-forth patrol of the working waterfront. PATROL ROUTE: Police boats do patrol inside Squalicum Marina (theft, vandalism, welfare checks) and inside Whatcom Waterway (commercial port security). They do not rely on seeing over the breakwater -- the concrete breakwater shadows the inner basin. Speed varies by zone: Open waterfront: 10 knots Whatcom Waterway: 3-5 knots (narrow, industrial) Inside marina: 3-4 knots (displacement speed, no wake) Proposed full route (continuous, reversing at each end): Whatcom Waterway entrance -> slow to 4 knots, transit Whatcom Waterway -> exit to bay, accelerate to 10 knots -> Squalicum Marina outer breakwater entrance -> slow to 3-4 knots, tour inner marina basin -> exit marina, accelerate to 10 knots -> west along waterfront -> Boulevard Park -> Taylor Dock -> Community Boating Center -> reverse and repeat INSIDE MARINA -- RADAR CLUTTER NOTE: At 2-3 m antenna height inside a marina full of sailboat masts, the radar picture will be heavily cluttered with mast returns, appearing as a dense ring around the boat. This is realistic and is a good exhibit teaching moment -- visitors can use the sea/wave clutter filter (already designed) to try to suppress it. The boat radar's wide beamwidth (4-6 deg) makes the clutter worse than the big coastal radar would show. PATROL SPEED: Approximately 10 knots. 10 knots is reasonable -- typical working-waterfront patrol speed is 8-12 knots, fast enough to respond quickly but slow enough to observe traffic and avoid wake damage near the docks. WHAT THIS MEANS FOR THE DISPLAY: Unlike all the other radars in this exhibit, the radar origin is not fixed. It moves with the boat along the patrol route. The radar antenna is on the boat, so the PPI scope center tracks the boat's position. The boat also changes heading as it follows the shoreline, which means the bearing offset (already implemented as the k/j keys on the marine PPI) will be continuously updated by the simulator as the boat turns -- the operator does not manually drive the boat. The boat's heading at any point along the route determines the antenna offset so that True North stays at the top of the scope. SIMULATOR ARCHITECTURE: The patrol boat position is the radar PLATFORM, not a target. It should be managed by the existing Simulator (Thread 4) as a special PatrolPlatform object alongside the target list -- NOT a separate simulator thread, and NOT built into the scope/rendering code (Thread 1). The TrafficCop (Thread 2) already polls the Simulator each sweep. It will also retrieve the current platform lat/lon and heading at the same poll and write them to SharedRenderState under Mutex A. Thread 1 reads platform position and heading to set the PPI scope center point and bearing offset before rendering each frame. The patrol route is a sequence of lat/lon waypoints with speed per segment. The Simulator interpolates position between waypoints using elapsed time and the segment speed. DECISIONS: 1. SCOPE CLASS: New BoatPPIScope, a subclass of PPIScope directly (not a subclass of MarinePPIScope). Same controls as MarinePPIScope. Moving origin is specific to this class. 2. WAYPOINTS: JSON data file, e.g. data/patrol_route.json. Loaded at startup by the Simulator. Each entry has lat/lon and speed for that segment. settings.h stays as tunable constants only. 3. LEFT PANEL: Both -- a plain text zone description (e.g. "Currently: Open waterfront, heading west") AND a numeric lat/lon readout below it. Visitor-friendly text plus precise data. 4. SIMULATED SMALL TARGETS: Both scripted and random. - Scripted: a paddleboarder drifts slowly across the ferry lane on a fixed loop (dramatic, repeatable, good for exhibit) - Random: additional kayakers/small boats wander within a defined zone near the ferry terminal and harbor mouth - These small targets also appear on the fixed MARINE PPI scope (same Bellingham Bay coverage area, same target pipeline) 5. SCOPE ORDER: Boat PPI goes immediately after Marine PPI. New sequence: Intro -> Marine A -> Chain Home A -> Marine PPI -> Boat PPI -> ATC PPI -> PAR -> (back to Intro) 6. MARINA AND WHATCOM WATERWAY: Deferred. The patrol route for v1 stays in open water only. The boat does NOT enter Squalicum Marina or Whatcom Waterway in the first implementation. Those can be added in a later version once the shoreline geometry problem is solved (see LIDAR/CHART NOTE below). LIDAR AND SHORELINE GEOMETRY NOTE: The marina, breakwater, Whatcom Waterway, and Georgia Pacific site all require accurate geometry to simulate correctly -- both as radar return sources and as shadow-casters. TWO DATA SOURCES: 1. NOAA Electronic Navigational Chart 18424 (Bellingham Bay) Free vector download from charts.noaa.gov (ENC format). Already clean vector polygons: breakwater, piers, channel edges, ferry terminal, dock outlines. Best starting point -- no point cloud processing required. 2. Washington State LIDAR Portal (lidarportal.dnr.wa.gov) Free LIDAR point cloud downloads for Whatcom County. 0.5-1 meter horizontal resolution. Captures individual pilings, building edges, breakwater detail, Georgia Pacific site remnants. Use this when finer detail is needed (inside marina, Whatcom Waterway structures). Requires offline processing to extract obstruction polygons before use in the simulation. GEORGIA PACIFIC SITE: Most of the old GP pulp mill has been demolished. The area is now the Bellingham Waterfront District (partially built). LIDAR or ENC data will show whatever was on-site at survey time. For the exhibit this is acceptable -- it is a patrol scenario, not a live chart. HOW GEOMETRY FEEDS INTO THE SIMULATION: Shoreline and obstruction data is processed ONCE offline into a set of vector polygons representing hard radar-reflective features. These are loaded at Thread 1 startup as a static VBO. Read-only after load -- no mutex required (already noted in the design). The radar sweep computes returns from these polygons the same way it handles vessel targets. RADAR SHADOW ZONES: The breakwater does not just produce a return -- it shadows everything behind it. To simulate this correctly, the sweep must raycast from the current radar position, find the first intersection with each obstruction polygon, and mark everything beyond that intersection as shadowed (no return). This is a per-sweep raycast operation, implementable CPU-side each sweep or in a compute shader. Shadow simulation is required even for the v1 open-water-only route, because the breakwater shadow is clearly visible from outside. V1 GEOMETRY SCOPE (open water only -- marina deferred): Only these features are needed for the first version: - Outer shoreline of Bellingham Bay (simple polygon) - Squalicum Harbor breakwater (solid obstruction, shadow-caster) - Ferry terminal structure - Taylor Dock pier outline (weak return -- wood, but pilings show) - Boulevard Park shoreline NOAA ENC 18424 provides all of these in vector form. Internal marina dock fingers and Whatcom Waterway structures are deferred until the boat patrol route enters those areas. 4. The radar hardware spec for the boat radar is DIFFERENT from the fixed coastal marine radar. Typical police/patrol boat radar: Frequency: 9.3 - 9.5 GHz (X-band, same band, slightly different frequency -- treat as same for exhibit) Peak power: 2 kW to 4 kW (NOT the 30 kW of the fixed coastal radar -- this is a small-vessel unit) Antenna type: Radome (enclosed dome, ~60 cm diameter) -- more rugged and lower wind resistance than an open array, typical for patrol boats Horizontal beamwidth: 4 to 6 degrees (vs 0.5 deg for the big coastal radar -- targets will appear as noticeably fatter blips; good exhibit contrast) Antenna height: 2 to 3 meters above waterline (radar arch or short mast on a 25-35 foot patrol vessel) RADAR HORIZON at 2.5 m antenna height: horizon = 2.23 x sqrt(2.5) = approx 3.5 nautical miles (~4 statute miles) to a sea-level target. Compare: fixed coastal radar at 15 m sees ~8.6 nautical miles. MAX RANGE DECISION: 2 miles maximum. The patrol boat's job is close-in situational awareness, not long-range surveillance (the fixed coastal radar handles that). 2 miles puts the entire inner harbor on screen at once. RANGE STEPS: 0.5 / 1 / 2 miles. Tighter steps than the fixed marine scopes (2/4/6) because the officer needs a close-in zoom for marina and waterway work: 0.5 mi -- tight quarters, marina basin, Whatcom Waterway 1.0 mi -- inner harbor, near-shore patrol 2.0 mi -- full harbor picture, ferry lane monitoring SMALL TARGET DETECTION NOTE (important for exhibit realism): A paddleboard or kayak is a marginal radar target at any range. Very small RCS, almost no freeboard. At 2-4 kW with 4-6 degree beamwidth, a paddleboarder may show as a faint intermittent blip or may wash into the noise floor entirely -- especially in chop. A kayak carrying a small aluminum radar reflector shows much better. This is realistic and worth simulating: the exhibit shows visitors that radar does not see everything, and that small non-metallic targets are genuinely hard to detect. FERRY LANE SCENARIO: The Bellingham terminal serves the Alaska Marine Highway System (state ferries up to 400 feet). A paddleboarder or kayaker drifting into the departure lane is a real hazard the patrol officer watches for. Simulated small targets (paddleboards, kayaks) near the ferry lane would make a compelling exhibit moment -- visitor tries to spot them on the radar before the ferry moves. 5. Should the left panel description explain that this is a moving platform, and show the current boat position (lat/lon or a simple text description of where on the route the boat is)? 6. I do not care about the size or material of the police boat itself since it is the platform the radar is mounted on, not a target.