New modules compiled

This commit is contained in:
2026-04-04 22:26:38 -07:00
parent eec70c21a2
commit 6cf9091c05
29 changed files with 908 additions and 390 deletions

View File

@@ -6,10 +6,12 @@ vintage marine radar.
There will be two scopes. An early A Scope and a PPI scope. There will be two scopes. An early A Scope and a PPI scope.
The PPI scope will take up the entire right hand side of the display The PPI scope will take up the entire right hand side of the display
(1/2 inch margins on top,bottom, and right hand side) and the A Scope will (1 inch margins on top,bottom, and right hand side) and the A Scope will
be smaller, located in the center of the left hand be smaller, located in the center of the left hand
side of the display near the left margin. side of the display near the left margin.
Please impliment 1 inch margins around both scopes. I am getting them cut off
Display should be whole screen. An escape, possibly with the escape key Display should be whole screen. An escape, possibly with the escape key
needs to be provided to exit the program and go back to shell. needs to be provided to exit the program and go back to shell.
@@ -153,7 +155,10 @@ A scope:
graticule appear to move up and out and the replacement graticule move graticule appear to move up and out and the replacement graticule move
in and down in place. The operator takes them out from a slot above the in and down in place. The operator takes them out from a slot above the
scope and inserts the replacement through the same slot. All these graticules scope and inserts the replacement through the same slot. All these graticules
are lighted with incandescent colors. are lighted with incandescent colors. Graticule should have vertical lines
for each range and a horizontal line at the bottom. Left of the screen you
have the words "SIGNAL STRENGTH" and bottom of the screen you
have the words "RANGE"
Note on screen update vs pulse repetition frequency. We need to be careful Note on screen update vs pulse repetition frequency. We need to be careful
since we have no control of the display update frequency and need since we have no control of the display update frequency and need
@@ -277,6 +282,9 @@ Order of testing features.
and hold for 5 seconds for each range and hold for 5 seconds for each range
4. PPI scope range rings; both active display and persistence display - test 4. PPI scope range rings; both active display and persistence display - test
for each range settings; hold for 5 seconds each for each range settings; hold for 5 seconds each
5. PPI scope active target operation, as well as persistance. Create
four fake targets, one small, one large and two very large with
blooming. Do random range and bearing with one in earch quadrant.
5. PPI scope cursor - test by slowly changing range and bearing 5. PPI scope cursor - test by slowly changing range and bearing
6. PPI scope weather noise - test by changing noise level slowly 6. PPI scope weather noise - test by changing noise level slowly
7. PPI scope waves noise - test by changing noise level slowly 7. PPI scope waves noise - test by changing noise level slowly
@@ -284,9 +292,10 @@ Order of testing features.
======================================================== ========================================================
Generate code for testiong feature 1 and 2 only; Generate code for testiong feature 1 and 2 and 3 only;
1. General initialization and set up basic boundaries of the two scopes 1. General initialization and set up basic boundaries of the two scopes
on the screen. No features on each scope yet. on the screen. No features on each scope yet.
2. Edge graticule on ppi scope (Bearing ticks and numbers) 2. Edge graticule on ppi scope (Bearing ticks and numbers)
3. replaceable graticules for A scope
Do not generate any other code Do not generate any other code
Generate code the run this and hold for 10 seconds and exit Generate code the run this and hold for 10 seconds and exit

View File

@@ -24,5 +24,11 @@ target_link_libraries(radar_simulation PRIVATE
Freetype::Freetype Freetype::Freetype
) )
file(COPY ${CMAKE_SOURCE_DIR}/shaders DESTINATION ${CMAKE_BINARY_DIR}) add_custom_target(copy_shaders ALL
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/shaders
${CMAKE_BINARY_DIR}/shaders
COMMENT "Copying shaders to build directory"
)
add_dependencies(radar_simulation copy_shaders)

View File

@@ -0,0 +1,2 @@
# Hashes of file build rules.
98892458fd275ab36edb4060d435198d CMakeFiles/copy_shaders

View File

@@ -15,97 +15,22 @@ set(CMAKE_MAKEFILE_DEPENDS
"/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3ConfigVersion.cmake" "/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3ConfigVersion.cmake"
"/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3Targets-none.cmake" "/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3Targets-none.cmake"
"/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3Targets.cmake" "/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3Targets.cmake"
"/usr/share/cmake-3.31/Modules/CMakeCCompiler.cmake.in"
"/usr/share/cmake-3.31/Modules/CMakeCCompilerABI.c"
"/usr/share/cmake-3.31/Modules/CMakeCInformation.cmake" "/usr/share/cmake-3.31/Modules/CMakeCInformation.cmake"
"/usr/share/cmake-3.31/Modules/CMakeCXXCompiler.cmake.in"
"/usr/share/cmake-3.31/Modules/CMakeCXXCompilerABI.cpp"
"/usr/share/cmake-3.31/Modules/CMakeCXXInformation.cmake" "/usr/share/cmake-3.31/Modules/CMakeCXXInformation.cmake"
"/usr/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake" "/usr/share/cmake-3.31/Modules/CMakeCommonLanguageInclude.cmake"
"/usr/share/cmake-3.31/Modules/CMakeCompilerIdDetection.cmake"
"/usr/share/cmake-3.31/Modules/CMakeDetermineCCompiler.cmake"
"/usr/share/cmake-3.31/Modules/CMakeDetermineCXXCompiler.cmake"
"/usr/share/cmake-3.31/Modules/CMakeDetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerABI.cmake"
"/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerId.cmake"
"/usr/share/cmake-3.31/Modules/CMakeDetermineCompilerSupport.cmake"
"/usr/share/cmake-3.31/Modules/CMakeDetermineSystem.cmake"
"/usr/share/cmake-3.31/Modules/CMakeFindBinUtils.cmake"
"/usr/share/cmake-3.31/Modules/CMakeFindDependencyMacro.cmake" "/usr/share/cmake-3.31/Modules/CMakeFindDependencyMacro.cmake"
"/usr/share/cmake-3.31/Modules/CMakeGenericSystem.cmake" "/usr/share/cmake-3.31/Modules/CMakeGenericSystem.cmake"
"/usr/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake" "/usr/share/cmake-3.31/Modules/CMakeInitializeConfigs.cmake"
"/usr/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake" "/usr/share/cmake-3.31/Modules/CMakeLanguageInformation.cmake"
"/usr/share/cmake-3.31/Modules/CMakeParseImplicitIncludeInfo.cmake"
"/usr/share/cmake-3.31/Modules/CMakeParseImplicitLinkInfo.cmake"
"/usr/share/cmake-3.31/Modules/CMakeParseLibraryArchitecture.cmake"
"/usr/share/cmake-3.31/Modules/CMakeSystem.cmake.in"
"/usr/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake" "/usr/share/cmake-3.31/Modules/CMakeSystemSpecificInformation.cmake"
"/usr/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake" "/usr/share/cmake-3.31/Modules/CMakeSystemSpecificInitialize.cmake"
"/usr/share/cmake-3.31/Modules/CMakeTestCCompiler.cmake"
"/usr/share/cmake-3.31/Modules/CMakeTestCXXCompiler.cmake"
"/usr/share/cmake-3.31/Modules/CMakeTestCompilerCommon.cmake"
"/usr/share/cmake-3.31/Modules/CMakeUnixFindMake.cmake"
"/usr/share/cmake-3.31/Modules/CheckCSourceCompiles.cmake" "/usr/share/cmake-3.31/Modules/CheckCSourceCompiles.cmake"
"/usr/share/cmake-3.31/Modules/CheckIncludeFile.cmake" "/usr/share/cmake-3.31/Modules/CheckIncludeFile.cmake"
"/usr/share/cmake-3.31/Modules/CheckLibraryExists.cmake" "/usr/share/cmake-3.31/Modules/CheckLibraryExists.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/ADSP-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/ARMClang-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Borland-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Bruce-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake" "/usr/share/cmake-3.31/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Compaq-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Cray-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/CrayClang-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/GHS-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/GNU-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/GNU-C.cmake" "/usr/share/cmake-3.31/Modules/Compiler/GNU-C.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/GNU-CXX.cmake" "/usr/share/cmake-3.31/Modules/Compiler/GNU-CXX.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/GNU-FindBinUtils.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/GNU.cmake" "/usr/share/cmake-3.31/Modules/Compiler/GNU.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/HP-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/HP-CXX-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/IAR-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Intel-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/LCC-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/MSVC-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/NVHPC-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/NVIDIA-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/OrangeC-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/PGI-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/PathScale-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/SCO-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/SDCC-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/SunPro-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/TI-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/TIClang-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Tasking-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/Watcom-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/XL-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/XL-CXX-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/XLClang-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/zOS-C-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake"
"/usr/share/cmake-3.31/Modules/FindFreetype.cmake" "/usr/share/cmake-3.31/Modules/FindFreetype.cmake"
"/usr/share/cmake-3.31/Modules/FindOpenGL.cmake" "/usr/share/cmake-3.31/Modules/FindOpenGL.cmake"
"/usr/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake" "/usr/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake"
@@ -114,9 +39,7 @@ set(CMAKE_MAKEFILE_DEPENDS
"/usr/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake" "/usr/share/cmake-3.31/Modules/Internal/CMakeCLinkerInformation.cmake"
"/usr/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake" "/usr/share/cmake-3.31/Modules/Internal/CMakeCXXLinkerInformation.cmake"
"/usr/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake" "/usr/share/cmake-3.31/Modules/Internal/CMakeCommonLinkerInformation.cmake"
"/usr/share/cmake-3.31/Modules/Internal/CMakeDetermineLinkerId.cmake"
"/usr/share/cmake-3.31/Modules/Internal/CheckSourceCompiles.cmake" "/usr/share/cmake-3.31/Modules/Internal/CheckSourceCompiles.cmake"
"/usr/share/cmake-3.31/Modules/Internal/FeatureTesting.cmake"
"/usr/share/cmake-3.31/Modules/Linker/GNU-C.cmake" "/usr/share/cmake-3.31/Modules/Linker/GNU-C.cmake"
"/usr/share/cmake-3.31/Modules/Linker/GNU-CXX.cmake" "/usr/share/cmake-3.31/Modules/Linker/GNU-CXX.cmake"
"/usr/share/cmake-3.31/Modules/Linker/GNU.cmake" "/usr/share/cmake-3.31/Modules/Linker/GNU.cmake"
@@ -124,7 +47,6 @@ set(CMAKE_MAKEFILE_DEPENDS
"/usr/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU-C.cmake" "/usr/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU-C.cmake"
"/usr/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU-CXX.cmake" "/usr/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU-CXX.cmake"
"/usr/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake" "/usr/share/cmake-3.31/Modules/Platform/Linker/Linux-GNU.cmake"
"/usr/share/cmake-3.31/Modules/Platform/Linux-Determine-CXX.cmake"
"/usr/share/cmake-3.31/Modules/Platform/Linux-GNU-C.cmake" "/usr/share/cmake-3.31/Modules/Platform/Linux-GNU-C.cmake"
"/usr/share/cmake-3.31/Modules/Platform/Linux-GNU-CXX.cmake" "/usr/share/cmake-3.31/Modules/Platform/Linux-GNU-CXX.cmake"
"/usr/share/cmake-3.31/Modules/Platform/Linux-GNU.cmake" "/usr/share/cmake-3.31/Modules/Platform/Linux-GNU.cmake"
@@ -142,15 +64,11 @@ set(CMAKE_MAKEFILE_OUTPUTS
# Byproducts of CMake generate step: # Byproducts of CMake generate step:
set(CMAKE_MAKEFILE_PRODUCTS set(CMAKE_MAKEFILE_PRODUCTS
"CMakeFiles/3.31.6/CMakeSystem.cmake"
"CMakeFiles/3.31.6/CMakeCXXCompiler.cmake"
"CMakeFiles/3.31.6/CMakeCCompiler.cmake"
"CMakeFiles/3.31.6/CMakeCXXCompiler.cmake"
"CMakeFiles/3.31.6/CMakeCCompiler.cmake"
"CMakeFiles/CMakeDirectoryInformation.cmake" "CMakeFiles/CMakeDirectoryInformation.cmake"
) )
# Dependency information for all targets: # Dependency information for all targets:
set(CMAKE_DEPEND_INFO_FILES set(CMAKE_DEPEND_INFO_FILES
"CMakeFiles/radar_simulation.dir/DependInfo.cmake" "CMakeFiles/radar_simulation.dir/DependInfo.cmake"
"CMakeFiles/copy_shaders.dir/DependInfo.cmake"
) )

View File

@@ -64,10 +64,12 @@ CMAKE_BINARY_DIR = /home/maallyn/radar-simulation/build
# The main recursive "all" target. # The main recursive "all" target.
all: CMakeFiles/radar_simulation.dir/all all: CMakeFiles/radar_simulation.dir/all
all: CMakeFiles/copy_shaders.dir/all
.PHONY : all .PHONY : all
# The main recursive "codegen" target. # The main recursive "codegen" target.
codegen: CMakeFiles/radar_simulation.dir/codegen codegen: CMakeFiles/radar_simulation.dir/codegen
codegen: CMakeFiles/copy_shaders.dir/codegen
.PHONY : codegen .PHONY : codegen
# The main recursive "preinstall" target. # The main recursive "preinstall" target.
@@ -76,21 +78,22 @@ preinstall:
# The main recursive "clean" target. # The main recursive "clean" target.
clean: CMakeFiles/radar_simulation.dir/clean clean: CMakeFiles/radar_simulation.dir/clean
clean: CMakeFiles/copy_shaders.dir/clean
.PHONY : clean .PHONY : clean
#============================================================================= #=============================================================================
# Target rules for target CMakeFiles/radar_simulation.dir # Target rules for target CMakeFiles/radar_simulation.dir
# All Build rule for target. # All Build rule for target.
CMakeFiles/radar_simulation.dir/all: CMakeFiles/radar_simulation.dir/all: CMakeFiles/copy_shaders.dir/all
$(MAKE) $(MAKESILENT) -f CMakeFiles/radar_simulation.dir/build.make CMakeFiles/radar_simulation.dir/depend $(MAKE) $(MAKESILENT) -f CMakeFiles/radar_simulation.dir/build.make CMakeFiles/radar_simulation.dir/depend
$(MAKE) $(MAKESILENT) -f CMakeFiles/radar_simulation.dir/build.make CMakeFiles/radar_simulation.dir/build $(MAKE) $(MAKESILENT) -f CMakeFiles/radar_simulation.dir/build.make CMakeFiles/radar_simulation.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/maallyn/radar-simulation/build/CMakeFiles --progress-num=1,2,3 "Built target radar_simulation" @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/maallyn/radar-simulation/build/CMakeFiles --progress-num=2,3,4 "Built target radar_simulation"
.PHONY : CMakeFiles/radar_simulation.dir/all .PHONY : CMakeFiles/radar_simulation.dir/all
# Build rule for subdir invocation for target. # Build rule for subdir invocation for target.
CMakeFiles/radar_simulation.dir/rule: cmake_check_build_system CMakeFiles/radar_simulation.dir/rule: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/maallyn/radar-simulation/build/CMakeFiles 3 $(CMAKE_COMMAND) -E cmake_progress_start /home/maallyn/radar-simulation/build/CMakeFiles 4
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/radar_simulation.dir/all $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/radar_simulation.dir/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/maallyn/radar-simulation/build/CMakeFiles 0 $(CMAKE_COMMAND) -E cmake_progress_start /home/maallyn/radar-simulation/build/CMakeFiles 0
.PHONY : CMakeFiles/radar_simulation.dir/rule .PHONY : CMakeFiles/radar_simulation.dir/rule
@@ -100,9 +103,9 @@ radar_simulation: CMakeFiles/radar_simulation.dir/rule
.PHONY : radar_simulation .PHONY : radar_simulation
# codegen rule for target. # codegen rule for target.
CMakeFiles/radar_simulation.dir/codegen: CMakeFiles/radar_simulation.dir/codegen: CMakeFiles/copy_shaders.dir/all
$(MAKE) $(MAKESILENT) -f CMakeFiles/radar_simulation.dir/build.make CMakeFiles/radar_simulation.dir/codegen $(MAKE) $(MAKESILENT) -f CMakeFiles/radar_simulation.dir/build.make CMakeFiles/radar_simulation.dir/codegen
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/maallyn/radar-simulation/build/CMakeFiles --progress-num=1,2,3 "Finished codegen for target radar_simulation" @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/maallyn/radar-simulation/build/CMakeFiles --progress-num=2,3,4 "Finished codegen for target radar_simulation"
.PHONY : CMakeFiles/radar_simulation.dir/codegen .PHONY : CMakeFiles/radar_simulation.dir/codegen
# clean rule for target. # clean rule for target.
@@ -110,6 +113,38 @@ CMakeFiles/radar_simulation.dir/clean:
$(MAKE) $(MAKESILENT) -f CMakeFiles/radar_simulation.dir/build.make CMakeFiles/radar_simulation.dir/clean $(MAKE) $(MAKESILENT) -f CMakeFiles/radar_simulation.dir/build.make CMakeFiles/radar_simulation.dir/clean
.PHONY : CMakeFiles/radar_simulation.dir/clean .PHONY : CMakeFiles/radar_simulation.dir/clean
#=============================================================================
# Target rules for target CMakeFiles/copy_shaders.dir
# All Build rule for target.
CMakeFiles/copy_shaders.dir/all:
$(MAKE) $(MAKESILENT) -f CMakeFiles/copy_shaders.dir/build.make CMakeFiles/copy_shaders.dir/depend
$(MAKE) $(MAKESILENT) -f CMakeFiles/copy_shaders.dir/build.make CMakeFiles/copy_shaders.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/maallyn/radar-simulation/build/CMakeFiles --progress-num=1 "Built target copy_shaders"
.PHONY : CMakeFiles/copy_shaders.dir/all
# Build rule for subdir invocation for target.
CMakeFiles/copy_shaders.dir/rule: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/maallyn/radar-simulation/build/CMakeFiles 1
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/copy_shaders.dir/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/maallyn/radar-simulation/build/CMakeFiles 0
.PHONY : CMakeFiles/copy_shaders.dir/rule
# Convenience name for target.
copy_shaders: CMakeFiles/copy_shaders.dir/rule
.PHONY : copy_shaders
# codegen rule for target.
CMakeFiles/copy_shaders.dir/codegen:
$(MAKE) $(MAKESILENT) -f CMakeFiles/copy_shaders.dir/build.make CMakeFiles/copy_shaders.dir/codegen
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/maallyn/radar-simulation/build/CMakeFiles --progress-num=1 "Finished codegen for target copy_shaders"
.PHONY : CMakeFiles/copy_shaders.dir/codegen
# clean rule for target.
CMakeFiles/copy_shaders.dir/clean:
$(MAKE) $(MAKESILENT) -f CMakeFiles/copy_shaders.dir/build.make CMakeFiles/copy_shaders.dir/clean
.PHONY : CMakeFiles/copy_shaders.dir/clean
#============================================================================= #=============================================================================
# Special targets to cleanup operation of make. # Special targets to cleanup operation of make.

View File

@@ -1,3 +1,4 @@
/home/maallyn/radar-simulation/build/CMakeFiles/radar_simulation.dir /home/maallyn/radar-simulation/build/CMakeFiles/radar_simulation.dir
/home/maallyn/radar-simulation/build/CMakeFiles/copy_shaders.dir
/home/maallyn/radar-simulation/build/CMakeFiles/edit_cache.dir /home/maallyn/radar-simulation/build/CMakeFiles/edit_cache.dir
/home/maallyn/radar-simulation/build/CMakeFiles/rebuild_cache.dir /home/maallyn/radar-simulation/build/CMakeFiles/rebuild_cache.dir

View File

@@ -0,0 +1,22 @@
# Consider dependencies only in project.
set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF)
# The set of languages for which implicit dependencies are needed:
set(CMAKE_DEPENDS_LANGUAGES
)
# The set of dependency files which are needed:
set(CMAKE_DEPENDS_DEPENDENCY_FILES
)
# Targets to which this target links which contain Fortran sources.
set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES
)
# Targets to which this target links which contain Fortran sources.
set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES
)
# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")

View File

@@ -0,0 +1,91 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.31
# Delete rule output on recipe failure.
.DELETE_ON_ERROR:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/maallyn/radar-simulation
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/maallyn/radar-simulation/build
# Utility rule file for copy_shaders.
# Include any custom commands dependencies for this target.
include CMakeFiles/copy_shaders.dir/compiler_depend.make
# Include the progress variables for this target.
include CMakeFiles/copy_shaders.dir/progress.make
CMakeFiles/copy_shaders:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --blue --bold --progress-dir=/home/maallyn/radar-simulation/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Copying shaders to build directory"
/usr/bin/cmake -E copy_directory /home/maallyn/radar-simulation/shaders /home/maallyn/radar-simulation/build/shaders
CMakeFiles/copy_shaders.dir/codegen:
.PHONY : CMakeFiles/copy_shaders.dir/codegen
copy_shaders: CMakeFiles/copy_shaders
copy_shaders: CMakeFiles/copy_shaders.dir/build.make
.PHONY : copy_shaders
# Rule to build all files generated by this target.
CMakeFiles/copy_shaders.dir/build: copy_shaders
.PHONY : CMakeFiles/copy_shaders.dir/build
CMakeFiles/copy_shaders.dir/clean:
$(CMAKE_COMMAND) -P CMakeFiles/copy_shaders.dir/cmake_clean.cmake
.PHONY : CMakeFiles/copy_shaders.dir/clean
CMakeFiles/copy_shaders.dir/depend:
cd /home/maallyn/radar-simulation/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/maallyn/radar-simulation /home/maallyn/radar-simulation /home/maallyn/radar-simulation/build /home/maallyn/radar-simulation/build /home/maallyn/radar-simulation/build/CMakeFiles/copy_shaders.dir/DependInfo.cmake "--color=$(COLOR)"
.PHONY : CMakeFiles/copy_shaders.dir/depend

View File

@@ -0,0 +1,8 @@
file(REMOVE_RECURSE
"CMakeFiles/copy_shaders"
)
# Per-language clean rules from dependency scanning.
foreach(lang )
include(CMakeFiles/copy_shaders.dir/cmake_clean_${lang}.cmake OPTIONAL)
endforeach()

View File

@@ -0,0 +1,2 @@
# Empty custom commands generated dependencies file for copy_shaders.
# This may be replaced when dependencies are built.

View File

@@ -0,0 +1,2 @@
# CMAKE generated file: DO NOT EDIT!
# Timestamp file for custom commands dependencies management for copy_shaders.

View File

@@ -0,0 +1,2 @@
CMAKE_PROGRESS_1 = 1

View File

@@ -1 +1 @@
3 4

View File

@@ -27,21 +27,12 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o
/usr/include/x86_64-linux-gnu/bits/long-double.h /usr/include/x86_64-linux-gnu/bits/long-double.h
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h
/usr/include/x86_64-linux-gnu/bits/select-decl.h
/usr/include/x86_64-linux-gnu/bits/select.h /usr/include/x86_64-linux-gnu/bits/select.h
/usr/include/x86_64-linux-gnu/bits/select2.h
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/x86_64-linux-gnu/bits/stdint-intn.h
/usr/include/x86_64-linux-gnu/bits/stdint-least.h /usr/include/x86_64-linux-gnu/bits/stdint-least.h
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h
/usr/include/x86_64-linux-gnu/bits/stdio.h
/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h
/usr/include/x86_64-linux-gnu/bits/stdio2.h
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/x86_64-linux-gnu/bits/stdlib-float.h
/usr/include/x86_64-linux-gnu/bits/stdlib.h
/usr/include/x86_64-linux-gnu/bits/string_fortified.h
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h
/usr/include/x86_64-linux-gnu/bits/struct_mutex.h /usr/include/x86_64-linux-gnu/bits/struct_mutex.h
/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h
@@ -104,7 +95,6 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/c++/15/bits/basic_string.tcc /usr/include/c++/15/bits/basic_string.tcc
/usr/include/c++/15/bits/char_traits.h /usr/include/c++/15/bits/char_traits.h
/usr/include/c++/15/bits/charconv.h /usr/include/c++/15/bits/charconv.h
/usr/include/c++/15/bits/chrono.h
/usr/include/c++/15/bits/codecvt.h /usr/include/c++/15/bits/codecvt.h
/usr/include/c++/15/bits/concept_check.h /usr/include/c++/15/bits/concept_check.h
/usr/include/c++/15/bits/cpp_type_traits.h /usr/include/c++/15/bits/cpp_type_traits.h
@@ -133,7 +123,6 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/c++/15/bits/ostream.h /usr/include/c++/15/bits/ostream.h
/usr/include/c++/15/bits/ostream.tcc /usr/include/c++/15/bits/ostream.tcc
/usr/include/c++/15/bits/ostream_insert.h /usr/include/c++/15/bits/ostream_insert.h
/usr/include/c++/15/bits/parse_numbers.h
/usr/include/c++/15/bits/postypes.h /usr/include/c++/15/bits/postypes.h
/usr/include/c++/15/bits/predefined_ops.h /usr/include/c++/15/bits/predefined_ops.h
/usr/include/c++/15/bits/ptr_traits.h /usr/include/c++/15/bits/ptr_traits.h
@@ -168,16 +157,13 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/c++/15/bits/version.h /usr/include/c++/15/bits/version.h
/usr/include/c++/15/cctype /usr/include/c++/15/cctype
/usr/include/c++/15/cerrno /usr/include/c++/15/cerrno
/usr/include/c++/15/chrono
/usr/include/c++/15/clocale /usr/include/c++/15/clocale
/usr/include/c++/15/cmath /usr/include/c++/15/cmath
/usr/include/c++/15/concepts /usr/include/c++/15/concepts
/usr/include/c++/15/cstddef /usr/include/c++/15/cstddef
/usr/include/c++/15/cstdint
/usr/include/c++/15/cstdio /usr/include/c++/15/cstdio
/usr/include/c++/15/cstdlib /usr/include/c++/15/cstdlib
/usr/include/c++/15/cstring /usr/include/c++/15/cstring
/usr/include/c++/15/ctime
/usr/include/c++/15/cwchar /usr/include/c++/15/cwchar
/usr/include/c++/15/cwctype /usr/include/c++/15/cwctype
/usr/include/c++/15/debug/assertions.h /usr/include/c++/15/debug/assertions.h
@@ -200,7 +186,6 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/c++/15/pstl/execution_defs.h /usr/include/c++/15/pstl/execution_defs.h
/usr/include/c++/15/pstl/glue_algorithm_defs.h /usr/include/c++/15/pstl/glue_algorithm_defs.h
/usr/include/c++/15/pstl/pstl_config.h /usr/include/c++/15/pstl/pstl_config.h
/usr/include/c++/15/ratio
/usr/include/c++/15/sstream /usr/include/c++/15/sstream
/usr/include/c++/15/stdexcept /usr/include/c++/15/stdexcept
/usr/include/c++/15/stdlib.h /usr/include/c++/15/stdlib.h
@@ -298,23 +283,13 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h
/usr/include/x86_64-linux-gnu/bits/sched.h /usr/include/x86_64-linux-gnu/bits/sched.h
/usr/include/x86_64-linux-gnu/bits/select-decl.h
/usr/include/x86_64-linux-gnu/bits/select.h /usr/include/x86_64-linux-gnu/bits/select.h
/usr/include/x86_64-linux-gnu/bits/select2.h
/usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/x86_64-linux-gnu/bits/setjmp.h
/usr/include/x86_64-linux-gnu/bits/setjmp2.h
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/x86_64-linux-gnu/bits/stdint-intn.h
/usr/include/x86_64-linux-gnu/bits/stdint-least.h /usr/include/x86_64-linux-gnu/bits/stdint-least.h
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h
/usr/include/x86_64-linux-gnu/bits/stdio.h
/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h
/usr/include/x86_64-linux-gnu/bits/stdio2.h
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/x86_64-linux-gnu/bits/stdlib-float.h
/usr/include/x86_64-linux-gnu/bits/stdlib.h
/usr/include/x86_64-linux-gnu/bits/string_fortified.h
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h
/usr/include/x86_64-linux-gnu/bits/struct_mutex.h /usr/include/x86_64-linux-gnu/bits/struct_mutex.h
/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h
@@ -353,8 +328,6 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/x86_64-linux-gnu/bits/waitflags.h /usr/include/x86_64-linux-gnu/bits/waitflags.h
/usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/x86_64-linux-gnu/bits/waitstatus.h
/usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/x86_64-linux-gnu/bits/wchar.h
/usr/include/x86_64-linux-gnu/bits/wchar2-decl.h
/usr/include/x86_64-linux-gnu/bits/wchar2.h
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h
/usr/include/x86_64-linux-gnu/bits/wordsize.h /usr/include/x86_64-linux-gnu/bits/wordsize.h
/usr/include/x86_64-linux-gnu/bits/xopen_lim.h /usr/include/x86_64-linux-gnu/bits/xopen_lim.h

View File

@@ -26,21 +26,12 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o: /home/maallyn/radar-simulatio
/usr/include/x86_64-linux-gnu/bits/long-double.h \ /usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/select-decl.h \
/usr/include/x86_64-linux-gnu/bits/select.h \ /usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-least.h \ /usr/include/x86_64-linux-gnu/bits/stdint-least.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \
/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
@@ -102,7 +93,6 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: /home/maallyn/radar-simulation/s
/usr/include/c++/15/bits/basic_string.tcc \ /usr/include/c++/15/bits/basic_string.tcc \
/usr/include/c++/15/bits/char_traits.h \ /usr/include/c++/15/bits/char_traits.h \
/usr/include/c++/15/bits/charconv.h \ /usr/include/c++/15/bits/charconv.h \
/usr/include/c++/15/bits/chrono.h \
/usr/include/c++/15/bits/codecvt.h \ /usr/include/c++/15/bits/codecvt.h \
/usr/include/c++/15/bits/concept_check.h \ /usr/include/c++/15/bits/concept_check.h \
/usr/include/c++/15/bits/cpp_type_traits.h \ /usr/include/c++/15/bits/cpp_type_traits.h \
@@ -131,7 +121,6 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: /home/maallyn/radar-simulation/s
/usr/include/c++/15/bits/ostream.h \ /usr/include/c++/15/bits/ostream.h \
/usr/include/c++/15/bits/ostream.tcc \ /usr/include/c++/15/bits/ostream.tcc \
/usr/include/c++/15/bits/ostream_insert.h \ /usr/include/c++/15/bits/ostream_insert.h \
/usr/include/c++/15/bits/parse_numbers.h \
/usr/include/c++/15/bits/postypes.h \ /usr/include/c++/15/bits/postypes.h \
/usr/include/c++/15/bits/predefined_ops.h \ /usr/include/c++/15/bits/predefined_ops.h \
/usr/include/c++/15/bits/ptr_traits.h \ /usr/include/c++/15/bits/ptr_traits.h \
@@ -166,16 +155,13 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: /home/maallyn/radar-simulation/s
/usr/include/c++/15/bits/version.h \ /usr/include/c++/15/bits/version.h \
/usr/include/c++/15/cctype \ /usr/include/c++/15/cctype \
/usr/include/c++/15/cerrno \ /usr/include/c++/15/cerrno \
/usr/include/c++/15/chrono \
/usr/include/c++/15/clocale \ /usr/include/c++/15/clocale \
/usr/include/c++/15/cmath \ /usr/include/c++/15/cmath \
/usr/include/c++/15/concepts \ /usr/include/c++/15/concepts \
/usr/include/c++/15/cstddef \ /usr/include/c++/15/cstddef \
/usr/include/c++/15/cstdint \
/usr/include/c++/15/cstdio \ /usr/include/c++/15/cstdio \
/usr/include/c++/15/cstdlib \ /usr/include/c++/15/cstdlib \
/usr/include/c++/15/cstring \ /usr/include/c++/15/cstring \
/usr/include/c++/15/ctime \
/usr/include/c++/15/cwchar \ /usr/include/c++/15/cwchar \
/usr/include/c++/15/cwctype \ /usr/include/c++/15/cwctype \
/usr/include/c++/15/debug/assertions.h \ /usr/include/c++/15/debug/assertions.h \
@@ -198,7 +184,6 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: /home/maallyn/radar-simulation/s
/usr/include/c++/15/pstl/execution_defs.h \ /usr/include/c++/15/pstl/execution_defs.h \
/usr/include/c++/15/pstl/glue_algorithm_defs.h \ /usr/include/c++/15/pstl/glue_algorithm_defs.h \
/usr/include/c++/15/pstl/pstl_config.h \ /usr/include/c++/15/pstl/pstl_config.h \
/usr/include/c++/15/ratio \
/usr/include/c++/15/sstream \ /usr/include/c++/15/sstream \
/usr/include/c++/15/stdexcept \ /usr/include/c++/15/stdexcept \
/usr/include/c++/15/stdlib.h \ /usr/include/c++/15/stdlib.h \
@@ -296,23 +281,13 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: /home/maallyn/radar-simulation/s
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \ /usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/select-decl.h \
/usr/include/x86_64-linux-gnu/bits/select.h \ /usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/select2.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h \ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
/usr/include/x86_64-linux-gnu/bits/setjmp2.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-least.h \ /usr/include/x86_64-linux-gnu/bits/stdint-least.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \
/usr/include/x86_64-linux-gnu/bits/stdio.h \
/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \
/usr/include/x86_64-linux-gnu/bits/stdio2.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/x86_64-linux-gnu/bits/stdlib.h \
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
/usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \
/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
@@ -351,8 +326,6 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: /home/maallyn/radar-simulation/s
/usr/include/x86_64-linux-gnu/bits/waitflags.h \ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \ /usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \
@@ -430,6 +403,8 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o:
/lib64/ld-linux-x86-64.so.2: /lib64/ld-linux-x86-64.so.2:
/lib/x86_64-linux-gnu/libpng16.so.16:
/lib/x86_64-linux-gnu/libc.so.6: /lib/x86_64-linux-gnu/libc.so.6:
/lib/x86_64-linux-gnu/libbz2.so.1.0: /lib/x86_64-linux-gnu/libbz2.so.1.0:
@@ -470,27 +445,25 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o:
/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h: /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h:
/usr/include/x86_64-linux-gnu/bits/setjmp2.h: /usr/include/c++/15/bits/stl_algobase.h:
/usr/include/x86_64-linux-gnu/bits/sched.h: /usr/include/c++/15/clocale:
/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h: /usr/include/c++/15/bits/sstream.tcc:
/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: /usr/include/c++/15/bits/locale_facets.h:
/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h: /usr/include/c++/15/cstdlib:
/usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h: /usr/include/freetype2/freetype/ftmoderr.h:
/usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h: /usr/include/c++/15/bits/predefined_ops.h:
/usr/include/x86_64-linux-gnu/bits/iscanonical.h: /usr/include/c++/15/bits/postypes.h:
/usr/include/x86_64-linux-gnu/bits/wchar2.h: /usr/include/x86_64-linux-gnu/asm/posix_types.h:
/usr/include/x86_64-linux-gnu/bits/fp-logb.h:
/usr/include/c++/15/bits/ostream.tcc: /usr/include/c++/15/bits/ostream.tcc:
@@ -510,44 +483,32 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o:
/usr/include/c++/15/bits/locale_classes.tcc: /usr/include/c++/15/bits/locale_classes.tcc:
/usr/include/x86_64-linux-gnu/bits/iscanonical.h:
/usr/include/c++/15/bits/functional_hash.h: /usr/include/c++/15/bits/functional_hash.h:
/usr/include/c++/15/ext/type_traits.h: /usr/include/c++/15/ext/type_traits.h:
/usr/include/c++/15/bits/predefined_ops.h: /usr/include/c++/15/bits/stl_algo.h:
/usr/include/c++/15/bits/cxxabi_forced.h: /usr/include/c++/15/bits/cxxabi_forced.h:
/usr/include/c++/15/bits/chrono.h:
/usr/include/c++/15/bits/nested_exception.h:
/usr/include/linux/sched/types.h:
/usr/include/x86_64-linux-gnu/sys/types.h: /usr/include/x86_64-linux-gnu/sys/types.h:
/lib/x86_64-linux-gnu/libm.so.6: /lib/x86_64-linux-gnu/libm.so.6:
/usr/include/c++/15/bits/char_traits.h: /usr/include/c++/15/bits/char_traits.h:
/usr/include/x86_64-linux-gnu/bits/locale.h:
/usr/include/c++/15/bits/basic_ios.h:
/usr/include/c++/15/tr1/modified_bessel_func.tcc: /usr/include/c++/15/tr1/modified_bessel_func.tcc:
/usr/include/linux/limits.h: /usr/include/linux/limits.h:
/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
/usr/include/c++/15/bits/ios_base.h: /usr/include/c++/15/bits/ios_base.h:
/usr/include/c++/15/bits/alloc_traits.h: /usr/include/c++/15/bits/alloc_traits.h:
/usr/include/x86_64-linux-gnu/bits/math-vector.h:
/usr/include/c++/15/bits/hash_bytes.h:
/usr/include/c++/15/algorithm:
/usr/lib/gcc/x86_64-linux-gnu/15/crtbeginS.o: /usr/lib/gcc/x86_64-linux-gnu/15/crtbeginS.o:
/usr/include/c++/15/bits/range_access.h: /usr/include/c++/15/bits/range_access.h:
@@ -582,55 +543,39 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o:
/usr/include/setjmp.h: /usr/include/setjmp.h:
/usr/include/c++/15/bits/std_abs.h:
/usr/include/c++/15/typeinfo:
/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
/usr/include/x86_64-linux-gnu/gnu/stubs.h: /usr/include/x86_64-linux-gnu/gnu/stubs.h:
/usr/include/x86_64-linux-gnu/bits/endian.h: /usr/include/x86_64-linux-gnu/bits/endian.h:
/usr/lib/gcc/x86_64-linux-gnu/15/crtendS.o:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/c++/15/ext/string_conversions.h:
/usr/include/x86_64-linux-gnu/bits/wordsize.h: /usr/include/x86_64-linux-gnu/bits/wordsize.h:
/usr/include/c++/15/pstl/execution_defs.h: /usr/include/c++/15/pstl/execution_defs.h:
/usr/include/x86_64-linux-gnu/bits/wchar.h: /usr/include/x86_64-linux-gnu/bits/stdint-least.h:
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: /usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/usr/include/c++/15/bits/ostream_insert.h: /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h:
/usr/include/x86_64-linux-gnu/bits/errno.h:
/usr/lib/x86_64-linux-gnu/crtn.o:
/usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: /usr/include/x86_64-linux-gnu/bits/uintn-identity.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: /usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
/usr/include/stdc-predef.h: /usr/include/x86_64-linux-gnu/bits/wchar.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h: /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h:
/usr/include/c++/15/system_error:
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/include/x86_64-linux-gnu/bits/stdlib.h:
/usr/include/c++/15/bits/stl_uninitialized.h:
/usr/include/x86_64-linux-gnu/asm/errno.h:
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h:
/lib/x86_64-linux-gnu/libpng16.so.16:
/usr/include/x86_64-linux-gnu/bits/select-decl.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/freetype2/freetype/fttypes.h:
/usr/include/locale.h:
/usr/include/c++/15/bits/algorithmfwd.h: /usr/include/c++/15/bits/algorithmfwd.h:
@@ -644,14 +589,6 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o:
/usr/include/x86_64-linux-gnu/bits/endianness.h: /usr/include/x86_64-linux-gnu/bits/endianness.h:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/stdint.h:
/usr/include/endian.h:
/usr/include/c++/15/cmath:
/usr/include/c++/15/bits/cpp_type_traits.h: /usr/include/c++/15/bits/cpp_type_traits.h:
/usr/include/c++/15/bits/basic_string.h: /usr/include/c++/15/bits/basic_string.h:
@@ -660,10 +597,16 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o:
/usr/include/c++/15/bits/concept_check.h: /usr/include/c++/15/bits/concept_check.h:
/usr/include/x86_64-linux-gnu/bits/wchar2-decl.h:
/usr/include/c++/15/bits/version.h: /usr/include/c++/15/bits/version.h:
/usr/include/stdc-predef.h:
/usr/include/x86_64-linux-gnu/bits/typesizes.h:
/usr/include/c++/15/backward/binders.h:
/usr/include/c++/15/bits/specfun.h:
/usr/include/x86_64-linux-gnu/bits/floatn.h: /usr/include/x86_64-linux-gnu/bits/floatn.h:
/usr/include/c++/15/bits/istream.tcc: /usr/include/c++/15/bits/istream.tcc:
@@ -700,15 +643,19 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o:
/usr/include/c++/15/bits/uses_allocator.h: /usr/include/c++/15/bits/uses_allocator.h:
/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h:
/home/maallyn/radar-simulation/glad/src/glad.c: /home/maallyn/radar-simulation/glad/src/glad.c:
/usr/include/x86_64-linux-gnu/bits/select2.h: /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h:
/usr/include/c++/15/ext/alloc_traits.h: /usr/include/string.h:
/usr/include/linux/types.h: /usr/include/c++/15/bits/stl_function.h:
/usr/include/c++/15/cwchar:
/usr/include/c++/15/bits/requires_hosted.h:
/usr/include/dlfcn.h:
/lib/x86_64-linux-gnu/libmvec.so.1: /lib/x86_64-linux-gnu/libmvec.so.1:
@@ -718,12 +665,22 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o:
/usr/include/freetype2/freetype/config/mac-support.h: /usr/include/freetype2/freetype/config/mac-support.h:
/usr/include/c++/15/tr1/gamma.tcc:
/usr/lib/gcc/x86_64-linux-gnu/15/include/stdarg.h:
/usr/include/c++/15/bits/locale_facets.tcc: /usr/include/c++/15/bits/locale_facets.tcc:
/usr/include/ctype.h: /usr/include/ctype.h:
/usr/include/features.h: /usr/include/features.h:
/usr/include/x86_64-linux-gnu/bits/types/FILE.h:
/usr/include/x86_64-linux-gnu/bits/timex.h:
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:
/usr/include/c++/15/bits/exception_ptr.h: /usr/include/c++/15/bits/exception_ptr.h:
@@ -738,6 +695,10 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o:
/usr/include/pthread.h: /usr/include/pthread.h:
/usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/time64.h: /usr/include/x86_64-linux-gnu/bits/time64.h:
/usr/include/freetype2/freetype/config/ftconfig.h: /usr/include/freetype2/freetype/config/ftconfig.h:
@@ -752,6 +713,8 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/c++/15/bits/invoke.h: /usr/include/c++/15/bits/invoke.h:
/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h:
/usr/include/c++/15/bits/memoryfwd.h: /usr/include/c++/15/bits/memoryfwd.h:
/usr/include/freetype2/freetype/ftsystem.h: /usr/include/freetype2/freetype/ftsystem.h:
@@ -764,6 +727,10 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/c++/15/bits/stringfwd.h: /usr/include/c++/15/bits/stringfwd.h:
/usr/include/c++/15/bits/ostream_insert.h:
/usr/include/x86_64-linux-gnu/bits/errno.h:
/usr/include/features-time64.h: /usr/include/features-time64.h:
/usr/include/c++/15/bits/uniform_int_dist.h: /usr/include/c++/15/bits/uniform_int_dist.h:
@@ -776,41 +743,29 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/c++/15/bits/codecvt.h: /usr/include/c++/15/bits/codecvt.h:
/usr/include/string.h: /usr/include/x86_64-linux-gnu/bits/mathcalls-macros.h:
/usr/include/c++/15/bits/stl_function.h: /usr/include/c++/15/bits/refwrap.h:
/usr/include/c++/15/cwchar: /usr/include/c++/15/type_traits:
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: /usr/include/stdint.h:
/usr/include/x86_64-linux-gnu/bits/stdint-least.h: /usr/include/endian.h:
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: /usr/include/c++/15/cmath:
/usr/include/x86_64-linux-gnu/bits/types/FILE.h: /usr/include/x86_64-linux-gnu/bits/types/timer_t.h:
/usr/include/x86_64-linux-gnu/bits/timex.h: /usr/include/c++/15/bits/basic_ios.tcc:
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: /usr/include/c++/15/system_error:
/usr/include/c++/15/tr1/gamma.tcc: /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h:
/usr/lib/gcc/x86_64-linux-gnu/15/include/stdarg.h: /usr/include/c++/15/bits/stl_uninitialized.h:
/usr/include/x86_64-linux-gnu/bits/stdio2.h: /usr/include/x86_64-linux-gnu/asm/errno.h:
/usr/include/c++/15/bits/locale_facets.h:
/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h:
/usr/include/dlfcn.h:
/usr/include/c++/15/bits/requires_hosted.h:
/usr/include/c++/15/cstdlib:
/usr/include/freetype2/freetype/ftmoderr.h:
/usr/include/stdio.h: /usr/include/stdio.h:
@@ -820,61 +775,27 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/c++/15/tr1/exp_integral.tcc: /usr/include/c++/15/tr1/exp_integral.tcc:
/usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h:
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h:
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
/usr/lib/gcc/x86_64-linux-gnu/15/crtendS.o:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
/usr/include/c++/15/ext/string_conversions.h:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:
/usr/include/c++/15/bits/basic_ios.tcc:
/usr/include/c++/15/backward/binders.h:
/usr/include/c++/15/bits/specfun.h:
/usr/include/c++/15/bits/parse_numbers.h:
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/x86_64-linux-gnu/bits/byteswap.h: /usr/include/x86_64-linux-gnu/bits/byteswap.h:
/usr/include/freetype2/freetype/fterrors.h:
/usr/include/c++/15/concepts: /usr/include/c++/15/concepts:
/usr/include/freetype2/freetype/fterrors.h:
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h:
/usr/include/c++/15/istream: /usr/include/c++/15/istream:
/usr/include/x86_64-linux-gnu/bits/stdio.h: /usr/include/x86_64-linux-gnu/bits/types/clock_t.h:
/usr/include/c++/15/bits/postypes.h: /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/x86_64-linux-gnu/asm/posix_types.h: /usr/include/freetype2/freetype/fttypes.h:
/usr/include/c++/15/bits/refwrap.h: /usr/include/locale.h:
/usr/include/c++/15/type_traits: /usr/lib/x86_64-linux-gnu/crtn.o:
/usr/include/c++/15/bits/sstream.tcc: /usr/include/x86_64-linux-gnu/bits/waitflags.h:
/usr/include/c++/15/bits/std_abs.h:
/usr/include/c++/15/typeinfo:
/usr/include/c++/15/bits/stl_algo.h:
/usr/include/c++/15/bits/stl_algobase.h:
/usr/include/c++/15/clocale:
/usr/include/c++/15/bits/stl_iterator.h: /usr/include/c++/15/bits/stl_iterator.h:
@@ -898,12 +819,6 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/c++/15/bits/stl_iterator_base_types.h: /usr/include/c++/15/bits/stl_iterator_base_types.h:
/usr/include/x86_64-linux-gnu/bits/fp-fast.h:
/usr/include/c++/15/bits/stl_bvector.h:
/usr/include/c++/15/bits/stl_pair.h:
/usr/include/c++/15/cctype: /usr/include/c++/15/cctype:
/usr/include/c++/15/bits/stl_tempbuf.h: /usr/include/c++/15/bits/stl_tempbuf.h:
@@ -914,10 +829,6 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/c++/15/bits/stl_vector.h: /usr/include/c++/15/bits/stl_vector.h:
/usr/include/x86_64-linux-gnu/asm/types.h:
/usr/include/c++/15/cwctype:
/usr/include/c++/15/bits/basic_string.tcc: /usr/include/c++/15/bits/basic_string.tcc:
/usr/include/c++/15/bits/streambuf.tcc: /usr/include/c++/15/bits/streambuf.tcc:
@@ -936,10 +847,6 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/c++/15/cerrno: /usr/include/c++/15/cerrno:
/usr/include/c++/15/chrono:
/usr/include/c++/15/cstdint:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
/usr/include/c++/15/cstring: /usr/include/c++/15/cstring:
@@ -952,6 +859,10 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/c++/15/exception: /usr/include/c++/15/exception:
/usr/include/c++/15/ext/alloc_traits.h:
/usr/include/linux/types.h:
/usr/include/c++/15/ext/numeric_traits.h: /usr/include/c++/15/ext/numeric_traits.h:
/usr/include/c++/15/ios: /usr/include/c++/15/ios:
@@ -986,12 +897,8 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/c++/15/tr1/poly_hermite.tcc: /usr/include/c++/15/tr1/poly_hermite.tcc:
/usr/include/c++/15/ratio:
/usr/include/c++/15/stdexcept: /usr/include/c++/15/stdexcept:
/usr/include/c++/15/ctime:
/usr/include/c++/15/stdlib.h: /usr/include/c++/15/stdlib.h:
/usr/include/c++/15/string: /usr/include/c++/15/string:
@@ -1006,10 +913,10 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/c++/15/tr1/ell_integral.tcc: /usr/include/c++/15/tr1/ell_integral.tcc:
/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h:
/usr/include/c++/15/tr1/legendre_function.tcc: /usr/include/c++/15/tr1/legendre_function.tcc:
/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h:
/usr/include/c++/15/bits/charconv.h: /usr/include/c++/15/bits/charconv.h:
/usr/include/c++/15/pstl/glue_algorithm_defs.h: /usr/include/c++/15/pstl/glue_algorithm_defs.h:
@@ -1042,20 +949,16 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/freetype2/freetype/fterrdef.h: /usr/include/freetype2/freetype/fterrdef.h:
/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h:
/usr/include/freetype2/ft2build.h:
/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h:
/usr/include/linux/posix_types.h: /usr/include/linux/posix_types.h:
/usr/include/GLFW/glfw3.h: /usr/include/GLFW/glfw3.h:
/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h: /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h:
/usr/include/c++/15/bits/nested_exception.h:
/usr/include/linux/sched/types.h:
/usr/include/c++/15/bits/locale_classes.h: /usr/include/c++/15/bits/locale_classes.h:
/usr/include/linux/stddef.h: /usr/include/linux/stddef.h:
@@ -1068,6 +971,40 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/include/time.h: /usr/include/time.h:
/usr/include/c++/15/cwctype:
/usr/include/x86_64-linux-gnu/asm/types.h:
/usr/include/x86_64-linux-gnu/asm/posix_types_64.h: /usr/include/x86_64-linux-gnu/asm/posix_types_64.h:
/usr/include/x86_64-linux-gnu/bits/cpu-set.h: /usr/include/x86_64-linux-gnu/bits/cpu-set.h:
/usr/include/c++/15/bits/stl_bvector.h:
/usr/include/c++/15/bits/stl_pair.h:
/usr/include/x86_64-linux-gnu/bits/fp-fast.h:
/usr/include/x86_64-linux-gnu/bits/fp-logb.h:
/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h:
/usr/include/freetype2/ft2build.h:
/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
/usr/include/c++/15/bits/basic_ios.h:
/usr/include/x86_64-linux-gnu/bits/locale.h:
/usr/include/c++/15/bits/hash_bytes.h:
/usr/include/c++/15/algorithm:
/usr/include/x86_64-linux-gnu/bits/math-vector.h:
/usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
/usr/include/x86_64-linux-gnu/bits/sched.h:

View File

@@ -1,4 +1,4 @@
CMAKE_PROGRESS_1 = 1 CMAKE_PROGRESS_1 = 2
CMAKE_PROGRESS_2 = 2 CMAKE_PROGRESS_2 = 3
CMAKE_PROGRESS_3 = 3 CMAKE_PROGRESS_3 = 4

View File

@@ -233,9 +233,6 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: \
/usr/include/x86_64-linux-gnu/c++/15/bits/c++io.h \ /usr/include/x86_64-linux-gnu/c++/15/bits/c++io.h \
/usr/include/c++/15/bits/fstream.tcc /usr/include/c++/15/sstream \ /usr/include/c++/15/bits/fstream.tcc /usr/include/c++/15/sstream \
/usr/include/c++/15/bits/sstream.tcc /usr/include/c++/15/iostream \ /usr/include/c++/15/bits/sstream.tcc /usr/include/c++/15/iostream \
/usr/include/c++/15/chrono /usr/include/c++/15/bits/chrono.h \
/usr/include/c++/15/ratio /usr/include/c++/15/cstdint \
/usr/include/c++/15/ctime /usr/include/c++/15/bits/parse_numbers.h \
/usr/include/c++/15/algorithm /usr/include/c++/15/bits/stl_algo.h \ /usr/include/c++/15/algorithm /usr/include/c++/15/bits/stl_algo.h \
/usr/include/c++/15/bits/algorithmfwd.h \ /usr/include/c++/15/bits/algorithmfwd.h \
/usr/include/c++/15/bits/stl_heap.h \ /usr/include/c++/15/bits/stl_heap.h \

View File

@@ -129,6 +129,19 @@ radar_simulation/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/radar_simulation.dir/build.make CMakeFiles/radar_simulation.dir/build $(MAKE) $(MAKESILENT) -f CMakeFiles/radar_simulation.dir/build.make CMakeFiles/radar_simulation.dir/build
.PHONY : radar_simulation/fast .PHONY : radar_simulation/fast
#=============================================================================
# Target rules for targets named copy_shaders
# Build rule for target.
copy_shaders: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 copy_shaders
.PHONY : copy_shaders
# fast build rule for target.
copy_shaders/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/copy_shaders.dir/build.make CMakeFiles/copy_shaders.dir/build
.PHONY : copy_shaders/fast
glad/src/glad.o: glad/src/glad.c.o glad/src/glad.o: glad/src/glad.c.o
.PHONY : glad/src/glad.o .PHONY : glad/src/glad.o
@@ -185,6 +198,7 @@ help:
@echo "... depend" @echo "... depend"
@echo "... edit_cache" @echo "... edit_cache"
@echo "... rebuild_cache" @echo "... rebuild_cache"
@echo "... copy_shaders"
@echo "... radar_simulation" @echo "... radar_simulation"
@echo "... glad/src/glad.o" @echo "... glad/src/glad.o"
@echo "... glad/src/glad.i" @echo "... glad/src/glad.i"

Binary file not shown.

View File

@@ -0,0 +1,6 @@
#version 330 core
uniform vec3 uColor;
out vec4 FragColor;
void main() {
FragColor = vec4(uColor, 1.0);
}

View File

@@ -0,0 +1,6 @@
#version 330 core
layout(location = 0) in vec2 aPos;
uniform float uYOffset;
void main() {
gl_Position = vec4(aPos.x, aPos.y + uYOffset, 0.0, 1.0);
}

View File

@@ -0,0 +1,9 @@
#version 330 core
in vec2 vUV;
uniform sampler2D uTexture;
uniform vec3 uColor;
out vec4 FragColor;
void main() {
float alpha = texture(uTexture, vUV).r;
FragColor = vec4(uColor, alpha);
}

View File

@@ -0,0 +1,9 @@
#version 330 core
layout(location = 0) in vec2 aPos;
layout(location = 1) in vec2 aUV;
uniform float uYOffset;
out vec2 vUV;
void main() {
gl_Position = vec4(aPos.x, aPos.y + uYOffset, 0.0, 1.0);
vUV = aUV;
}

View File

@@ -0,0 +1,6 @@
#version 330 core
in vec3 vColor;
out vec4 fragColor;
void main() {
fragColor = vec4(vColor, 1.0);
}

View File

@@ -0,0 +1,8 @@
#version 330 core
layout(location = 0) in vec2 aPos;
layout(location = 1) in vec3 aColor;
out vec3 vColor;
void main() {
gl_Position = vec4(aPos, 0.0, 1.0);
vColor = aColor;
}

View File

@@ -0,0 +1,11 @@
#version 330 core
in vec2 vUV; // [-1,1] range — distance from blob centre
out vec4 fragColor;
uniform vec3 uColor;
uniform float uFalloff; // gaussian width: larger = tighter core
void main() {
float d = length(vUV);
if (d > 1.0) discard;
float intensity = exp(-uFalloff * d * d);
fragColor = vec4(uColor * intensity, intensity);
}

View File

@@ -0,0 +1,8 @@
#version 330 core
layout(location = 0) in vec2 aPos;
layout(location = 1) in vec2 aUV;
out vec2 vUV;
void main() {
gl_Position = vec4(aPos, 0.0, 1.0);
vUV = aUV;
}

View File

@@ -1,7 +1,9 @@
// Radar Simulation — Feature Test: 1 & 2 // Radar Simulation — Feature Test: 1, 2 & 3
// Feature 1: Initialize display, draw scope boundaries (PPI circle, A scope box) // Feature 1: Initialize display, draw scope boundaries (PPI circle, A scope box)
// Feature 2: PPI bearing ring with tick marks and degree labels // Feature 2: PPI bearing ring with tick marks and degree labels
// Runs for 10 seconds then exits. Press ESC to exit early. // Feature 3: Replaceable A scope graticule — cycles through 2/5/10/15 mi ranges,
// 5 s hold per range, 0.5 s slide animation between ranges.
// Press ESC to exit.
#include <glad/glad.h> #include <glad/glad.h>
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
@@ -15,7 +17,6 @@
#include <fstream> #include <fstream>
#include <sstream> #include <sstream>
#include <iostream> #include <iostream>
#include <chrono>
#include <algorithm> #include <algorithm>
#include <cstring> #include <cstring>
@@ -24,12 +25,12 @@
static constexpr float PI = 3.14159265358979323846f; static constexpr float PI = 3.14159265358979323846f;
static constexpr int CIRCLE_SEGS = 360; static constexpr int CIRCLE_SEGS = 360;
// Incandescent (warm lamp) — bearing graticule // Incandescent (warm lamp) — bearing graticule and A scope graticule
static constexpr float INCAN_R = 1.00f; static constexpr float INCAN_R = 1.00f;
static constexpr float INCAN_G = 0.78f; static constexpr float INCAN_G = 0.78f;
static constexpr float INCAN_B = 0.35f; static constexpr float INCAN_B = 0.35f;
// P1 phosphor (green) — A scope // P1 phosphor (green) — A scope boundary
static constexpr float P1_R = 0.00f; static constexpr float P1_R = 0.00f;
static constexpr float P1_G = 0.90f; static constexpr float P1_G = 0.90f;
static constexpr float P1_B = 0.20f; static constexpr float P1_B = 0.20f;
@@ -38,6 +39,21 @@ static constexpr float P1_B = 0.20f;
static constexpr int GLYPH_FIRST = '0'; static constexpr int GLYPH_FIRST = '0';
static constexpr int GLYPH_COUNT = 10; static constexpr int GLYPH_COUNT = 10;
// Feature 3 timing
static constexpr float HOLD_SEC = 5.0f;
static constexpr float SLIDE_SEC = 0.5f;
// P7 phosphor — active (blueish white) and persistence (greenish yellow)
static constexpr float P7A_R = 0.85f, P7A_G = 0.92f, P7A_B = 1.00f;
static constexpr float P7P_R = 0.35f, P7P_G = 0.88f, P7P_B = 0.18f;
// Sweep / persistence
static constexpr float SWEEP_DEG_PS = 20.0f * 6.0f; // 20 RPM → 120 °/s
static constexpr float TRAIL_DEG = 50.0f; // lit arc behind sweep (°)
static constexpr float TARG_PERSIST = 5.0f; // target glow lifetime (s)
static constexpr int RING_SEGS = 300;
static constexpr int TRAIL_SEGS = 50;
// ─── NDC helpers ───────────────────────────────────────────────────────────── // ─── NDC helpers ─────────────────────────────────────────────────────────────
static inline float ndcX(float px, float W) { return px / W * 2.0f - 1.0f; } static inline float ndcX(float px, float W) { return px / W * 2.0f - 1.0f; }
@@ -114,12 +130,12 @@ static void makeTextVAO(GLuint& vao, GLuint& vbo, const std::vector<float>& v)
// ─── FreeType font atlas ───────────────────────────────────────────────────── // ─── FreeType font atlas ─────────────────────────────────────────────────────
struct GlyphInfo { struct GlyphInfo {
int atlasX; // pixel x offset in atlas int atlasX;
int bitmapW; // rendered width int bitmapW;
int bitmapH; // rendered height int bitmapH;
int bearingX; // horizontal offset from cursor to left of bitmap int bearingX;
int bearingY; // vertical offset from baseline to top of bitmap int bearingY;
int advance; // horizontal advance in pixels int advance;
}; };
struct FontAtlas { struct FontAtlas {
@@ -143,12 +159,11 @@ static bool buildFontAtlas(FontAtlas& fa, const std::string& fontPath, int sizeP
} }
FT_Set_Pixel_Sizes(face, 0, sizePx); FT_Set_Pixel_Sizes(face, 0, sizePx);
// First pass — measure atlas dimensions
int totalW = 0, maxH = 0; int totalW = 0, maxH = 0;
for (int i = 0; i < GLYPH_COUNT; ++i) { for (int i = 0; i < GLYPH_COUNT; ++i) {
if (FT_Load_Char(face, GLYPH_FIRST + i, FT_LOAD_RENDER)) continue; if (FT_Load_Char(face, GLYPH_FIRST + i, FT_LOAD_RENDER)) continue;
FT_GlyphSlot g = face->glyph; FT_GlyphSlot g = face->glyph;
totalW += (int)g->bitmap.width + 2; // 2-pixel padding between glyphs totalW += (int)g->bitmap.width + 2;
maxH = std::max(maxH, (int)g->bitmap.rows); maxH = std::max(maxH, (int)g->bitmap.rows);
} }
@@ -156,7 +171,6 @@ static bool buildFontAtlas(FontAtlas& fa, const std::string& fontPath, int sizeP
fa.atlasH = maxH; fa.atlasH = maxH;
std::vector<uint8_t> atlas(fa.atlasW * fa.atlasH, 0); std::vector<uint8_t> atlas(fa.atlasW * fa.atlasH, 0);
// Second pass — render each glyph into the atlas
int xOff = 0; int xOff = 0;
for (int i = 0; i < GLYPH_COUNT; ++i) { for (int i = 0; i < GLYPH_COUNT; ++i) {
if (FT_Load_Char(face, GLYPH_FIRST + i, FT_LOAD_RENDER)) continue; if (FT_Load_Char(face, GLYPH_FIRST + i, FT_LOAD_RENDER)) continue;
@@ -178,7 +192,6 @@ static bool buildFontAtlas(FontAtlas& fa, const std::string& fontPath, int sizeP
xOff += gi.bitmapW + 2; xOff += gi.bitmapW + 2;
} }
// Upload atlas as single-channel (RED) texture
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(1, &fa.texture); glGenTextures(1, &fa.texture);
glBindTexture(GL_TEXTURE_2D, fa.texture); glBindTexture(GL_TEXTURE_2D, fa.texture);
@@ -188,7 +201,7 @@ static bool buildFontAtlas(FontAtlas& fa, const std::string& fontPath, int sizeP
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0); glBindTexture(GL_TEXTURE_2D, 0);
glPixelStorei(GL_UNPACK_ALIGNMENT, 4); // restore default glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
FT_Done_Face(face); FT_Done_Face(face);
FT_Done_FreeType(ft); FT_Done_FreeType(ft);
@@ -196,17 +209,16 @@ static bool buildFontAtlas(FontAtlas& fa, const std::string& fontPath, int sizeP
} }
// Append NDC quad vertices for string s, visually centered at screen pixel (cx, cy). // Append NDC quad vertices for string s, visually centered at screen pixel (cx, cy).
// Only digits '0''9' are supported (sufficient for 0..350 degree labels). // Only digits '0''9' are supported.
static void appendTextQuads(std::vector<float>& verts, const FontAtlas& fa, static void appendTextQuads(std::vector<float>& verts, const FontAtlas& fa,
const std::string& s, float cx, float cy, const std::string& s, float cx, float cy,
float W, float H) float W, float H)
{ {
if (s.empty()) return; if (s.empty()) return;
// Measure total advance and vertical extent
float totalAdv = 0.0f; float totalAdv = 0.0f;
int maxBY = 0; // highest bearingY (top above baseline) int maxBY = 0;
int minBY = 0; // lowest (bearingY - bitmapH), typically <= 0 int minBY = 0;
for (char c : s) { for (char c : s) {
int i = (int)c - GLYPH_FIRST; int i = (int)c - GLYPH_FIRST;
@@ -217,9 +229,8 @@ static void appendTextQuads(std::vector<float>& verts, const FontAtlas& fa,
minBY = std::min(minBY, g.bearingY - g.bitmapH); minBY = std::min(minBY, g.bearingY - g.bitmapH);
} }
// Position baseline so the visual center of the glyphs sits at (cx, cy)
float visualCenterAboveBaseline = (maxBY + minBY) * 0.5f; float visualCenterAboveBaseline = (maxBY + minBY) * 0.5f;
float baselineY = cy + visualCenterAboveBaseline; // screen y (y-down) float baselineY = cy + visualCenterAboveBaseline;
float cursorX = cx - totalAdv * 0.5f; float cursorX = cx - totalAdv * 0.5f;
for (char c : s) { for (char c : s) {
@@ -227,27 +238,19 @@ static void appendTextQuads(std::vector<float>& verts, const FontAtlas& fa,
if (i < 0 || i >= GLYPH_COUNT) continue; if (i < 0 || i >= GLYPH_COUNT) continue;
const GlyphInfo& g = fa.glyphs[i]; const GlyphInfo& g = fa.glyphs[i];
// Glyph bounding box in screen pixel space (y increases downward)
float gx0 = cursorX + g.bearingX; float gx0 = cursorX + g.bearingX;
float gy0 = baselineY - g.bearingY; // top edge float gy0 = baselineY - g.bearingY;
float gx1 = gx0 + g.bitmapW; float gx1 = gx0 + g.bitmapW;
float gy1 = gy0 + g.bitmapH; // bottom edge float gy1 = gy0 + g.bitmapH;
// Atlas UV:
// GL uploads atlas row 0 as texture bottom (t = 0).
// Atlas row 0 is the TOP of the glyph bitmap.
// Screen top vertex (gy0) → t = 0 → samples glyph top ✓
// Screen bottom vertex (gy1) → t = v1 → samples glyph bottom ✓
float u0 = (float) g.atlasX / fa.atlasW; float u0 = (float) g.atlasX / fa.atlasW;
float u1 = (float)(g.atlasX + g.bitmapW)/ fa.atlasW; float u1 = (float)(g.atlasX + g.bitmapW)/ fa.atlasW;
float v0 = 0.0f; float v0 = 0.0f;
float v1 = (float) g.bitmapH / fa.atlasH; float v1 = (float) g.bitmapH / fa.atlasH;
// Triangle 1: TL, TR, BR
verts.push_back(ndcX(gx0,W)); verts.push_back(ndcY(gy0,H)); verts.push_back(u0); verts.push_back(v0); verts.push_back(ndcX(gx0,W)); verts.push_back(ndcY(gy0,H)); verts.push_back(u0); verts.push_back(v0);
verts.push_back(ndcX(gx1,W)); verts.push_back(ndcY(gy0,H)); verts.push_back(u1); verts.push_back(v0); verts.push_back(ndcX(gx1,W)); verts.push_back(ndcY(gy0,H)); verts.push_back(u1); verts.push_back(v0);
verts.push_back(ndcX(gx1,W)); verts.push_back(ndcY(gy1,H)); verts.push_back(u1); verts.push_back(v1); verts.push_back(ndcX(gx1,W)); verts.push_back(ndcY(gy1,H)); verts.push_back(u1); verts.push_back(v1);
// Triangle 2: TL, BR, BL
verts.push_back(ndcX(gx0,W)); verts.push_back(ndcY(gy0,H)); verts.push_back(u0); verts.push_back(v0); verts.push_back(ndcX(gx0,W)); verts.push_back(ndcY(gy0,H)); verts.push_back(u0); verts.push_back(v0);
verts.push_back(ndcX(gx1,W)); verts.push_back(ndcY(gy1,H)); verts.push_back(u1); verts.push_back(v1); verts.push_back(ndcX(gx1,W)); verts.push_back(ndcY(gy1,H)); verts.push_back(u1); verts.push_back(v1);
verts.push_back(ndcX(gx0,W)); verts.push_back(ndcY(gy1,H)); verts.push_back(u0); verts.push_back(v1); verts.push_back(ndcX(gx0,W)); verts.push_back(ndcY(gy1,H)); verts.push_back(u0); verts.push_back(v1);
@@ -259,22 +262,20 @@ static void appendTextQuads(std::vector<float>& verts, const FontAtlas& fa,
// ─── Layout ────────────────────────────────────────────────────────────────── // ─── Layout ──────────────────────────────────────────────────────────────────
struct Layout { struct Layout {
float ppiCX, ppiCY, ppiR; // PPI scope center and radius (pixels) float ppiCX, ppiCY, ppiR;
float asLeft, asTop, asRight, asBot; // A scope rectangle (pixels) float asLeft, asTop, asRight, asBot;
}; };
static Layout computeLayout(float W, float H, float marginPx) static Layout computeLayout(float W, float H, float marginPx)
{ {
Layout L{}; Layout L{};
// PPI: right half of screen; margins top/bottom/right = marginPx, left = screen centre
float availW = (W - marginPx) - W * 0.5f; float availW = (W - marginPx) - W * 0.5f;
float availH = (H - marginPx) - marginPx; float availH = (H - marginPx) - marginPx;
L.ppiR = std::min(availW, availH) * 0.5f; L.ppiR = std::min(availW, availH) * 0.5f;
L.ppiCX = W * 0.5f + availW * 0.5f; L.ppiCX = W * 0.5f + availW * 0.5f;
L.ppiCY = marginPx + availH * 0.5f; L.ppiCY = marginPx + availH * 0.5f;
// A scope: left half, smaller, centred vertically, near left margin
float asW = (W * 0.5f - 2.0f * marginPx) * 0.65f; float asW = (W * 0.5f - 2.0f * marginPx) * 0.65f;
float asH = H * 0.22f; float asH = H * 0.22f;
L.asLeft = marginPx; L.asLeft = marginPx;
@@ -298,7 +299,6 @@ static ScopeBounds buildScopeBounds(const Layout& L, float W, float H)
ScopeBounds sb{}; ScopeBounds sb{};
std::vector<float> v; std::vector<float> v;
// PPI circle (LINE_STRIP, CIRCLE_SEGS+1 verts — last = first, closes the loop)
sb.ppiStart = 0; sb.ppiStart = 0;
sb.ppiCount = CIRCLE_SEGS + 1; sb.ppiCount = CIRCLE_SEGS + 1;
for (int i = 0; i <= CIRCLE_SEGS; ++i) { for (int i = 0; i <= CIRCLE_SEGS; ++i) {
@@ -307,17 +307,16 @@ static ScopeBounds buildScopeBounds(const Layout& L, float W, float H)
v.push_back(ndcY(L.ppiCY + L.ppiR * std::sin(a), H)); v.push_back(ndcY(L.ppiCY + L.ppiR * std::sin(a), H));
} }
// A scope box (4 × GL_LINES = 8 verts)
sb.asStart = sb.ppiStart + sb.ppiCount; sb.asStart = sb.ppiStart + sb.ppiCount;
sb.asCount = 8; sb.asCount = 8;
auto ln = [&](float x1, float y1, float x2, float y2) { auto ln = [&](float x1, float y1, float x2, float y2) {
v.push_back(ndcX(x1,W)); v.push_back(ndcY(y1,H)); v.push_back(ndcX(x1,W)); v.push_back(ndcY(y1,H));
v.push_back(ndcX(x2,W)); v.push_back(ndcY(y2,H)); v.push_back(ndcX(x2,W)); v.push_back(ndcY(y2,H));
}; };
ln(L.asLeft, L.asTop, L.asRight, L.asTop); // top edge ln(L.asLeft, L.asTop, L.asRight, L.asTop);
ln(L.asRight, L.asTop, L.asRight, L.asBot); // right edge ln(L.asRight, L.asTop, L.asRight, L.asBot);
ln(L.asRight, L.asBot, L.asLeft, L.asBot); // bottom edge ln(L.asRight, L.asBot, L.asLeft, L.asBot);
ln(L.asLeft, L.asBot, L.asLeft, L.asTop); // left edge ln(L.asLeft, L.asBot, L.asLeft, L.asTop);
makeLineVAO(sb.vao, sb.vbo, v); makeLineVAO(sb.vao, sb.vbo, v);
sb.prog = makeProgram("shaders/scope_bounds.vert", "shaders/scope_bounds.frag"); sb.prog = makeProgram("shaders/scope_bounds.vert", "shaders/scope_bounds.frag");
@@ -342,10 +341,8 @@ static BearingGraticule buildBearingGraticule(const Layout& L, const FontAtlas&
BearingGraticule bg{}; BearingGraticule bg{};
const float cx = L.ppiCX, cy = L.ppiCY, R = L.ppiR; const float cx = L.ppiCX, cy = L.ppiCY, R = L.ppiR;
// ── Line geometry (ring + ticks) ──────────────────────────────────────────
std::vector<float> lineV; std::vector<float> lineV;
// Bearing ring circle (LINE_STRIP, closed)
bg.ringStart = 0; bg.ringStart = 0;
bg.ringCount = CIRCLE_SEGS + 1; bg.ringCount = CIRCLE_SEGS + 1;
for (int i = 0; i <= CIRCLE_SEGS; ++i) { for (int i = 0; i <= CIRCLE_SEGS; ++i) {
@@ -354,10 +351,6 @@ static BearingGraticule buildBearingGraticule(const Layout& L, const FontAtlas&
lineV.push_back(ndcY(cy + R * std::sin(a), H)); lineV.push_back(ndcY(cy + R * std::sin(a), H));
} }
// Tick marks: every 1 degree, longer every 10 degrees
// Radar convention: 0° = top (north), increasing clockwise
// screen_x = cx + R * sin(bearing_rad)
// screen_y = cy - R * cos(bearing_rad)
const float majorLen = 0.055f * R; const float majorLen = 0.055f * R;
const float minorLen = 0.025f * R; const float minorLen = 0.025f * R;
bg.tickStart = bg.ringStart + bg.ringCount; bg.tickStart = bg.ringStart + bg.ringCount;
@@ -367,19 +360,16 @@ static BearingGraticule buildBearingGraticule(const Layout& L, const FontAtlas&
float sb = std::sin(brad); float sb = std::sin(brad);
float cb = std::cos(brad); float cb = std::cos(brad);
float len = (b % 10 == 0) ? majorLen : minorLen; float len = (b % 10 == 0) ? majorLen : minorLen;
// Outer point (on the ring)
lineV.push_back(ndcX(cx + R * sb, W)); lineV.push_back(ndcX(cx + R * sb, W));
lineV.push_back(ndcY(cy - R * cb, H)); lineV.push_back(ndcY(cy - R * cb, H));
// Inner point
lineV.push_back(ndcX(cx + (R-len) * sb, W)); lineV.push_back(ndcX(cx + (R-len) * sb, W));
lineV.push_back(ndcY(cy - (R-len) * cb, H)); lineV.push_back(ndcY(cy - (R-len) * cb, H));
} }
makeLineVAO(bg.lineVAO, bg.lineVBO, lineV); makeLineVAO(bg.lineVAO, bg.lineVBO, lineV);
// ── Text geometry (degree labels every 10°) ────────────────────────────────
std::vector<float> textV; std::vector<float> textV;
const float textR = R * 1.07f; // label-centre radius (just outside the ring) const float textR = R * 1.07f;
for (int b = 0; b < 360; b += 10) { for (int b = 0; b < 360; b += 10) {
float brad = b * PI / 180.0f; float brad = b * PI / 180.0f;
float tx = cx + textR * std::sin(brad); float tx = cx + textR * std::sin(brad);
@@ -396,6 +386,371 @@ static BearingGraticule buildBearingGraticule(const Layout& L, const FontAtlas&
return bg; return bg;
} }
// ─── Feature 3: A scope replaceable graticule ────────────────────────────────
// One entry per selectable range. The graticule has numMajor labeled ticks
// (full-height vertical lines) and numMinorPerMajor minor ticks between each
// pair of major ticks. Label values are computed as (m * maxMiles / numMajor).
struct RangeConfig {
float maxMiles;
int numMajor;
int numMinorPerMajor;
};
static const RangeConfig RANGE_CONFIGS[4] = {
{ 2.0f, 2, 4 }, // labels: 1, 2 mi
{ 5.0f, 5, 1 }, // labels: 1,2,3,4,5 mi
{ 10.0f, 5, 1 }, // labels: 2,4,6,8,10 mi
{ 15.0f, 5, 2 }, // labels: 3,6,9,12,15 mi
};
static constexpr int RANGE_COUNT = 4;
struct AScopeGraticule {
GLuint lineVAO = 0, lineVBO = 0;
GLuint textVAO = 0, textVBO = 0;
int lineCount = 0;
int textVerts = 0;
};
// Shared shader programs for all A scope graticules (uYOffset drives animation)
struct AScopeGratProg {
GLuint line = 0;
GLuint text = 0;
};
static AScopeGratProg buildAScopeGratPrograms()
{
return {
makeProgram("shaders/ascope_graticule.vert",
"shaders/ascope_graticule.frag"),
makeProgram("shaders/ascope_graticule_text.vert",
"shaders/ascope_graticule_text.frag")
};
}
static AScopeGraticule buildAScopeGraticule(
const Layout& L, const FontAtlas& fa, const RangeConfig& rc,
float W, float H)
{
AScopeGraticule ag{};
const float asH = L.asBot - L.asTop;
const float pad = 4.0f;
const float gx0 = L.asLeft + pad; // signal area left
const float gx1 = L.asRight - pad; // signal area right
const float gy0 = L.asTop + pad; // top of signal area
const float gy1 = L.asTop + asH * 0.80f; // baseline (signal y = 0)
const float sigW = gx1 - gx0;
const float sigH = gy1 - gy0;
std::vector<float> lineV;
auto ln = [&](float x1, float y1, float x2, float y2) {
lineV.push_back(ndcX(x1,W)); lineV.push_back(ndcY(y1,H));
lineV.push_back(ndcX(x2,W)); lineV.push_back(ndcY(y2,H));
};
// Outer frame (the physical glass plate border)
ln(L.asLeft, L.asTop, L.asRight, L.asTop);
ln(L.asRight, L.asTop, L.asRight, L.asBot);
ln(L.asRight, L.asBot, L.asLeft, L.asBot);
ln(L.asLeft, L.asBot, L.asLeft, L.asTop);
// Baseline and top amplitude reference
ln(gx0, gy1, gx1, gy1);
ln(gx0, gy0, gx1, gy0);
// Horizontal amplitude guide lines at 25 %, 50 %, 75 %
for (int i = 1; i <= 3; ++i)
ln(gx0, gy0 + sigH * i * 0.25f, gx1, gy0 + sigH * i * 0.25f);
// Vertical tick marks
const float majorSpan = sigW / rc.numMajor;
const float minorSpan = majorSpan / (rc.numMinorPerMajor + 1);
const float minorTickH = sigH * 0.35f;
for (int m = 0; m < rc.numMajor; ++m) {
// Major tick (full signal height) at right edge of each interval
float xMaj = gx0 + (m + 1) * majorSpan;
ln(xMaj, gy1, xMaj, gy0);
// Minor ticks between this major and the next
float xBase = gx0 + m * majorSpan;
for (int n = 1; n <= rc.numMinorPerMajor; ++n) {
float xMin = xBase + n * minorSpan;
ln(xMin, gy1, xMin, gy1 - minorTickH);
}
}
ag.lineCount = (int)lineV.size() / 2;
makeLineVAO(ag.lineVAO, ag.lineVBO, lineV);
// Range labels at each major tick (whole-number miles, centred in label area)
std::vector<float> textV;
const float labelY = L.asTop + asH * 0.90f;
const float milesPerMajor = rc.maxMiles / rc.numMajor;
for (int m = 1; m <= rc.numMajor; ++m) {
float x = gx0 + m * majorSpan;
int labelMi = (int)std::round(m * milesPerMajor);
appendTextQuads(textV, fa, std::to_string(labelMi), x, labelY, W, H);
}
ag.textVerts = (int)textV.size() / 4;
makeTextVAO(ag.textVAO, ag.textVBO, textV);
return ag;
}
// Draw one graticule with a vertical NDC offset (positive = up on screen).
// glScissor clips to the A scope box so the slide animation looks like the
// graticule is being pulled out / pushed in through a slot at the top.
static void drawAScopeGraticule(
const AScopeGratProg& prog, const AScopeGraticule& ag,
float yOffNDC, const FontAtlas& fa, float W, float H, const Layout& L)
{
glEnable(GL_SCISSOR_TEST);
// OpenGL scissor uses window coords (y=0 at bottom of window)
glScissor((GLint) L.asLeft,
(GLint)(H - L.asBot),
(GLint)(L.asRight - L.asLeft),
(GLint)(L.asBot - L.asTop));
glUseProgram(prog.line);
glUniform3f(glGetUniformLocation(prog.line, "uColor"), INCAN_R, INCAN_G, INCAN_B);
glUniform1f(glGetUniformLocation(prog.line, "uYOffset"), yOffNDC);
glBindVertexArray(ag.lineVAO);
glDrawArrays(GL_LINES, 0, ag.lineCount);
if (ag.textVerts > 0) {
glUseProgram(prog.text);
glUniform3f(glGetUniformLocation(prog.text, "uColor"), INCAN_R, INCAN_G, INCAN_B);
glUniform1f(glGetUniformLocation(prog.text, "uYOffset"), yOffNDC);
glUniform1i(glGetUniformLocation(prog.text, "uTexture"), 0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, fa.texture);
glBindVertexArray(ag.textVAO);
glDrawArrays(GL_TRIANGLES, 0, ag.textVerts);
glBindTexture(GL_TEXTURE_2D, 0);
}
glBindVertexArray(0);
glDisable(GL_SCISSOR_TEST);
}
// ─── Polar coordinate helpers (bearing ° CW from N, range fraction) ─────────
static inline float polarPx(const Layout& L, float bearDeg, float frac)
{ return L.ppiCX + frac * L.ppiR * std::sin(bearDeg * (PI/180.0f)); }
static inline float polarPy(const Layout& L, float bearDeg, float frac)
{ return L.ppiCY - frac * L.ppiR * std::cos(bearDeg * (PI/180.0f)); }
// ─── Feature 4: PPI range rings ──────────────────────────────────────────────
// Build vertex data (x,y,r,g,b = 5 floats/vertex):
// 1. Full persistence rings (dim P7 green-yellow)
// 2. Active sweep-trail arc per ring (active → persistence colour gradient)
// 3. Sweep line from centre to edge
static void buildRingVerts(std::vector<float>& v,
const Layout& L, int rangeIdx,
float sweepAngle, float W, float H)
{
const RangeConfig& rc = RANGE_CONFIGS[rangeIdx];
const int nr = rc.numMajor;
auto push = [&](float px, float py, float r, float g, float b) {
v.push_back(ndcX(px,W)); v.push_back(ndcY(py,H));
v.push_back(r); v.push_back(g); v.push_back(b);
};
// Full persistence rings (dim)
for (int ri = 1; ri <= nr; ++ri) {
float frac = (float)ri / nr;
for (int i = 0; i <= RING_SEGS; ++i) {
float a = 2.0f * PI * i / RING_SEGS;
push(L.ppiCX + frac*L.ppiR*std::cos(a),
L.ppiCY + frac*L.ppiR*std::sin(a),
P7P_R*0.45f, P7P_G*0.45f, P7P_B*0.45f);
}
}
// Sweep trail arcs (active at head → persistence at tail)
for (int ri = 1; ri <= nr; ++ri) {
float frac = (float)ri / nr;
for (int i = 0; i <= TRAIL_SEGS; ++i) {
float t = 1.0f - (float)i / TRAIL_SEGS;
float ang = sweepAngle - (float)i * TRAIL_DEG / TRAIL_SEGS;
float r = P7A_R * t + P7P_R * 0.45f * (1.0f - t);
float g2 = P7A_G * t + P7P_G * 0.45f * (1.0f - t);
float b = P7A_B * t + P7P_B * 0.45f * (1.0f - t);
push(polarPx(L,ang,frac), polarPy(L,ang,frac), r, g2, b);
}
}
// Sweep line (centre → edge)
push(L.ppiCX, L.ppiCY, P7A_R, P7A_G, P7A_B);
push(polarPx(L,sweepAngle,1.0f), polarPy(L,sweepAngle,1.0f),
P7A_R, P7A_G, P7A_B);
}
struct RingLayer {
GLuint prog = 0, vao = 0, vbo = 0;
};
static RingLayer buildRingLayer()
{
RingLayer rl{};
glGenVertexArrays(1, &rl.vao); glGenBuffers(1, &rl.vbo);
glBindVertexArray(rl.vao);
glBindBuffer(GL_ARRAY_BUFFER, rl.vbo);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 5*sizeof(float), nullptr);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 5*sizeof(float),
reinterpret_cast<void*>(2*sizeof(float)));
glEnableVertexAttribArray(1);
glBindVertexArray(0);
rl.prog = makeProgram("shaders/ppi_range_rings.vert",
"shaders/ppi_range_rings.frag");
return rl;
}
static void renderRingLayer(RingLayer& rl, const Layout& L,
int rangeIdx, float sweepAngle, float W, float H)
{
std::vector<float> v;
buildRingVerts(v, L, rangeIdx, sweepAngle, W, H);
glBindBuffer(GL_ARRAY_BUFFER, rl.vbo);
glBufferData(GL_ARRAY_BUFFER, (GLsizeiptr)(v.size()*sizeof(float)),
v.data(), GL_DYNAMIC_DRAW);
glUseProgram(rl.prog);
glBindVertexArray(rl.vao);
const int nr = RANGE_CONFIGS[rangeIdx].numMajor;
int off = 0;
for (int ri = 0; ri < nr; ++ri) {
glDrawArrays(GL_LINE_STRIP, off, RING_SEGS+1);
off += RING_SEGS+1;
}
for (int ri = 0; ri < nr; ++ri) {
glDrawArrays(GL_LINE_STRIP, off, TRAIL_SEGS+1);
off += TRAIL_SEGS+1;
}
glDrawArrays(GL_LINES, off, 2);
glBindVertexArray(0);
}
// ─── Feature 5: Fake targets ──────────────────────────────────────────────────
struct FakeTarget {
float bearingDeg;
float rangeMiles;
float coreRadPx; // core blob radius (pixels)
float bloomRadPx; // bloom glow radius (pixels); 0 = no bloom
mutable float lastActT; // glfwGetTime() when sweep last lit this target
};
static float angDiff(float a, float b) // unsigned angular separation (°)
{
float d = std::fmod(std::fabs(a - b), 360.0f);
return d > 180.0f ? 360.0f - d : d;
}
// Build one textured quad (x,y,u,v = 4 floats/vertex) centred at screen pixel (px,py).
static void genBlob(std::vector<float>& v,
float px, float py, float radiusPx, float W, float H)
{
float x0=ndcX(px-radiusPx,W), y0=ndcY(py-radiusPx,H);
float x1=ndcX(px+radiusPx,W), y1=ndcY(py+radiusPx,H);
v.push_back(x0);v.push_back(y0);v.push_back(-1.f);v.push_back(-1.f);
v.push_back(x1);v.push_back(y0);v.push_back( 1.f);v.push_back(-1.f);
v.push_back(x1);v.push_back(y1);v.push_back( 1.f);v.push_back( 1.f);
v.push_back(x0);v.push_back(y0);v.push_back(-1.f);v.push_back(-1.f);
v.push_back(x1);v.push_back(y1);v.push_back( 1.f);v.push_back( 1.f);
v.push_back(x0);v.push_back(y1);v.push_back(-1.f);v.push_back( 1.f);
}
struct TargetLayer {
GLuint prog = 0, vao = 0, vbo = 0;
};
static TargetLayer buildTargetLayer()
{
TargetLayer tl{};
glGenVertexArrays(1, &tl.vao); glGenBuffers(1, &tl.vbo);
glBindVertexArray(tl.vao);
glBindBuffer(GL_ARRAY_BUFFER, tl.vbo);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float), nullptr);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4*sizeof(float),
reinterpret_cast<void*>(2*sizeof(float)));
glEnableVertexAttribArray(1);
glBindVertexArray(0);
tl.prog = makeProgram("shaders/ppi_targets.vert","shaders/ppi_targets.frag");
return tl;
}
static void renderTargets(TargetLayer& tl,
FakeTarget* tgts, int nTgts,
const Layout& L, float maxRangeMi,
float sweepAngle, float curTime, float W, float H)
{
static const float THRESH = 3.5f; // sweep activation threshold (°)
glUseProgram(tl.prog);
glBindVertexArray(tl.vao);
const GLint locCol = glGetUniformLocation(tl.prog, "uColor");
const GLint locFall = glGetUniformLocation(tl.prog, "uFalloff");
for (int i = 0; i < nTgts; ++i) {
FakeTarget& t = tgts[i];
if (angDiff(sweepAngle, t.bearingDeg) < THRESH)
t.lastActT = curTime;
float rangeFrac = t.rangeMiles / maxRangeMi;
if (rangeFrac > 1.0f) continue;
float px = polarPx(L, t.bearingDeg, rangeFrac);
float py = polarPy(L, t.bearingDeg, rangeFrac);
float dt = curTime - t.lastActT;
float fade = (dt < 0.0f) ? 0.0f : std::max(0.0f, 1.0f - dt/TARG_PERSIST);
bool active = angDiff(sweepAngle, t.bearingDeg) < THRESH;
float bright = active ? 1.0f : fade;
if (bright < 0.01f) continue;
float cr, cg, cb;
if (active) { cr=P7A_R; cg=P7A_G; cb=P7A_B; }
else { cr=P7P_R; cg=P7P_G; cb=P7P_B; }
// Core blob
{
std::vector<float> bv;
genBlob(bv, px, py, t.coreRadPx, W, H);
glBindBuffer(GL_ARRAY_BUFFER, tl.vbo);
glBufferData(GL_ARRAY_BUFFER, (GLsizeiptr)(bv.size()*sizeof(float)),
bv.data(), GL_DYNAMIC_DRAW);
glUniform3f(locCol, cr*bright, cg*bright, cb*bright);
glUniform1f(locFall, 4.5f);
glDrawArrays(GL_TRIANGLES, 0, 6);
}
// Bloom glow (large targets only)
if (t.bloomRadPx > 0.0f && bright > 0.05f) {
std::vector<float> bv;
genBlob(bv, px, py, t.bloomRadPx, W, H);
glBindBuffer(GL_ARRAY_BUFFER, tl.vbo);
glBufferData(GL_ARRAY_BUFFER, (GLsizeiptr)(bv.size()*sizeof(float)),
bv.data(), GL_DYNAMIC_DRAW);
glUniform3f(locCol, cr*bright*0.35f, cg*bright*0.35f, cb*bright*0.35f);
glUniform1f(locFall, 0.8f);
glDrawArrays(GL_TRIANGLES, 0, 6);
}
}
glBindVertexArray(0);
}
// ─── Key callback ──────────────────────────────────────────────────────────── // ─── Key callback ────────────────────────────────────────────────────────────
static void onKey(GLFWwindow* win, int key, int /*scan*/, int action, int /*mods*/) static void onKey(GLFWwindow* win, int key, int /*scan*/, int action, int /*mods*/)
@@ -419,7 +774,7 @@ int main()
GLFWwindow* win = glfwCreateWindow( GLFWwindow* win = glfwCreateWindow(
mode->width, mode->height, mode->width, mode->height,
"Radar Test — Features 1 & 2", "Radar Test — Features 15",
nullptr, nullptr); nullptr, nullptr);
if (!win) { std::cerr << "Window create failed\n"; glfwTerminate(); return 1; } if (!win) { std::cerr << "Window create failed\n"; glfwTerminate(); return 1; }
@@ -436,7 +791,6 @@ int main()
const float W = static_cast<float>(fbW); const float W = static_cast<float>(fbW);
const float H = static_cast<float>(fbH); const float H = static_cast<float>(fbH);
// Convert 0.5-inch margin to pixels using monitor physical size
int mmW, mmH; int mmW, mmH;
glfwGetMonitorPhysicalSize(mon, &mmW, &mmH); glfwGetMonitorPhysicalSize(mon, &mmW, &mmH);
const float dpiX = static_cast<float>(mode->width) / (static_cast<float>(mmW) / 25.4f); const float dpiX = static_cast<float>(mode->width) / (static_cast<float>(mmW) / 25.4f);
@@ -444,7 +798,7 @@ int main()
const Layout layout = computeLayout(W, H, margin); const Layout layout = computeLayout(W, H, margin);
// Build FreeType font atlas (digits only, ~1.8 % of screen height) // Font atlas (digits only, ~1.8 % of screen height)
FontAtlas fa{}; FontAtlas fa{};
const std::string fontPath = const std::string fontPath =
"/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf"; "/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf";
@@ -459,15 +813,65 @@ int main()
// Feature 2 — PPI bearing graticule // Feature 2 — PPI bearing graticule
BearingGraticule bg = buildBearingGraticule(layout, fa, W, H); BearingGraticule bg = buildBearingGraticule(layout, fa, W, H);
// Feature 3 — A scope replaceable graticules
AScopeGratProg agProg = buildAScopeGratPrograms();
AScopeGraticule graticules[RANGE_COUNT];
for (int i = 0; i < RANGE_COUNT; ++i)
graticules[i] = buildAScopeGraticule(layout, fa, RANGE_CONFIGS[i], W, H);
// Feature 4 — PPI range rings
RingLayer rl = buildRingLayer();
// Feature 5 — Fake targets (one per quadrant: NE small, SE large, SW/NW very large)
const float pR = layout.ppiR;
FakeTarget targets[4] = {
{ 55.0f, 1.3f, pR*0.010f, 0.0f, -999.0f }, // NE small (kayak)
{ 135.0f, 3.8f, pR*0.022f, pR*0.048f, -999.0f }, // SE large, blooming
{ 215.0f, 2.2f, pR*0.032f, pR*0.075f, -999.0f }, // SW very large
{ 310.0f, 9.0f, pR*0.032f, pR*0.075f, -999.0f }, // NW very large
};
TargetLayer tl = buildTargetLayer();
float sweepAngle = 0.0f; // degrees, 0 = north, clockwise
// NDC height of the A scope box — used to compute slide distance
const float scopeNDCH = (layout.asBot - layout.asTop) * 2.0f / H;
// Animation state
int curRange = 0;
int nextRange = 1;
bool sliding = false;
float holdTimer = 0.0f;
float slideTimer = 0.0f;
float prevTime = static_cast<float>(glfwGetTime());
glEnable(GL_BLEND); glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
const auto t0 = std::chrono::steady_clock::now();
while (!glfwWindowShouldClose(win)) { while (!glfwWindowShouldClose(win)) {
const float elapsed = std::chrono::duration<float>( const float now = static_cast<float>(glfwGetTime());
std::chrono::steady_clock::now() - t0).count(); const float dt = now - prevTime;
if (elapsed >= 10.0f) break; prevTime = now;
// ── Advance sweep (Features 4 & 5) ───────────────────────────────────
sweepAngle = std::fmod(sweepAngle + SWEEP_DEG_PS * dt, 360.0f);
// ── Advance Feature 3 animation ───────────────────────────────────────
if (!sliding) {
holdTimer += dt;
if (holdTimer >= HOLD_SEC) {
holdTimer = 0.0f;
slideTimer = 0.0f;
nextRange = (curRange + 1) % RANGE_COUNT;
sliding = true;
}
} else {
slideTimer += dt;
if (slideTimer >= SLIDE_SEC) {
curRange = nextRange;
sliding = false;
}
}
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT);
@@ -477,11 +881,9 @@ int main()
const GLint sbCol = glGetUniformLocation(sb.prog, "uColor"); const GLint sbCol = glGetUniformLocation(sb.prog, "uColor");
glBindVertexArray(sb.vao); glBindVertexArray(sb.vao);
// PPI scope boundary — dim blue-white ring
glUniform3f(sbCol, 0.25f, 0.35f, 0.55f); glUniform3f(sbCol, 0.25f, 0.35f, 0.55f);
glDrawArrays(GL_LINE_STRIP, sb.ppiStart, sb.ppiCount); glDrawArrays(GL_LINE_STRIP, sb.ppiStart, sb.ppiCount);
// A scope boundary — P1 green
glUniform3f(sbCol, P1_R, P1_G, P1_B); glUniform3f(sbCol, P1_R, P1_G, P1_B);
glDrawArrays(GL_LINES, sb.asStart, sb.asCount); glDrawArrays(GL_LINES, sb.asStart, sb.asCount);
@@ -496,7 +898,6 @@ int main()
glDrawArrays(GL_LINES, bg.tickStart, bg.tickCount); glDrawArrays(GL_LINES, bg.tickStart, bg.tickCount);
glBindVertexArray(0); glBindVertexArray(0);
// ── Feature 2: degree labels ──────────────────────────────────────────
glUseProgram(bg.textProg); glUseProgram(bg.textProg);
glUniform3f(glGetUniformLocation(bg.textProg, "uColor"), glUniform3f(glGetUniformLocation(bg.textProg, "uColor"),
INCAN_R, INCAN_G, INCAN_B); INCAN_R, INCAN_G, INCAN_B);
@@ -508,6 +909,28 @@ int main()
glBindVertexArray(0); glBindVertexArray(0);
glBindTexture(GL_TEXTURE_2D, 0); glBindTexture(GL_TEXTURE_2D, 0);
// ── Feature 3: A scope graticule (with slide animation) ───────────────
if (!sliding) {
drawAScopeGraticule(agProg, graticules[curRange],
0.0f, fa, W, H, layout);
} else {
float t = std::min(slideTimer / SLIDE_SEC, 1.0f);
// Old graticule slides UP (+NDC Y = up) and out through the top slot
drawAScopeGraticule(agProg, graticules[curRange],
t * scopeNDCH, fa, W, H, layout);
// New graticule descends from above into position
drawAScopeGraticule(agProg, graticules[nextRange],
(1.0f - t) * scopeNDCH, fa, W, H, layout);
}
// ── Feature 4: PPI range rings ────────────────────────────────────────
renderRingLayer(rl, layout, curRange, sweepAngle, W, H);
// ── Feature 5: Active targets + persistence ───────────────────────────
renderTargets(tl, targets, 4, layout,
RANGE_CONFIGS[curRange].maxMiles,
sweepAngle, now, W, H);
glfwSwapBuffers(win); glfwSwapBuffers(win);
glfwPollEvents(); glfwPollEvents();
} }
@@ -521,6 +944,19 @@ int main()
glDeleteProgram(bg.lineProg); glDeleteProgram(bg.lineProg);
glDeleteProgram(bg.textProg); glDeleteProgram(bg.textProg);
for (int i = 0; i < RANGE_COUNT; ++i) {
glDeleteVertexArrays(1, &graticules[i].lineVAO);
glDeleteBuffers(1, &graticules[i].lineVBO);
glDeleteVertexArrays(1, &graticules[i].textVAO);
glDeleteBuffers(1, &graticules[i].textVBO);
}
glDeleteProgram(agProg.line);
glDeleteProgram(agProg.text);
glDeleteVertexArrays(1, &rl.vao); glDeleteBuffers(1, &rl.vbo);
glDeleteProgram(rl.prog);
glDeleteVertexArrays(1, &tl.vao); glDeleteBuffers(1, &tl.vbo);
glDeleteProgram(tl.prog);
glfwDestroyWindow(win); glfwDestroyWindow(win);
glfwTerminate(); glfwTerminate();
return 0; return 0;