diff --git a/CLAUDE.md b/CLAUDE.md index fdf0b18..56a26d3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,5 +1,7 @@ This is a project for a museum to demonstrate a simulation of a 1940's to 1960's -vintage radar, including the Chain Home radar from early World War 2, marine radar, +vintage radar, including the Chain Home radar from early World War 2, marine radar +at a marine traffic control station, +and marine radar on a boat. The project will be implemented on a Geekom A8 Max 32 GB RAM @@ -247,11 +249,11 @@ Individual scope informations Please note that the phosphor (chemical that glows when hit by electrons in the tube) is green, similar to an oscilloscope. The Hex - for green is ##39FF14; there is a short persistance of the phosphor after being - struck by the electron beam. That persistance is about 25 millesconds and its color - is darker green at aboutu Hex #004400 + for green is #39FF14; there is a short persistance of the phosphor after being + struck by the electron beam. That persistance is about 25 milliseconds and its color + is darker green at about Hex #004400 - PLease also note that there are no graticules on either the Chain Home a scope nor + Please also note that there are no graticules on either the Chain Home a scope nor the marine a a scope. The only thing on the external plate is the base line (zero signal which the operator can refer to that is going on (grass, calibration, and signals). It is an important point of reference. That base line is illuminated on the sides with small @@ -343,7 +345,7 @@ Individual scope informations Wavelength 12 Meters Antenna Gain 5 dB Pulse Width 20 microseconds - Beam Width 150 degrees (floodlight + Beam Width 150 degrees (floodlight) PRF 25 HZ Airplane acts as a half wave dipole @@ -448,13 +450,13 @@ Individual scope informations // BeamFactor: 1.0 at center, drops to 0.5 at horizontal_beamwidth/2 // This creates the "fade in / fade out" effect as you turn the knob - float beam_factor = exp(-2.77 * pow(angle_diff / horizontal_beamwidth, 2.0)); + float beam_factor = exp(-2.77 * pow(angle_diff / (horizontal_beamwidth / 2.0), 2.0)); // Final received power Pr float Pr = (peak_power * pow(antenna_gain, 2) * pow(wavelength, 2) * target.rcs * beam_factor) / (pow(4.0 * PI, 3.0) * pow(target.range, 4.0)); -2. PPI Scope +3. PPI Scope PPI stands for Plan Position Indicator @@ -483,34 +485,29 @@ Individual scope informations Mathematical LogicFor an AI to process PPI data, it needs to understand the conversion from Polar to Cartesian coordinates. If a radar detects a target at distance $r$ and angle $\theta$, the position on the 2D screen $(x, y)$ is calculated as:$$x = r \cdot - \sin(\theta)$$$$y = r \cdot \cos(\theta)$$4. + \sin(\theta)$$$$y = r \cdot \cos(\theta)$$. Why it differs from other ScopesTo clarify for the AI, distinguish it from the A-Scope: A simple 1D graph showing "Energy vs. Distance" (looks like an EKG). - PLease note that there are three different colors for the phosphors in vintge PPI - Scope radars. When the phosphor is first struck by the electron beam, the color is blue white; - About hex #A0CFFF. + Please note that the P7 phosphor for vintage PPI radar has several colors; the + following table describes this: - There are three afterglows of the p7 phosphor after it is struck by the electron beam. They are - #E2FF80 - the color just behind the sweep - this lasts about 3 - seconds; #8A9600 - the trail of history of the pulse - this lasts about 10 seconds, - and #050700 - very dark, warm trail - This lasts about 20 seconds. + Suggested Simulation Table for the P7 PPI phosphor - Suggested Simulation Table: - - 1. Excitation 0 (flash) Bright Blue - 2. Immediate blue - 1 ms - 3. Short term Yellow Green - 1 second - 4. Long Term Amber - 10 seconds - 5. Expiration - 12 seconds black + 1. Excitation 0 (flash) Bright Blue hex #A0CFFF - note this is active electron beam + 2. Immediate blue - 1 ms duration after Excitation; Blue hex #1010FF - note that + from here on is afterglow after beam stops + 3. Short term Yellow Green - 1 second duration after Immediate blue; yellow green hex #E2FF80 + 4. Long Term Amber - 10 seconds duration after Short Term; Amber hex #FFA040 + 5. Expiration - 12 seconds duration after Long Term Amber; very dark hex #050700 Graticules - These are plastic overlays over the face of the scope. They are - for the purposes of showing the bearing. Theey are calibrated in degrees; short line (1/8 inch) - each degree; medium line (1/4 inch) for every 5 degres; and a longer line (1/2 inch) for every + for the purposes of showing the bearing. They are calibrated in degrees; short line (1/8 inch) + each degree; medium line (1/4 inch) for every 5 degrees; and a longer line (1/2 inch) for every 10 degrees. Line for true north; 2/3 inch. - Notes that these graticule lines are lie by a #47 incidenscent bulb #FFB347. + Notes that these graticule lines are lit by a #47 incandescent bulb #FFB347. @@ -526,10 +523,17 @@ namespace ChainHome { const float WAVELENGTH = 12.0f; // 12 Meters const float ANTENNA_GAIN = 3.16f; // 5 dB expressed as linear gain const float PULSE_WIDTH = 0.000020f; // 20 microseconds + const float BEAM_WIDTH = 150.0f; // in degrees (large floodlight) + const float PRF = 25.0f; // pulse repetition rate in times per second } namespace MarineAScope { const float PEAK_POWER = 500000.0f; // 500 KW const float WAVELENGTH = 0.10f; // 10 cm const float ANTENNA_GAIN = 1000.0f; // 30 dB expressed as linear gain + const float PRF = 500.0f; // pulse repetition frequency + const float HORIZONTAL_BEAMWIDTH = 2.5f; // horizontal beamwidth + const float SYSTEM_TEMPERATURE = 290.0f; // system temperature + const float NOISE_FIGURE = 20.0f; // for period receivers; this is in Db + const float BOLTZMANN_CONSTANT = 1.38e-23f; }