Compare commits
2 Commits
14298a6241
...
6270dd61c3
| Author | SHA1 | Date | |
|---|---|---|---|
| 6270dd61c3 | |||
| 0ce4ff6b77 |
62
CLAUDE.md
62
CLAUDE.md
@@ -91,23 +91,61 @@ These controls will affect the state variables and the uniform variables of the
|
|||||||
|
|
||||||
There will be three abstracts for scopes:
|
There will be three abstracts for scopes:
|
||||||
|
|
||||||
1. A Scope - sweep on horizontal axis. A pulse will appear for a return. The distance from
|
Please note that identical controls will be the same keyboard strikes or physical controls for all scopes.
|
||||||
|
|
||||||
|
=======================================================
|
||||||
|
Overall control information
|
||||||
|
|
||||||
|
These are knobs on the panel once that is built. Keyboard keys until then
|
||||||
|
|
||||||
|
1. Intensity - scope overall intensity - Keyboard 3 is lower; 4 is higher
|
||||||
|
2. Receiver Sensitivity - signal intensity - Keyboard 5 is lower; 6 is higher
|
||||||
|
3. STC Sensitivity - sensitivity for closer in targets which can overwhelm
|
||||||
|
overall sensitivity - keyboard q for lower; w for higher
|
||||||
|
4. STC Range - range to which sensitivity to closer targets is effective
|
||||||
|
keyboard e for lower; r for higher
|
||||||
|
5. Radiogoniometer knob for Chain Home; keyboard t for left turn; y for right turn.
|
||||||
|
6. Maximum Range for all scopes except for chain home, which is fixed. This control
|
||||||
|
will not operate for Chain Home. These maximum
|
||||||
|
range selections will be defined for each scope; If you try to go beyond the stated
|
||||||
|
maximum ranges, the control will have no effect; note that the default maximum range would
|
||||||
|
be the highest for that scope; keyboard u for lower; i for higher
|
||||||
|
7. Range Cursor (for ppi scopes, not for a scopes) keyboard o for lower; p for higher
|
||||||
|
8. Bearing Cursor (for all ppi scopes; not for a scopes)
|
||||||
|
keyboard a for counterclockwise s for clockwise
|
||||||
|
9. Bearing for Marine A Scope. This is not for a cursor, but this operates the motor
|
||||||
|
that revolves the antenna unit keyboard d for counterclockwise and f for clockwise
|
||||||
|
|
||||||
|
Notes; I am maintaining control separation between radiogon, marine a scope bearing, and ppi bearing.
|
||||||
|
However, when I make the control panel, those will be combined as one physical knob with three
|
||||||
|
labels, chain home radiogon, marine a scope antenna rotation, and ppi scope bearing to save on
|
||||||
|
hardware; the same physical control can be used for multiple scopes.
|
||||||
|
|
||||||
|
Note that the range cursor is different from the maximum range. Maximum range is the maximum
|
||||||
|
radar range setting and range cursor is the range portion of the ppi cursor.
|
||||||
|
========================================================
|
||||||
|
Individual scope informations
|
||||||
|
|
||||||
|
1. Introduction to project. Just text. No scopes. Only one control for entering
|
||||||
|
scope selection loop. Keyboard keys 1 for forward; 2 for backward.
|
||||||
|
|
||||||
|
2. A Scope - sweep on horizontal axis. A pulse will appear for a return. The distance from
|
||||||
the left hand side to the pulse is the range. The height of the pulse is the strength
|
the left hand side to the pulse is the range. The height of the pulse is the strength
|
||||||
of the return signal. The bearing is determined by manual control.
|
of the return signal. The bearing is determined by manual control.
|
||||||
|
|
||||||
The basic controls for both A Scopes include:
|
The basic controls for both A Scopes include:
|
||||||
Intensity (the overall brightness of the entire display).
|
Intensity
|
||||||
|
|
||||||
Sensitivity (the strength of the signal amplification of the
|
Sensitivity (the strength of the signal amplification of the
|
||||||
receiver). This has nothing to do with the brightness of the
|
receiver). This has nothing to do with the brightness of the
|
||||||
pulses. This only affects the height of the pulse and the height
|
pulses. This only affects the height of the pulse and the height
|
||||||
of any noise floor.
|
of any noise floor.
|
||||||
|
|
||||||
STC sensitivity; sensitivity for close in targets
|
STC sensitivity; sensitivity for close in targets.
|
||||||
|
|
||||||
STC sensitivity range; how far shall the STC sensitivity have effect
|
STC sensitivity range; how far shall the STC sensitivity have effect.
|
||||||
|
|
||||||
Chain Home A Scope
|
2-1 Chain Home A Scope
|
||||||
|
|
||||||
Because the receiving antennas are very large (about 100 feet), the
|
Because the receiving antennas are very large (about 100 feet), the
|
||||||
operator cannot physically move them.
|
operator cannot physically move them.
|
||||||
@@ -138,13 +176,16 @@ There will be three abstracts for scopes:
|
|||||||
null points for each target. Since we do not have a physical calibrated knob, we
|
null points for each target. Since we do not have a physical calibrated knob, we
|
||||||
can put the bearing as a text indicator below the A Scope.
|
can put the bearing as a text indicator below the A Scope.
|
||||||
|
|
||||||
The range is 200 miles.
|
The range is 200 miles. That is the only range option for this scope.
|
||||||
|
|
||||||
There is no graticule. Photos only show crystal oscillator generated 'pips' for
|
There is no graticule. Photos only show crystal oscillator generated 'pips' for
|
||||||
every 20 miles.
|
every 20 miles.
|
||||||
|
|
||||||
|
We do need to have those small pips every 20 miles.
|
||||||
|
Note that the operator cannot change this. This is due to the limitations of
|
||||||
|
the technology for that era.
|
||||||
|
|
||||||
Marine A Scope
|
2-2 Marine A Scope
|
||||||
|
|
||||||
Utilization of A scope marine was limited to military use prior to PPI scope
|
Utilization of A scope marine was limited to military use prior to PPI scope
|
||||||
invention. An example is British Type 271 radar, introduced in 1941.
|
invention. An example is British Type 271 radar, introduced in 1941.
|
||||||
@@ -171,15 +212,14 @@ There will be three abstracts for scopes:
|
|||||||
creates a curved waveform; not just a line.
|
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.
|
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.
|
||||||
|
|
||||||
|
The maximum ranges for this scope are:
|
||||||
1. 1.5 miles; marker pips every 0.25 miles
|
1. 1.5 miles; marker pips every 0.25 miles
|
||||||
2. 3.0 miles; marker pips every 0.5 miles
|
2. 3.0 miles; marker pips every 0.5 miles
|
||||||
3. 6.0 miles; marker pips every 1.0 miles
|
3. 6.0 miles; marker pips every 1.0 miles
|
||||||
4. 12.0 miles; marker pips every 2.0 miles
|
4. 12.0 miles; marker pips every 2.0 miles
|
||||||
|
|
||||||
Range can be selected with two keyboard keys or two buttons on the panel, and is
|
|
||||||
indicated in the text status panel below the scope.
|
|
||||||
|
|
||||||
2. PPI Scope - still being worked
|
2. PPI Scope - still being worked
|
||||||
|
|
||||||
|
|
||||||
@@ -189,7 +229,7 @@ There will be three abstracts for scopes:
|
|||||||
RADAR EQUATION
|
RADAR EQUATION
|
||||||
|
|
||||||
Lets start here by mentioning the radar equation that sets the perceived strength of any
|
Lets start here by mentioning the radar equation that sets the perceived strength of any
|
||||||
radar echoes, no matter what kind of radar.
|
radar echoes, no matter what kind of radar (a scope and ppi scopes)
|
||||||
|
|
||||||
Summary of radar equation:
|
Summary of radar equation:
|
||||||
|
|
||||||
|
|||||||
80
possible-claude.md-changes
Normal file
80
possible-claude.md-changes
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
Implementation: Use a Frame Buffer Object (FBO). Instead of clearing the screen each frame, draw a full-screen quad with a very low alpha (e.g., 0.95) to slowly "dim" previous sweeps.
|
||||||
|
|
||||||
|
Threading for PostgreSQL and LIDAR
|
||||||
|
|
||||||
|
Reading from PostgreSQL (targets) and GDAL (LIDAR terrain) can cause "micro-stuttering" if done on the main render thread.
|
||||||
|
|
||||||
|
The Simulation Thread: Create a background thread that polls the target_data table and updates a thread-safe std::vector<Target>.
|
||||||
|
|
||||||
|
The Render Thread: The OpenGL loop should simply read the latest target positions and render them at 60 FPS (or higher) to keep the "sweep" of the PPI radar smooth.
|
||||||
|
|
||||||
|
Class Hierarchy and PPI SpecificsSince you have four distinct scopes (Chain Home A-Scope, Marine A-Scope, Stationary PPI, and On-boat PPI), a State Pattern is ideal.BaseScope Class: Handles the universal Intensity and Sensitivity variables.AScope Subclass: Implements the horizontal sweep and the "curved waveform" logic for the marine version.PPIScope Subclass: Implements the $360^\circ$ rotation logic. For the "On-boat" version, you will need to pass the boat's own GPS/Heading coordinates (from GDAL/LIDAR) into the shader to offset the target positions.
|
||||||
|
|
||||||
|
Deepseek:
|
||||||
|
|
||||||
|
Mathematical Logic vs. Contextual UnderstandingDeepSeek's Strength: DeepSeek is often more "aggressive" with mathematical optimization. It will likely give you very efficient GLSL code for the $1/R^4$ calculations.The "DeepSeek.md" file: You should rename your instructions to DEEPSEEK.md. DeepSeek models are trained to look for specific instructions in the root directory, similar to how Claude looks for CLAUDE.md.
|
||||||
|
|
||||||
|
Explicit Hardware Prompting
|
||||||
|
|
||||||
|
While Claude is currently aware of the AMD Radeon 780M and Ubuntu 25.10 nuances through our conversation, DeepSeek may require more explicit "reminders" about:
|
||||||
|
|
||||||
|
Mesa Drivers: Remind it to avoid vendor-specific (NVIDIA) extensions.
|
||||||
|
|
||||||
|
C++20 Strictness: DeepSeek sometimes defaults to older C++ standards; ensure your CMakeLists.txt is the first thing it reviews to lock it into your C++20 requirement.
|
||||||
|
|
||||||
|
Coding Style Enforcement
|
||||||
|
|
||||||
|
DeepSeek is generally good at following style guides, but it can be "talkative." You may need to add a directive:
|
||||||
|
|
||||||
|
"Provide code only. Do not explain standard C++ features unless they relate directly to the OpenGL 4.3 Core specification or the Geekom A8 Max hardware."
|
||||||
|
|
||||||
|
Suggested Additions to your .md file
|
||||||
|
|
||||||
|
To help either AI (Claude or DeepSeek) write better code for the PPI scopes, I recommend adding these details to your file:
|
||||||
|
|
||||||
|
PPI Rotation Speed: Specify the "RPM" for the marine traffic control (e.g., 12-24 RPM).
|
||||||
|
|
||||||
|
The "North-Up" vs "Head-Up" display: For the on-boat radar, will the display rotate as the boat turns (Head-Up), or will "North" always be at the top?
|
||||||
|
|
||||||
|
LIDAR Resolution: Define how many LIDAR data points should be converted into "clutter" on the radar screen.
|
||||||
|
|
||||||
|
This setup on your Geekom A8 Max should provide plenty of power to handle both the PostgreSQL queries and the complex OpenGL fragments required for a realistic "vintage" look.
|
||||||
|
|
||||||
|
Proposed Addition: > [THREADING MODEL]
|
||||||
|
|
||||||
|
Main/Render Thread: Handles the OpenGL loop, GLFW input, and glDraw calls. It must remain non-blocking to ensure a smooth 60 FPS sweep.
|
||||||
|
|
||||||
|
Simulation/Data Thread: A background thread that polls the target_data table and updates a thread-safe shared state (using std::mutex or atomics) for the Render thread to consume.
|
||||||
|
|
||||||
|
The PPI Scope Particulars
|
||||||
|
|
||||||
|
Since you are ready to define the two PPI modes (Stationary and On-Boat), adding these "Rules of Behavior" will prevent the AI from guessing.
|
||||||
|
|
||||||
|
Proposed Addition:
|
||||||
|
|
||||||
|
[PPI SCOPE SPECIFICS]
|
||||||
|
|
||||||
|
Persistence (Phosphor Decay): Implement using a Frame Buffer Object (FBO). Do not clear the color buffer every frame; instead, draw a semi-transparent black quad to simulate 1940s-60s CRT decay.
|
||||||
|
|
||||||
|
Marine Traffic Control (Stationary): Fixed location. Targets move relative to the center of the scope.
|
||||||
|
|
||||||
|
Police Boat (On-Boat): The center of the scope is the boat. Integrate boat heading (heading-up display) so the "world" rotates around the observer as the boat turns.
|
||||||
|
|
||||||
|
File Structure & CMake Prep
|
||||||
|
|
||||||
|
To make the two-step CMakeLists.txt generation easier, add a section for organization.
|
||||||
|
|
||||||
|
Proposed Addition:
|
||||||
|
|
||||||
|
[PROJECT STRUCTURE]
|
||||||
|
|
||||||
|
/src: All .cpp source files.
|
||||||
|
|
||||||
|
/include: All .hpp header files.
|
||||||
|
|
||||||
|
/shaders: External .glsl files for vertex and fragment shaders.
|
||||||
|
|
||||||
|
/data: Location for GDAL LIDAR and ENC chart files.
|
||||||
|
|
||||||
|
|
||||||
|
pdated Logic for DeepSeek/Claude SelectionOnce you add these, the transition will be seamless:Claude will be better at setting up the Class Hierarchy (the BaseScope and its derivatives) because it follows the "System Engineer" logic of your persona very well.DeepSeek will be excellent if you need to optimize the GLSL Shaders for the $1/R^4$ logic or the GDAL coordinate transformations, as it tends to be very mathematically rigorous.How to proceed:Go ahead and update your CLAUDE.md with these details. Once you're ready, paste the updated content here (or just tell me it's done), and we can generate that Foundation CMakeLists.txt to get your Geekom A8 Max environment ready for the first "Hello Radar" sweep.
|
||||||
Reference in New Issue
Block a user