98 lines
4.4 KiB
Markdown
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
|