Radar Text Descriptions for the Left Hand Text Field (Or on separate monitor) The following four radar descriptions shall be applied to the left hand text description field: 1. Chain Home radar The UK developed the chain home radar in the 1940's. This was one of the earliest radar, developed in response to threats of air attacks from the Germans. The scope is similar to that of an oscilloscope. One the horizontal axis of the scope is the range. The vertical axis is the amplitude of the returned echo from aircraft. The bearing of the incoming echo signal is determined by feeding the signals from two identical dipole antennas, mounted at right angles to each other into a radiogoniometer. The operator manually turns a search coil until the signal strength on the oscilloscope reaches a null point (minimum signal). The direction (bearing) is read from a calibrated dial. In our exhibit, the chain home radar is located in Ventnor, on Isle of Wight. 2. Marine a-scope The UK, after developing microwave radar, which with it's shorter wavelengths, became able to pick up echos from small targets such as the periscope and the conning tower from enemy submarines. The system consists of a steerable microwave dish connected to an oscilloscope display. The horizontal axis is the range; the vertical axis is the strength of the return; and the bearing (direction) is determined by manually rotating the microwave antenna using a servo control at the console that drives the servo motor attached to the microwave dish antenna. These radars were used on the British Corvettes that were used in anti submarine warfare. In our exhibit, this radar is on a boat moored at the dock of the Community Boating Center in Bellingham Bay. 3. Marine Traffic Control Radar The marine traffic control radar is a plan position indicator (PPI) type radar, where the display consists of a circular sweep beam. The range is determined by how far the blip is from the center of the scope. The bearing is determined by the direction of the beam in its rotation. The beam rotates clockwise starting from north. The strength of the echo is determined by the brightness of the blip on the scope. All modern radars use this type of display. In our exhibit, this radar is located in the center of Bellingham Bay. 4. Police Boat Radar The police boat radar is a plan position indicator (PPI) type radar, where the display consists of a circular sweep beam. The range is determined by how far the blip is from the center of the scope. The bearing is determined by the direction of the beam in its rotation. The beam rotates clockwise starting from the heading of the boat. A small line indicated which direction is north. the strength of the echo is determined by the brightness of the blip on the scope. In our exhibit, the police boat on which this radar is mounted will be tied up to the floating pier located at the end of the boardwalk foot and bicycle trail that is part of Boulevard Park. It is also at the foot of Taylor Street. We call this the Taylor Dock. The Police boat will cruise around Bellingham Bay, showing a radar on a moving boat. 5. The intro scene (introduction) This shall appear when the application is started. It introductes the exhibit and instructs the user to use the 1 and 2 keyboard keys to select the radar. The 1 key steps forward in a circle and the 2 key steps backward and the enter key makes the selection =============================================================================== CURRENT IMPLEMENTATION STATUS This spec covers two related but distinct pieces of the 02_text_description component: A. Text renderer engine Files: include/02_text_description.h, src/02_text_description.cpp Status: COMPLETE Implements the TextRenderer class using FreeType. Loads printable ASCII glyphs (codes 32-126) from a TTF font into individual GL_RED textures and renders them as textured quads into whichever viewport is currently active. Public methods: initialize_shaders() — compiles/links shaders/02_text_description_{vert,frag}.glsl initialize_font(path, size) — loads a TTF font at a given pixel height render_text() — renders a string at a viewport-local pixel coordinate render_text_wrapped() — renders with automatic word-wrapping at a max pixel width get_text_width() — returns the pixel width of a string at a given scale set_projection(w, h) — sets the orthographic projection for a viewport cleanup() — releases all GL resources and glyph textures Two global instances are defined in src/02_text_description.cpp and declared extern in the header: g_text_renderer — loaded at FONT_SIZE_NORMAL (body text, controls, status bar) g_text_renderer_large — loaded at FONT_SIZE_TITLE (panel titles, scope headings) Font path and sizes are defined in include/settings.h: FONT_PATH "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf" FONT_SIZE_NORMAL 18 px FONT_SIZE_TITLE 26 px B. Left-panel text content for each radar File: src/01_classes.cpp (render_left_panel() methods in each radar subclass) Status: STUB — text content implemented; actual scope rendering is not yet done. Each radar subclass in 01_classes renders: - Radar title (large renderer, white) - Location sub-header (small scale, white) - 3-4 lines of description text (white) - "--- CONTROLS ---" header (red) followed by per-control entries (label in red, keystroke(s) in pink, on the same line) - "1 - Return to Radar Selection" (yellow) The intro scene (item 5 above) is rendered by render_intro_left_panel() in src/main.cpp, which shows a welcome paragraph on the left panel and the radar selection list centred in the scope viewport. Status bar content for each radar is rendered by render_status_bar() in src/01_classes.cpp, displaying current uniform values (intensity, sensitivity, STC sensitivity/range, and radar-specific values such as max range, cursor positions, radiogoniometer, or antenna bearing) in yellow.