Files
radar-simulation/CLAUDE.md
2026-04-01 08:31:11 -07:00

3.3 KiB

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.

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

PPI display will be done later.

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