Files
radar-simulation/CLAUDE.md
2026-04-01 08:44:19 -07:00

98 lines
4.4 KiB
Markdown

Hello, this is a project to create a simulation of a vintage marine radar before the
days of digital electronics and we had to use a cathode ray tube with p7 phosphor
I plan to use c++ and opengl and shaders for access to a GPU. I am in ubuntu 25.10.
I wish the c++ be arranged as follows:
All code in the src subdirectory
The main program and the binary would be called radar-simulation.
The shaders are in the shaders subdirectory
We need to use classes. For now, I can see one class for all things
having to do with putting stuff on the screen. Includes initializing
OpenGL and put up two windows on the screen. One is for the PPI display,
locate on the right hand side of the screen with margins for the sides of
the monitor. The A Scope is a smaller window on the center of the left
side of the display.
All inputs to either display will be performed in that class. Data fields
for the methods of that class should be put into a header file in the
headers directory.
Another class would be used to communicate with the raspberry pies that
will obtain data from the ais and ads-b software defined radios.
Another class would be used for simulating targets, like for example
a sailboat regatta race.
The classes for communications and the simulating targets have not been
defined yet.
There may be more classes TBD
The platform is a Geekom GEEKOM A8 Max, AMD Ryzen 9 8945HS 5.2GHz 32GB RAM
Now here is the overall project and proposed architecture
This project is to simulate a period 1950 to 1960 marine radar with a crt p7
phosphor for the ppi scope and a p4 phosphor for the a scope. The ppi scope
will be on the right side of the screen and the a scope will be on the left
hand side of the screen. The user will use a knob to set the bearing for the
a scope as that only shows range.
For now, the a scope will not be made full because I have not figured out
how to implement the bearing control. Just put the display up on the screen.
The main ppi scope will take up the right hand side of the screen. You need to leave about
a 1/2 inch margin around the sides of the circular scope.
Details for A scope (predecessor to the PPI scope)
The a scope will have pulse amplitude on the vertical axis and the range on the horizontal
axis. There will be a graticule for the a scope. This will show range markings. In the
day, the operator would physically change the graticule overlay. What we can do is to
electronically change the overlay and put a brief message saying operator changes
the graticule.
The graticule was illuminated with #47 incandescent dial lights, we need to have that
graticule lit with an equivalent color. Horizontal is range, vertical is strength
of the return blip. The phosphor of the A scope is green, similar to P1, which was
used on oscillosopes.
Please note that there will be two sets of shaders. Once for the actual trace and the
other is used for the graticule. It will be used to change the graticule range and
briefly display the message "operator inserts new graticule manually". If possible for
realism, have the old graticule move up and off the screen and then the new graticule move
onto and down the screen until it is in place, simulating the operator changing the
graticule.
There are as of now, no shaders nor any c++ files created yet
Details for PPI display:
Located on right hand of the screen. Put 1/2 inch margins on the right and top and bottom.
The PPI display will need shaders for the following:
1. Active radar target echos (blue white phosphor)
2. Graticule (warm incandescent color, it was a plastic overlay lit with lamps. Does
not get included with persistant phosphor. Can change if the operator changes the
range. Have ticks for bearing; each degree. Every 10 degrees have a small text label, put these
outside the ring. No range rings for now. Have to figure out how that is done with vintage
radars. Perhaps you can suggest. Does operator have to change the plastic graticule when they
change the range?
3. facility to change clutter, rain and waves. Immediate is blue white same as targets
4. facility to include shore lines. This will change with range settings. If possible, can
we include docks and tall buildings? Immediate is blue white same as targets.
5. Persistance (green yellow) for targets, clutter, and shore lines.
Right now, I just want to make sure that the structure is okay and that the CMakeFile.txt
looks okay. I am not ready to ask you to create any code