126 lines
6.2 KiB
Markdown
126 lines
6.2 KiB
Markdown
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.
|