From 204cbc332b8a0d064dfadc6e14e0d80f9c3a4dea Mon Sep 17 00:00:00 2001 From: Mark Allyn Date: Fri, 15 May 2026 09:03:13 -0700 Subject: [PATCH] Add detail of radar equation for marine a scope --- CLAUDE.md | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index de4dee5..d1097b4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -65,6 +65,8 @@ is compiled, which in this case would be the build subdirectory of the project directory, you would type ./radar_simulator, or use a full path name of {PROJECT_DIR}/build/radar_simulator. +In the CMakeLists.txt, plese use the name radar_simulator for the add_executable call. + There will be three main areas of the screen. On the right hand side will be the radar scope. @@ -259,6 +261,7 @@ Individual scope informations 2-1 Chain Home A Scope ========================================================== + Downward PIP and mixing calibration pips with target pips and noise grass Very important. The Chain Home A Scope is upside down. That is, the baseline @@ -390,7 +393,8 @@ Individual scope informations creates a curved waveform; not just a line. A photograph for this display show no graticule at all. Only range pips formed by an oscillator. - Those oscillator pips are fixed. Range settings do not affect them. + Those oscillator pips are fixed. Range settings do not affect them. There is a baseline at the + bottom, etched in glass, that is side illuminated by incandescent lamps. Like Chain Home, the Marine A-scope sums noise, calibration pips, and target echoes into a single signal before the deflection plates — this is a hardware reality of any CRT A-scope. @@ -411,6 +415,45 @@ Individual scope informations 3. 6.0 miles; marker pips every 1.0 miles 4. 12.0 miles; marker pips every 2.0 miles + RADAR EQUATION FOR MARINE A SCOPE + + Here are the fixed values (those values that can be declared as + uniforms) for the marine a scope radar. I suggest these for the uniform names + + peak_power = 500 KW + wavelength = 10 centimeters + antenna_gain = 30 db + pulse_rep_frequency = 500 hz + horizontal_beamwidth = 2.5 degrees + + Now we have some stuff for the settings file: + + SYSTEM_TEMPERATURE ($T_s$): Usually 290K; used to calculate the noise floor + NOISE_FIGURE ($F$): A value in dB that determines how much "grass" your + specific receiver adds to the signal. + BOLTZMANN_CONSTANT ($k$): $1.38 \times 10^{-23}$, essential for the thermal + noise part of your simulation. + + Now, here is a snippet of pseudo code: + + /* Uniform Variables provided by CPU */ + uniform float u_AntennaBearing; // Current rotation of knob/motor + uniform float horizontal_beamwidth; // Fixed for the scope (e.g., 2.5 degrees) + + /* Logic for each Target (calculated on CPU or in Geometry Shader) */ + float angle_diff = abs(target.bearing - u_AntennaBearing); + + // Handle the 359 to 0 degree wrap-around + if (angle_diff > 180.0) angle_diff = 360.0 - angle_diff; + + // 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)); + + // 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 PPI stands for Plan Position Indicator