Add shoreline facility

This commit is contained in:
2026-04-07 21:26:37 -07:00
parent 7db6259b06
commit 5a7350dbae
20 changed files with 2022 additions and 240 deletions

View File

@@ -18,9 +18,9 @@ needs to be provided to exit the program and go back to shell.
We have to simulate everything as we are not allowed to have an actual radar at We have to simulate everything as we are not allowed to have an actual radar at
our location because we are not on the water. our location because we are not on the water.
The proposed location of the radar antenna is at the dock of the Community The proposed location of the radar antenna is in the middle of Bellingham
boating center in Bellingham, Washington. Bay on a 100 foot platform.
Location is 48.72° N Latitude and -122.51° W Longitude Location is 48.74361448950435 latitude, -122.56466911663048 longitude
Zero degrees on Radar Scope is True North. Zero degrees on Radar Scope is True North.

View File

@@ -7,6 +7,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(OpenGL REQUIRED) find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED) find_package(glfw3 REQUIRED)
find_package(Freetype REQUIRED) find_package(Freetype REQUIRED)
find_package(GDAL REQUIRED)
add_executable(radar_simulation add_executable(radar_simulation
src/main.cpp src/main.cpp
@@ -16,12 +17,18 @@ add_executable(radar_simulation
target_include_directories(radar_simulation PRIVATE target_include_directories(radar_simulation PRIVATE
${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/include
${FREETYPE_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS}
${GDAL_INCLUDE_DIRS}
)
target_compile_definitions(radar_simulation PRIVATE
MAP_DIR="${CMAKE_SOURCE_DIR}/map"
) )
target_link_libraries(radar_simulation PRIVATE target_link_libraries(radar_simulation PRIVATE
OpenGL::GL OpenGL::GL
glfw glfw
Freetype::Freetype Freetype::Freetype
${GDAL_LIBRARIES}
) )
add_custom_target(copy_shaders ALL add_custom_target(copy_shaders ALL

View File

@@ -227,6 +227,15 @@ FREETYPE_LIBRARY_DEBUG:FILEPATH=FREETYPE_LIBRARY_DEBUG-NOTFOUND
//Path to a library. //Path to a library.
FREETYPE_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libfreetype.so FREETYPE_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libfreetype.so
//Path to the gdal-config tool
GDAL_CONFIG:FILEPATH=/usr/bin/gdal-config
//Path to the GDAL include directory
GDAL_INCLUDE_DIR:PATH=/usr/include/gdal
//Path to the GDAL library
GDAL_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libgdal.so
//Path to a file. //Path to a file.
OPENGL_EGL_INCLUDE_DIR:PATH=/usr/include OPENGL_EGL_INCLUDE_DIR:PATH=/usr/include
@@ -434,6 +443,8 @@ CMAKE_UNAME:INTERNAL=/usr/bin/uname
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
//Details about finding Freetype //Details about finding Freetype
FIND_PACKAGE_MESSAGE_DETAILS_Freetype:INTERNAL=[/usr/lib/x86_64-linux-gnu/libfreetype.so][/usr/include/freetype2][v2.13.3()] FIND_PACKAGE_MESSAGE_DETAILS_Freetype:INTERNAL=[/usr/lib/x86_64-linux-gnu/libfreetype.so][/usr/include/freetype2][v2.13.3()]
//Details about finding GDAL
FIND_PACKAGE_MESSAGE_DETAILS_GDAL:INTERNAL=[/usr/lib/x86_64-linux-gnu/libgdal.so][/usr/include/gdal][v3.10.3()]
//Details about finding OpenGL //Details about finding OpenGL
FIND_PACKAGE_MESSAGE_DETAILS_OpenGL:INTERNAL=[/usr/lib/x86_64-linux-gnu/libOpenGL.so][/usr/lib/x86_64-linux-gnu/libGLX.so][/usr/include][c ][v()] FIND_PACKAGE_MESSAGE_DETAILS_OpenGL:INTERNAL=[/usr/lib/x86_64-linux-gnu/libOpenGL.so][/usr/lib/x86_64-linux-gnu/libGLX.so][/usr/include][c ][v()]
//Details about finding Threads //Details about finding Threads
@@ -446,6 +457,12 @@ FREETYPE_INCLUDE_DIR_ft2build-ADVANCED:INTERNAL=1
FREETYPE_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 FREETYPE_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: FREETYPE_LIBRARY_RELEASE //ADVANCED property for variable: FREETYPE_LIBRARY_RELEASE
FREETYPE_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 FREETYPE_LIBRARY_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: GDAL_CONFIG
GDAL_CONFIG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: GDAL_INCLUDE_DIR
GDAL_INCLUDE_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: GDAL_LIBRARY
GDAL_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: OPENGL_EGL_INCLUDE_DIR //ADVANCED property for variable: OPENGL_EGL_INCLUDE_DIR
OPENGL_EGL_INCLUDE_DIR-ADVANCED:INTERNAL=1 OPENGL_EGL_INCLUDE_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: OPENGL_GLES2_INCLUDE_DIR //ADVANCED property for variable: OPENGL_GLES2_INCLUDE_DIR

View File

@@ -32,6 +32,7 @@ set(CMAKE_MAKEFILE_DEPENDS
"/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.cmake" "/usr/share/cmake-3.31/Modules/Compiler/GNU.cmake"
"/usr/share/cmake-3.31/Modules/FindFreetype.cmake" "/usr/share/cmake-3.31/Modules/FindFreetype.cmake"
"/usr/share/cmake-3.31/Modules/FindGDAL.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"
"/usr/share/cmake-3.31/Modules/FindPackageMessage.cmake" "/usr/share/cmake-3.31/Modules/FindPackageMessage.cmake"

View File

@@ -114,6 +114,7 @@ radar_simulation: CMakeFiles/radar_simulation.dir/build.make
radar_simulation: CMakeFiles/radar_simulation.dir/compiler_depend.ts radar_simulation: CMakeFiles/radar_simulation.dir/compiler_depend.ts
radar_simulation: /usr/lib/x86_64-linux-gnu/libglfw.so.3.4 radar_simulation: /usr/lib/x86_64-linux-gnu/libglfw.so.3.4
radar_simulation: /usr/lib/x86_64-linux-gnu/libfreetype.so radar_simulation: /usr/lib/x86_64-linux-gnu/libfreetype.so
radar_simulation: /usr/lib/x86_64-linux-gnu/libgdal.so
radar_simulation: /usr/lib/x86_64-linux-gnu/libGLX.so radar_simulation: /usr/lib/x86_64-linux-gnu/libGLX.so
radar_simulation: /usr/lib/x86_64-linux-gnu/libOpenGL.so radar_simulation: /usr/lib/x86_64-linux-gnu/libOpenGL.so
radar_simulation: CMakeFiles/radar_simulation.dir/link.txt radar_simulation: CMakeFiles/radar_simulation.dir/link.txt

View File

@@ -93,11 +93,16 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/asm-generic/posix_types.h /usr/include/asm-generic/posix_types.h
/usr/include/asm-generic/types.h /usr/include/asm-generic/types.h
/usr/include/c++/15/algorithm /usr/include/c++/15/algorithm
/usr/include/c++/15/backward/auto_ptr.h
/usr/include/c++/15/backward/binders.h /usr/include/c++/15/backward/binders.h
/usr/include/c++/15/bit /usr/include/c++/15/bit
/usr/include/c++/15/bits/algorithmfwd.h /usr/include/c++/15/bits/algorithmfwd.h
/usr/include/c++/15/bits/align.h
/usr/include/c++/15/bits/alloc_traits.h /usr/include/c++/15/bits/alloc_traits.h
/usr/include/c++/15/bits/allocated_ptr.h
/usr/include/c++/15/bits/allocator.h /usr/include/c++/15/bits/allocator.h
/usr/include/c++/15/bits/atomic_base.h
/usr/include/c++/15/bits/atomic_lockfree_defines.h
/usr/include/c++/15/bits/basic_ios.h /usr/include/c++/15/bits/basic_ios.h
/usr/include/c++/15/bits/basic_ios.tcc /usr/include/c++/15/bits/basic_ios.tcc
/usr/include/c++/15/bits/basic_string.h /usr/include/c++/15/bits/basic_string.h
@@ -109,6 +114,8 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/c++/15/bits/cpp_type_traits.h /usr/include/c++/15/bits/cpp_type_traits.h
/usr/include/c++/15/bits/cxxabi_forced.h /usr/include/c++/15/bits/cxxabi_forced.h
/usr/include/c++/15/bits/cxxabi_init_exception.h /usr/include/c++/15/bits/cxxabi_init_exception.h
/usr/include/c++/15/bits/deque.tcc
/usr/include/c++/15/bits/erase_if.h
/usr/include/c++/15/bits/exception.h /usr/include/c++/15/bits/exception.h
/usr/include/c++/15/bits/exception_defines.h /usr/include/c++/15/bits/exception_defines.h
/usr/include/c++/15/bits/exception_ptr.h /usr/include/c++/15/bits/exception_ptr.h
@@ -129,6 +136,7 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/c++/15/bits/move.h /usr/include/c++/15/bits/move.h
/usr/include/c++/15/bits/nested_exception.h /usr/include/c++/15/bits/nested_exception.h
/usr/include/c++/15/bits/new_allocator.h /usr/include/c++/15/bits/new_allocator.h
/usr/include/c++/15/bits/node_handle.h
/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
@@ -138,6 +146,9 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/c++/15/bits/range_access.h /usr/include/c++/15/bits/range_access.h
/usr/include/c++/15/bits/refwrap.h /usr/include/c++/15/bits/refwrap.h
/usr/include/c++/15/bits/requires_hosted.h /usr/include/c++/15/bits/requires_hosted.h
/usr/include/c++/15/bits/shared_ptr.h
/usr/include/c++/15/bits/shared_ptr_atomic.h
/usr/include/c++/15/bits/shared_ptr_base.h
/usr/include/c++/15/bits/specfun.h /usr/include/c++/15/bits/specfun.h
/usr/include/c++/15/bits/sstream.tcc /usr/include/c++/15/bits/sstream.tcc
/usr/include/c++/15/bits/std_abs.h /usr/include/c++/15/bits/std_abs.h
@@ -145,20 +156,29 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/c++/15/bits/stl_algobase.h /usr/include/c++/15/bits/stl_algobase.h
/usr/include/c++/15/bits/stl_bvector.h /usr/include/c++/15/bits/stl_bvector.h
/usr/include/c++/15/bits/stl_construct.h /usr/include/c++/15/bits/stl_construct.h
/usr/include/c++/15/bits/stl_deque.h
/usr/include/c++/15/bits/stl_function.h /usr/include/c++/15/bits/stl_function.h
/usr/include/c++/15/bits/stl_heap.h /usr/include/c++/15/bits/stl_heap.h
/usr/include/c++/15/bits/stl_iterator.h /usr/include/c++/15/bits/stl_iterator.h
/usr/include/c++/15/bits/stl_iterator_base_funcs.h /usr/include/c++/15/bits/stl_iterator_base_funcs.h
/usr/include/c++/15/bits/stl_iterator_base_types.h /usr/include/c++/15/bits/stl_iterator_base_types.h
/usr/include/c++/15/bits/stl_map.h
/usr/include/c++/15/bits/stl_multimap.h
/usr/include/c++/15/bits/stl_multiset.h
/usr/include/c++/15/bits/stl_pair.h /usr/include/c++/15/bits/stl_pair.h
/usr/include/c++/15/bits/stl_raw_storage_iter.h
/usr/include/c++/15/bits/stl_set.h
/usr/include/c++/15/bits/stl_tempbuf.h /usr/include/c++/15/bits/stl_tempbuf.h
/usr/include/c++/15/bits/stl_tree.h
/usr/include/c++/15/bits/stl_uninitialized.h /usr/include/c++/15/bits/stl_uninitialized.h
/usr/include/c++/15/bits/stl_vector.h /usr/include/c++/15/bits/stl_vector.h
/usr/include/c++/15/bits/stream_iterator.h
/usr/include/c++/15/bits/streambuf.tcc /usr/include/c++/15/bits/streambuf.tcc
/usr/include/c++/15/bits/streambuf_iterator.h /usr/include/c++/15/bits/streambuf_iterator.h
/usr/include/c++/15/bits/string_view.tcc /usr/include/c++/15/bits/string_view.tcc
/usr/include/c++/15/bits/stringfwd.h /usr/include/c++/15/bits/stringfwd.h
/usr/include/c++/15/bits/uniform_int_dist.h /usr/include/c++/15/bits/uniform_int_dist.h
/usr/include/c++/15/bits/unique_ptr.h
/usr/include/c++/15/bits/uses_allocator.h /usr/include/c++/15/bits/uses_allocator.h
/usr/include/c++/15/bits/uses_allocator_args.h /usr/include/c++/15/bits/uses_allocator_args.h
/usr/include/c++/15/bits/utility.h /usr/include/c++/15/bits/utility.h
@@ -166,10 +186,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/climits
/usr/include/c++/15/clocale /usr/include/c++/15/clocale
/usr/include/c++/15/cmath /usr/include/c++/15/cmath
/usr/include/c++/15/complex
/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
@@ -177,9 +200,12 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/c++/15/cwctype /usr/include/c++/15/cwctype
/usr/include/c++/15/debug/assertions.h /usr/include/c++/15/debug/assertions.h
/usr/include/c++/15/debug/debug.h /usr/include/c++/15/debug/debug.h
/usr/include/c++/15/deque
/usr/include/c++/15/exception /usr/include/c++/15/exception
/usr/include/c++/15/ext/aligned_buffer.h
/usr/include/c++/15/ext/alloc_traits.h /usr/include/c++/15/ext/alloc_traits.h
/usr/include/c++/15/ext/atomicity.h /usr/include/c++/15/ext/atomicity.h
/usr/include/c++/15/ext/concurrence.h
/usr/include/c++/15/ext/numeric_traits.h /usr/include/c++/15/ext/numeric_traits.h
/usr/include/c++/15/ext/string_conversions.h /usr/include/c++/15/ext/string_conversions.h
/usr/include/c++/15/ext/type_traits.h /usr/include/c++/15/ext/type_traits.h
@@ -189,12 +215,18 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/c++/15/iosfwd /usr/include/c++/15/iosfwd
/usr/include/c++/15/iostream /usr/include/c++/15/iostream
/usr/include/c++/15/istream /usr/include/c++/15/istream
/usr/include/c++/15/iterator
/usr/include/c++/15/limits /usr/include/c++/15/limits
/usr/include/c++/15/map
/usr/include/c++/15/math.h
/usr/include/c++/15/memory
/usr/include/c++/15/new /usr/include/c++/15/new
/usr/include/c++/15/ostream /usr/include/c++/15/ostream
/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/glue_memory_defs.h
/usr/include/c++/15/pstl/pstl_config.h /usr/include/c++/15/pstl/pstl_config.h
/usr/include/c++/15/set
/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
@@ -238,11 +270,39 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/freetype2/freetype/ftsystem.h /usr/include/freetype2/freetype/ftsystem.h
/usr/include/freetype2/freetype/fttypes.h /usr/include/freetype2/freetype/fttypes.h
/usr/include/freetype2/ft2build.h /usr/include/freetype2/ft2build.h
/usr/include/gdal/cpl_atomic_ops.h
/usr/include/gdal/cpl_config.h
/usr/include/gdal/cpl_conv.h
/usr/include/gdal/cpl_error.h
/usr/include/gdal/cpl_json.h
/usr/include/gdal/cpl_minixml.h
/usr/include/gdal/cpl_multiproc.h
/usr/include/gdal/cpl_port.h
/usr/include/gdal/cpl_progress.h
/usr/include/gdal/cpl_string.h
/usr/include/gdal/cpl_virtualmem.h
/usr/include/gdal/cpl_vsi.h
/usr/include/gdal/gdal.h
/usr/include/gdal/gdal_frmts.h
/usr/include/gdal/gdal_priv.h
/usr/include/gdal/gdal_version.h
/usr/include/gdal/gdalsubdatasetinfo.h
/usr/include/gdal/ogr_api.h
/usr/include/gdal/ogr_core.h
/usr/include/gdal/ogr_feature.h
/usr/include/gdal/ogr_featurestyle.h
/usr/include/gdal/ogr_geomcoordinateprecision.h
/usr/include/gdal/ogr_geometry.h
/usr/include/gdal/ogr_spatialref.h
/usr/include/gdal/ogr_srs_api.h
/usr/include/gdal/ogrsf_frmts.h
/usr/include/limits.h /usr/include/limits.h
/usr/include/linux/close_range.h
/usr/include/linux/errno.h /usr/include/linux/errno.h
/usr/include/linux/limits.h /usr/include/linux/limits.h
/usr/include/linux/posix_types.h /usr/include/linux/posix_types.h
/usr/include/linux/sched/types.h /usr/include/linux/sched/types.h
/usr/include/linux/stat.h
/usr/include/linux/stddef.h /usr/include/linux/stddef.h
/usr/include/linux/types.h /usr/include/linux/types.h
/usr/include/locale.h /usr/include/locale.h
@@ -257,6 +317,7 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/string.h /usr/include/string.h
/usr/include/strings.h /usr/include/strings.h
/usr/include/time.h /usr/include/time.h
/usr/include/unistd.h
/usr/include/wchar.h /usr/include/wchar.h
/usr/include/wctype.h /usr/include/wctype.h
/usr/include/x86_64-linux-gnu/asm/bitsperlong.h /usr/include/x86_64-linux-gnu/asm/bitsperlong.h
@@ -266,15 +327,19 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/x86_64-linux-gnu/asm/types.h /usr/include/x86_64-linux-gnu/asm/types.h
/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h
/usr/include/x86_64-linux-gnu/bits/byteswap.h /usr/include/x86_64-linux-gnu/bits/byteswap.h
/usr/include/x86_64-linux-gnu/bits/confname.h
/usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/x86_64-linux-gnu/bits/cpu-set.h
/usr/include/x86_64-linux-gnu/bits/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h
/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/environments.h
/usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h
/usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/x86_64-linux-gnu/bits/floatn-common.h
/usr/include/x86_64-linux-gnu/bits/floatn.h /usr/include/x86_64-linux-gnu/bits/floatn.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/x86_64-linux-gnu/bits/fp-fast.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/fp-logb.h
/usr/include/x86_64-linux-gnu/bits/getopt_core.h
/usr/include/x86_64-linux-gnu/bits/getopt_posix.h
/usr/include/x86_64-linux-gnu/bits/iscanonical.h /usr/include/x86_64-linux-gnu/bits/iscanonical.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/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h
@@ -288,6 +353,7 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/x86_64-linux-gnu/bits/mathcalls.h /usr/include/x86_64-linux-gnu/bits/mathcalls.h
/usr/include/x86_64-linux-gnu/bits/posix1_lim.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h
/usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/x86_64-linux-gnu/bits/posix2_lim.h
/usr/include/x86_64-linux-gnu/bits/posix_opt.h
/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.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
@@ -297,6 +363,9 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/x86_64-linux-gnu/bits/select2.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/setjmp2.h
/usr/include/x86_64-linux-gnu/bits/stat.h
/usr/include/x86_64-linux-gnu/bits/statx-generic.h
/usr/include/x86_64-linux-gnu/bits/statx.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
@@ -311,6 +380,7 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/x86_64-linux-gnu/bits/strings_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/struct_stat.h
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h
/usr/include/x86_64-linux-gnu/bits/time.h /usr/include/x86_64-linux-gnu/bits/time.h
/usr/include/x86_64-linux-gnu/bits/time64.h /usr/include/x86_64-linux-gnu/bits/time64.h
@@ -335,6 +405,8 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h
/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h
/usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h
/usr/include/x86_64-linux-gnu/bits/types/struct_statx.h
/usr/include/x86_64-linux-gnu/bits/types/struct_statx_timestamp.h
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h
/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h
@@ -344,6 +416,9 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/x86_64-linux-gnu/bits/typesizes.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/uio_lim.h /usr/include/x86_64-linux-gnu/bits/uio_lim.h
/usr/include/x86_64-linux-gnu/bits/unistd-decl.h
/usr/include/x86_64-linux-gnu/bits/unistd.h
/usr/include/x86_64-linux-gnu/bits/unistd_ext.h
/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
@@ -370,22 +445,151 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o
/usr/include/x86_64-linux-gnu/sys/cdefs.h /usr/include/x86_64-linux-gnu/sys/cdefs.h
/usr/include/x86_64-linux-gnu/sys/select.h /usr/include/x86_64-linux-gnu/sys/select.h
/usr/include/x86_64-linux-gnu/sys/single_threaded.h /usr/include/x86_64-linux-gnu/sys/single_threaded.h
/usr/include/x86_64-linux-gnu/sys/stat.h
/usr/include/x86_64-linux-gnu/sys/types.h /usr/include/x86_64-linux-gnu/sys/types.h
/usr/lib/gcc/x86_64-linux-gnu/15/include/limits.h /usr/lib/gcc/x86_64-linux-gnu/15/include/limits.h
/usr/lib/gcc/x86_64-linux-gnu/15/include/stdarg.h /usr/lib/gcc/x86_64-linux-gnu/15/include/stdarg.h
/usr/lib/gcc/x86_64-linux-gnu/15/include/stdbool.h
/usr/lib/gcc/x86_64-linux-gnu/15/include/stddef.h /usr/lib/gcc/x86_64-linux-gnu/15/include/stddef.h
/usr/lib/gcc/x86_64-linux-gnu/15/include/stdint.h /usr/lib/gcc/x86_64-linux-gnu/15/include/stdint.h
/usr/lib/gcc/x86_64-linux-gnu/15/include/syslimits.h /usr/lib/gcc/x86_64-linux-gnu/15/include/syslimits.h
radar_simulation radar_simulation
/lib/libarmadillo.so.14
/lib/x86_64-linux-gnu/libLerc.so.4
/lib/x86_64-linux-gnu/libSvtAv1Enc.so.2
/lib/x86_64-linux-gnu/libabsl_base.so.20240722
/lib/x86_64-linux-gnu/libabsl_debugging_internal.so.20240722
/lib/x86_64-linux-gnu/libabsl_decode_rust_punycode.so.20240722
/lib/x86_64-linux-gnu/libabsl_demangle_internal.so.20240722
/lib/x86_64-linux-gnu/libabsl_demangle_rust.so.20240722
/lib/x86_64-linux-gnu/libabsl_graphcycles_internal.so.20240722
/lib/x86_64-linux-gnu/libabsl_kernel_timeout_internal.so.20240722
/lib/x86_64-linux-gnu/libabsl_malloc_internal.so.20240722
/lib/x86_64-linux-gnu/libabsl_raw_logging_internal.so.20240722
/lib/x86_64-linux-gnu/libabsl_spinlock_wait.so.20240722
/lib/x86_64-linux-gnu/libabsl_stacktrace.so.20240722
/lib/x86_64-linux-gnu/libabsl_string_view.so.20240722
/lib/x86_64-linux-gnu/libabsl_strings.so.20240722
/lib/x86_64-linux-gnu/libabsl_strings_internal.so.20240722
/lib/x86_64-linux-gnu/libabsl_symbolize.so.20240722
/lib/x86_64-linux-gnu/libabsl_synchronization.so.20240722
/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722
/lib/x86_64-linux-gnu/libabsl_time.so.20240722
/lib/x86_64-linux-gnu/libabsl_time_zone.so.20240722
/lib/x86_64-linux-gnu/libabsl_utf8_for_code_point.so.20240722
/lib/x86_64-linux-gnu/libaec.so.0
/lib/x86_64-linux-gnu/libaom.so.3
/lib/x86_64-linux-gnu/libarpack.so.2
/lib/x86_64-linux-gnu/libassuan.so.9
/lib/x86_64-linux-gnu/libavif.so.16
/lib/x86_64-linux-gnu/libblas.so.3
/lib/x86_64-linux-gnu/libblosc.so.1
/lib/x86_64-linux-gnu/libbrotlicommon.so.1 /lib/x86_64-linux-gnu/libbrotlicommon.so.1
/lib/x86_64-linux-gnu/libbrotlidec.so.1 /lib/x86_64-linux-gnu/libbrotlidec.so.1
/lib/x86_64-linux-gnu/libbz2.so.1.0 /lib/x86_64-linux-gnu/libbz2.so.1.0
/lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libcfitsio.so.10
/lib/x86_64-linux-gnu/libcom_err.so.2
/lib/x86_64-linux-gnu/libcrypto.so.3
/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
/lib/x86_64-linux-gnu/libcurl.so.4
/lib/x86_64-linux-gnu/libdav1d.so.7
/lib/x86_64-linux-gnu/libdeflate.so.0
/lib/x86_64-linux-gnu/libdfalt.so.0
/lib/x86_64-linux-gnu/libexpat.so.1
/lib/x86_64-linux-gnu/libffi.so.8
/lib/x86_64-linux-gnu/libfontconfig.so.1
/lib/x86_64-linux-gnu/libfreexl.so.1
/lib/x86_64-linux-gnu/libfyba.so.0
/lib/x86_64-linux-gnu/libfygm.so.0
/lib/x86_64-linux-gnu/libfyut.so.0
/lib/x86_64-linux-gnu/libgav1.so.1
/lib/x86_64-linux-gnu/libgeos.so.3.13.1
/lib/x86_64-linux-gnu/libgeos_c.so.1
/lib/x86_64-linux-gnu/libgeotiff.so.5
/lib/x86_64-linux-gnu/libgfortran.so.5
/lib/x86_64-linux-gnu/libgif.so.7
/lib/x86_64-linux-gnu/libgmp.so.10
/lib/x86_64-linux-gnu/libgnutls.so.30
/lib/x86_64-linux-gnu/libgpg-error.so.0
/lib/x86_64-linux-gnu/libgpgme.so.11
/lib/x86_64-linux-gnu/libgpgmepp.so.6
/lib/x86_64-linux-gnu/libgssapi_krb5.so.2
/lib/x86_64-linux-gnu/libhdf5_serial.so.310
/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.310
/lib/x86_64-linux-gnu/libheif.so.1
/lib/x86_64-linux-gnu/libhogweed.so.6
/lib/x86_64-linux-gnu/libicudata.so.76
/lib/x86_64-linux-gnu/libicuuc.so.76
/lib/x86_64-linux-gnu/libidn2.so.0
/lib/x86_64-linux-gnu/libjbig.so.0
/lib/x86_64-linux-gnu/libjpeg.so.8
/lib/x86_64-linux-gnu/libjson-c.so.5
/lib/x86_64-linux-gnu/libk5crypto.so.3
/lib/x86_64-linux-gnu/libkeyutils.so.1
/lib/x86_64-linux-gnu/libkmlbase.so.1
/lib/x86_64-linux-gnu/libkmldom.so.1
/lib/x86_64-linux-gnu/libkmlengine.so.1
/lib/x86_64-linux-gnu/libkrb5.so.3
/lib/x86_64-linux-gnu/libkrb5support.so.0
/lib/x86_64-linux-gnu/liblapack.so.3
/lib/x86_64-linux-gnu/liblber.so.2
/lib/x86_64-linux-gnu/liblcms2.so.2
/lib/x86_64-linux-gnu/libldap.so.2
/lib/x86_64-linux-gnu/libltdl.so.7
/lib/x86_64-linux-gnu/liblz4.so.1
/lib/x86_64-linux-gnu/liblzma.so.5
/lib/x86_64-linux-gnu/libm.so.6 /lib/x86_64-linux-gnu/libm.so.6
/lib/x86_64-linux-gnu/libmfhdfalt.so.0
/lib/x86_64-linux-gnu/libminizip.so.1
/lib/x86_64-linux-gnu/libmvec.so.1 /lib/x86_64-linux-gnu/libmvec.so.1
/lib/x86_64-linux-gnu/libmysqlclient.so.24
/lib/x86_64-linux-gnu/libnetcdf.so.22
/lib/x86_64-linux-gnu/libnettle.so.8
/lib/x86_64-linux-gnu/libnghttp2.so.14
/lib/x86_64-linux-gnu/libnspr4.so
/lib/x86_64-linux-gnu/libnss3.so
/lib/x86_64-linux-gnu/libnssutil3.so
/lib/x86_64-linux-gnu/libodbc.so.2
/lib/x86_64-linux-gnu/libodbcinst.so.2
/lib/x86_64-linux-gnu/libogdi.so.4.1
/lib/x86_64-linux-gnu/libopenjp2.so.7
/lib/x86_64-linux-gnu/libp11-kit.so.0
/lib/x86_64-linux-gnu/libpcre2-8.so.0
/lib/x86_64-linux-gnu/libplc4.so
/lib/x86_64-linux-gnu/libplds4.so
/lib/x86_64-linux-gnu/libpng16.so.16 /lib/x86_64-linux-gnu/libpng16.so.16
/lib/x86_64-linux-gnu/libpoppler.so.147
/lib/x86_64-linux-gnu/libpq.so.5
/lib/x86_64-linux-gnu/libproj.so.25
/lib/x86_64-linux-gnu/libpsl.so.5
/lib/x86_64-linux-gnu/libqhull_r.so.8.0
/lib/x86_64-linux-gnu/librav1e.so.0.7
/lib/x86_64-linux-gnu/libresolv.so.2
/lib/x86_64-linux-gnu/librtmp.so.1
/lib/x86_64-linux-gnu/librttopo.so.1
/lib/x86_64-linux-gnu/libsasl2.so.2
/lib/x86_64-linux-gnu/libsharpyuv.so.0
/lib/x86_64-linux-gnu/libsmime3.so
/lib/x86_64-linux-gnu/libsnappy.so.1
/lib/x86_64-linux-gnu/libspatialite.so.8
/lib/x86_64-linux-gnu/libsqlite3.so.0
/lib/x86_64-linux-gnu/libssh2.so.1
/lib/x86_64-linux-gnu/libssl.so.3
/lib/x86_64-linux-gnu/libsz.so.2
/lib/x86_64-linux-gnu/libtasn1.so.6
/lib/x86_64-linux-gnu/libtiff.so.6
/lib/x86_64-linux-gnu/libtirpc.so.3
/lib/x86_64-linux-gnu/libunistring.so.5
/lib/x86_64-linux-gnu/liburiparser.so.1
/lib/x86_64-linux-gnu/libwebp.so.7
/lib/x86_64-linux-gnu/libxerces-c-3.2.so
/lib/x86_64-linux-gnu/libxml2.so.16
/lib/x86_64-linux-gnu/libxxhash.so.0
/lib/x86_64-linux-gnu/libyuv.so.0
/lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libz.so.1
/lib/x86_64-linux-gnu/libzstd.so.1
/lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
/usr/lib/x86_64-linux-gnu/Scrt1.o /usr/lib/x86_64-linux-gnu/Scrt1.o
/usr/lib/x86_64-linux-gnu/crti.o /usr/lib/x86_64-linux-gnu/crti.o
@@ -400,8 +604,10 @@ radar_simulation
/usr/lib/gcc/x86_64-linux-gnu/15/libstdc++.so /usr/lib/gcc/x86_64-linux-gnu/15/libstdc++.so
/usr/lib/x86_64-linux-gnu/libGLX.so /usr/lib/x86_64-linux-gnu/libGLX.so
/usr/lib/x86_64-linux-gnu/libOpenGL.so /usr/lib/x86_64-linux-gnu/libOpenGL.so
/usr/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722
/usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib/x86_64-linux-gnu/libc_nonshared.a
/usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/x86_64-linux-gnu/libfreetype.so
/usr/lib/x86_64-linux-gnu/libgdal.so
/usr/lib/x86_64-linux-gnu/libglfw.so.3.4 /usr/lib/x86_64-linux-gnu/libglfw.so.3.4
/home/maallyn/radar-simulation/build/CMakeFiles/radar_simulation.dir/glad/src/glad.c.o /home/maallyn/radar-simulation/build/CMakeFiles/radar_simulation.dir/glad/src/glad.c.o
/home/maallyn/radar-simulation/build/CMakeFiles/radar_simulation.dir/src/main.cpp.o /home/maallyn/radar-simulation/build/CMakeFiles/radar_simulation.dir/src/main.cpp.o

File diff suppressed because it is too large Load Diff

View File

@@ -3,15 +3,15 @@
# compile C with /usr/bin/cc # compile C with /usr/bin/cc
# compile CXX with /usr/bin/c++ # compile CXX with /usr/bin/c++
C_DEFINES = C_DEFINES = -DMAP_DIR=\"/home/maallyn/radar-simulation/map\"
C_INCLUDES = -I/home/maallyn/radar-simulation/include -isystem /usr/include/freetype2 C_INCLUDES = -I/home/maallyn/radar-simulation/include -I/usr/include/gdal -isystem /usr/include/freetype2
C_FLAGS = -O3 -DNDEBUG C_FLAGS = -O3 -DNDEBUG
CXX_DEFINES = CXX_DEFINES = -DMAP_DIR=\"/home/maallyn/radar-simulation/map\"
CXX_INCLUDES = -I/home/maallyn/radar-simulation/include -isystem /usr/include/freetype2 CXX_INCLUDES = -I/home/maallyn/radar-simulation/include -I/usr/include/gdal -isystem /usr/include/freetype2
CXX_FLAGS = -O3 -DNDEBUG -std=gnu++17 CXX_FLAGS = -O3 -DNDEBUG -std=gnu++17

View File

@@ -6,6 +6,7 @@ radar_simulation: \
CMakeFiles/radar_simulation.dir/glad/src/glad.c.o \ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o \
/usr/lib/x86_64-linux-gnu/libglfw.so.3.4 \ /usr/lib/x86_64-linux-gnu/libglfw.so.3.4 \
/usr/lib/x86_64-linux-gnu/libfreetype.so \ /usr/lib/x86_64-linux-gnu/libfreetype.so \
/usr/lib/x86_64-linux-gnu/libgdal.so \
/usr/lib/x86_64-linux-gnu/libGLX.so \ /usr/lib/x86_64-linux-gnu/libGLX.so \
/usr/lib/x86_64-linux-gnu/libOpenGL.so \ /usr/lib/x86_64-linux-gnu/libOpenGL.so \
/usr/lib/gcc/x86_64-linux-gnu/15/libstdc++.so \ /usr/lib/gcc/x86_64-linux-gnu/15/libstdc++.so \
@@ -38,8 +39,141 @@ radar_simulation: \
/lib/x86_64-linux-gnu/libbz2.so.1.0 \ /lib/x86_64-linux-gnu/libbz2.so.1.0 \
/lib/x86_64-linux-gnu/libpng16.so.16 \ /lib/x86_64-linux-gnu/libpng16.so.16 \
/lib/x86_64-linux-gnu/libbrotlidec.so.1 \ /lib/x86_64-linux-gnu/libbrotlidec.so.1 \
/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 \
/lib/x86_64-linux-gnu/libodbc.so.2 \
/lib/x86_64-linux-gnu/libodbcinst.so.2 \
/lib/x86_64-linux-gnu/libxml2.so.16 \
/lib/x86_64-linux-gnu/libcrypto.so.3 \
/lib/x86_64-linux-gnu/liblzma.so.5 \
/lib/x86_64-linux-gnu/libdeflate.so.0 \
/lib/x86_64-linux-gnu/liblz4.so.1 \
/lib/x86_64-linux-gnu/libblosc.so.1 \
/lib/libarmadillo.so.14 \
/lib/x86_64-linux-gnu/libqhull_r.so.8.0 \
/lib/x86_64-linux-gnu/libxerces-c-3.2.so \
/lib/x86_64-linux-gnu/libjpeg.so.8 \
/lib/x86_64-linux-gnu/libtiff.so.6 \
/lib/x86_64-linux-gnu/libgeotiff.so.5 \
/lib/x86_64-linux-gnu/libavif.so.16 \
/lib/x86_64-linux-gnu/libheif.so.1 \
/lib/x86_64-linux-gnu/libzstd.so.1 \
/lib/x86_64-linux-gnu/libaec.so.0 \
/lib/x86_64-linux-gnu/libpoppler.so.147 \
/lib/x86_64-linux-gnu/libgif.so.7 \
/lib/x86_64-linux-gnu/libnetcdf.so.22 \
/lib/x86_64-linux-gnu/libcfitsio.so.10 \
/lib/x86_64-linux-gnu/libhdf5_serial.so.310 \
/lib/x86_64-linux-gnu/libwebp.so.7 \
/lib/x86_64-linux-gnu/libsqlite3.so.0 \
/lib/x86_64-linux-gnu/libpq.so.5 \
/lib/x86_64-linux-gnu/libopenjp2.so.7 \
/lib/x86_64-linux-gnu/libkmlbase.so.1 \
/lib/x86_64-linux-gnu/libkmldom.so.1 \
/lib/x86_64-linux-gnu/libkmlengine.so.1 \
/lib/x86_64-linux-gnu/libfyba.so.0 \
/lib/x86_64-linux-gnu/libpcre2-8.so.0 \
/lib/x86_64-linux-gnu/libspatialite.so.8 \
/lib/x86_64-linux-gnu/libmysqlclient.so.24 \
/lib/x86_64-linux-gnu/libfreexl.so.1 \
/lib/x86_64-linux-gnu/libogdi.so.4.1 \
/lib/x86_64-linux-gnu/libexpat.so.1 \
/lib/x86_64-linux-gnu/libgeos_c.so.1 \
/lib/x86_64-linux-gnu/libproj.so.25 \
/lib/x86_64-linux-gnu/libjson-c.so.5 \
/lib/x86_64-linux-gnu/libdfalt.so.0 \
/lib/x86_64-linux-gnu/libmfhdfalt.so.0 \
/lib64/ld-linux-x86-64.so.2 \ /lib64/ld-linux-x86-64.so.2 \
/lib/x86_64-linux-gnu/libbrotlicommon.so.1 /lib/x86_64-linux-gnu/libbrotlicommon.so.1 \
/lib/x86_64-linux-gnu/libnghttp2.so.14 \
/lib/x86_64-linux-gnu/libidn2.so.0 \
/lib/x86_64-linux-gnu/librtmp.so.1 \
/lib/x86_64-linux-gnu/libssh2.so.1 \
/lib/x86_64-linux-gnu/libpsl.so.5 \
/lib/x86_64-linux-gnu/libnettle.so.8 \
/lib/x86_64-linux-gnu/libgnutls.so.30 \
/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 \
/lib/x86_64-linux-gnu/libldap.so.2 \
/lib/x86_64-linux-gnu/liblber.so.2 \
/lib/x86_64-linux-gnu/libltdl.so.7 \
/lib/x86_64-linux-gnu/libxxhash.so.0 \
/lib/x86_64-linux-gnu/libsnappy.so.1 \
/lib/x86_64-linux-gnu/libblas.so.3 \
/lib/x86_64-linux-gnu/liblapack.so.3 \
/lib/x86_64-linux-gnu/libarpack.so.2 \
/lib/x86_64-linux-gnu/libicuuc.so.76 \
/lib/x86_64-linux-gnu/libLerc.so.4 \
/lib/x86_64-linux-gnu/libjbig.so.0 \
/lib/x86_64-linux-gnu/libyuv.so.0 \
/lib/x86_64-linux-gnu/libdav1d.so.7 \
/lib/x86_64-linux-gnu/libgav1.so.1 \
/lib/x86_64-linux-gnu/librav1e.so.0.7 \
/lib/x86_64-linux-gnu/libSvtAv1Enc.so.2 \
/lib/x86_64-linux-gnu/libaom.so.3 \
/lib/x86_64-linux-gnu/libsharpyuv.so.0 \
/lib/x86_64-linux-gnu/libfontconfig.so.1 \
/lib/x86_64-linux-gnu/libgpgmepp.so.6 \
/lib/x86_64-linux-gnu/liblcms2.so.2 \
/lib/x86_64-linux-gnu/libnss3.so \
/lib/x86_64-linux-gnu/libsmime3.so \
/lib/x86_64-linux-gnu/libplc4.so \
/lib/x86_64-linux-gnu/libnspr4.so \
/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.310 \
/lib/x86_64-linux-gnu/libcurl.so.4 \
/lib/x86_64-linux-gnu/libsz.so.2 \
/lib/x86_64-linux-gnu/libssl.so.3 \
/lib/x86_64-linux-gnu/libminizip.so.1 \
/lib/x86_64-linux-gnu/liburiparser.so.1 \
/lib/x86_64-linux-gnu/libfyut.so.0 \
/lib/x86_64-linux-gnu/libfygm.so.0 \
/lib/x86_64-linux-gnu/librttopo.so.1 \
/lib/x86_64-linux-gnu/libresolv.so.2 \
/lib/x86_64-linux-gnu/libtirpc.so.3 \
/lib/x86_64-linux-gnu/libgeos.so.3.13.1 \
/lib/x86_64-linux-gnu/libunistring.so.5 \
/lib/x86_64-linux-gnu/libhogweed.so.6 \
/lib/x86_64-linux-gnu/libgmp.so.10 \
/lib/x86_64-linux-gnu/libp11-kit.so.0 \
/lib/x86_64-linux-gnu/libtasn1.so.6 \
/lib/x86_64-linux-gnu/libkrb5.so.3 \
/lib/x86_64-linux-gnu/libk5crypto.so.3 \
/lib/x86_64-linux-gnu/libcom_err.so.2 \
/lib/x86_64-linux-gnu/libkrb5support.so.0 \
/lib/x86_64-linux-gnu/libsasl2.so.2 \
/lib/x86_64-linux-gnu/libgfortran.so.5 \
/lib/x86_64-linux-gnu/libmvec.so.1 \
/lib/x86_64-linux-gnu/libicudata.so.76 \
/lib/x86_64-linux-gnu/libabsl_synchronization.so.20240722 \
/lib/x86_64-linux-gnu/libgpgme.so.11 \
/lib/x86_64-linux-gnu/libnssutil3.so \
/lib/x86_64-linux-gnu/libplds4.so \
/lib/x86_64-linux-gnu/libffi.so.8 \
/lib/x86_64-linux-gnu/libkeyutils.so.1 \
/lib/x86_64-linux-gnu/libabsl_graphcycles_internal.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_kernel_timeout_internal.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_stacktrace.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_symbolize.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_time.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_malloc_internal.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_base.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_spinlock_wait.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_raw_logging_internal.so.20240722 \
/lib/x86_64-linux-gnu/libassuan.so.9 \
/lib/x86_64-linux-gnu/libgpg-error.so.0 \
/lib/x86_64-linux-gnu/libabsl_debugging_internal.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_demangle_internal.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_strings.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_time_zone.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_demangle_rust.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_strings_internal.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_string_view.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722 \
/usr/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722 \
/usr/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_decode_rust_punycode.so.20240722 \
/lib/x86_64-linux-gnu/libabsl_utf8_for_code_point.so.20240722
/usr/lib/gcc/x86_64-linux-gnu/15/../../../x86_64-linux-gnu/Scrt1.o: /usr/lib/gcc/x86_64-linux-gnu/15/../../../x86_64-linux-gnu/Scrt1.o:
@@ -55,6 +189,8 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/usr/lib/x86_64-linux-gnu/libfreetype.so: /usr/lib/x86_64-linux-gnu/libfreetype.so:
/usr/lib/x86_64-linux-gnu/libgdal.so:
/usr/lib/x86_64-linux-gnu/libGLX.so: /usr/lib/x86_64-linux-gnu/libGLX.so:
/usr/lib/x86_64-linux-gnu/libOpenGL.so: /usr/lib/x86_64-linux-gnu/libOpenGL.so:
@@ -119,6 +255,272 @@ CMakeFiles/radar_simulation.dir/glad/src/glad.c.o:
/lib/x86_64-linux-gnu/libbrotlidec.so.1: /lib/x86_64-linux-gnu/libbrotlidec.so.1:
/lib/x86_64-linux-gnu/libcurl-gnutls.so.4:
/lib/x86_64-linux-gnu/libodbc.so.2:
/lib/x86_64-linux-gnu/libodbcinst.so.2:
/lib/x86_64-linux-gnu/libxml2.so.16:
/lib/x86_64-linux-gnu/libcrypto.so.3:
/lib/x86_64-linux-gnu/liblzma.so.5:
/lib/x86_64-linux-gnu/libdeflate.so.0:
/lib/x86_64-linux-gnu/liblz4.so.1:
/lib/x86_64-linux-gnu/libblosc.so.1:
/lib/libarmadillo.so.14:
/lib/x86_64-linux-gnu/libqhull_r.so.8.0:
/lib/x86_64-linux-gnu/libxerces-c-3.2.so:
/lib/x86_64-linux-gnu/libjpeg.so.8:
/lib/x86_64-linux-gnu/libtiff.so.6:
/lib/x86_64-linux-gnu/libgeotiff.so.5:
/lib/x86_64-linux-gnu/libavif.so.16:
/lib/x86_64-linux-gnu/libheif.so.1:
/lib/x86_64-linux-gnu/libzstd.so.1:
/lib/x86_64-linux-gnu/libaec.so.0:
/lib/x86_64-linux-gnu/libpoppler.so.147:
/lib/x86_64-linux-gnu/libgif.so.7:
/lib/x86_64-linux-gnu/libnetcdf.so.22:
/lib/x86_64-linux-gnu/libcfitsio.so.10:
/lib/x86_64-linux-gnu/libhdf5_serial.so.310:
/lib/x86_64-linux-gnu/libwebp.so.7:
/lib/x86_64-linux-gnu/libsqlite3.so.0:
/lib/x86_64-linux-gnu/libpq.so.5:
/lib/x86_64-linux-gnu/libopenjp2.so.7:
/lib/x86_64-linux-gnu/libkmlbase.so.1:
/lib/x86_64-linux-gnu/libkmldom.so.1:
/lib/x86_64-linux-gnu/libkmlengine.so.1:
/lib/x86_64-linux-gnu/libfyba.so.0:
/lib/x86_64-linux-gnu/libpcre2-8.so.0:
/lib/x86_64-linux-gnu/libspatialite.so.8:
/lib/x86_64-linux-gnu/libmysqlclient.so.24:
/lib/x86_64-linux-gnu/libfreexl.so.1:
/lib/x86_64-linux-gnu/libogdi.so.4.1:
/lib/x86_64-linux-gnu/libexpat.so.1:
/lib/x86_64-linux-gnu/libgeos_c.so.1:
/lib/x86_64-linux-gnu/libproj.so.25:
/lib/x86_64-linux-gnu/libjson-c.so.5:
/lib/x86_64-linux-gnu/libdfalt.so.0:
/lib/x86_64-linux-gnu/libmfhdfalt.so.0:
/lib64/ld-linux-x86-64.so.2: /lib64/ld-linux-x86-64.so.2:
/lib/x86_64-linux-gnu/libbrotlicommon.so.1: /lib/x86_64-linux-gnu/libbrotlicommon.so.1:
/lib/x86_64-linux-gnu/libnghttp2.so.14:
/lib/x86_64-linux-gnu/libidn2.so.0:
/lib/x86_64-linux-gnu/librtmp.so.1:
/lib/x86_64-linux-gnu/libssh2.so.1:
/lib/x86_64-linux-gnu/libpsl.so.5:
/lib/x86_64-linux-gnu/libnettle.so.8:
/lib/x86_64-linux-gnu/libgnutls.so.30:
/lib/x86_64-linux-gnu/libgssapi_krb5.so.2:
/lib/x86_64-linux-gnu/libldap.so.2:
/lib/x86_64-linux-gnu/liblber.so.2:
/lib/x86_64-linux-gnu/libltdl.so.7:
/lib/x86_64-linux-gnu/libxxhash.so.0:
/lib/x86_64-linux-gnu/libsnappy.so.1:
/lib/x86_64-linux-gnu/libblas.so.3:
/lib/x86_64-linux-gnu/liblapack.so.3:
/lib/x86_64-linux-gnu/libarpack.so.2:
/lib/x86_64-linux-gnu/libicuuc.so.76:
/lib/x86_64-linux-gnu/libLerc.so.4:
/lib/x86_64-linux-gnu/libjbig.so.0:
/lib/x86_64-linux-gnu/libyuv.so.0:
/lib/x86_64-linux-gnu/libdav1d.so.7:
/lib/x86_64-linux-gnu/libgav1.so.1:
/lib/x86_64-linux-gnu/librav1e.so.0.7:
/lib/x86_64-linux-gnu/libSvtAv1Enc.so.2:
/lib/x86_64-linux-gnu/libaom.so.3:
/lib/x86_64-linux-gnu/libsharpyuv.so.0:
/lib/x86_64-linux-gnu/libfontconfig.so.1:
/lib/x86_64-linux-gnu/libgpgmepp.so.6:
/lib/x86_64-linux-gnu/liblcms2.so.2:
/lib/x86_64-linux-gnu/libnss3.so:
/lib/x86_64-linux-gnu/libsmime3.so:
/lib/x86_64-linux-gnu/libplc4.so:
/lib/x86_64-linux-gnu/libnspr4.so:
/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.310:
/lib/x86_64-linux-gnu/libcurl.so.4:
/lib/x86_64-linux-gnu/libsz.so.2:
/lib/x86_64-linux-gnu/libssl.so.3:
/lib/x86_64-linux-gnu/libminizip.so.1:
/lib/x86_64-linux-gnu/liburiparser.so.1:
/lib/x86_64-linux-gnu/libfyut.so.0:
/lib/x86_64-linux-gnu/libfygm.so.0:
/lib/x86_64-linux-gnu/librttopo.so.1:
/lib/x86_64-linux-gnu/libresolv.so.2:
/lib/x86_64-linux-gnu/libtirpc.so.3:
/lib/x86_64-linux-gnu/libgeos.so.3.13.1:
/lib/x86_64-linux-gnu/libunistring.so.5:
/lib/x86_64-linux-gnu/libhogweed.so.6:
/lib/x86_64-linux-gnu/libgmp.so.10:
/lib/x86_64-linux-gnu/libp11-kit.so.0:
/lib/x86_64-linux-gnu/libtasn1.so.6:
/lib/x86_64-linux-gnu/libkrb5.so.3:
/lib/x86_64-linux-gnu/libk5crypto.so.3:
/lib/x86_64-linux-gnu/libcom_err.so.2:
/lib/x86_64-linux-gnu/libkrb5support.so.0:
/lib/x86_64-linux-gnu/libsasl2.so.2:
/lib/x86_64-linux-gnu/libgfortran.so.5:
/lib/x86_64-linux-gnu/libmvec.so.1:
/lib/x86_64-linux-gnu/libicudata.so.76:
/lib/x86_64-linux-gnu/libabsl_synchronization.so.20240722:
/lib/x86_64-linux-gnu/libgpgme.so.11:
/lib/x86_64-linux-gnu/libnssutil3.so:
/lib/x86_64-linux-gnu/libplds4.so:
/lib/x86_64-linux-gnu/libffi.so.8:
/lib/x86_64-linux-gnu/libkeyutils.so.1:
/lib/x86_64-linux-gnu/libabsl_graphcycles_internal.so.20240722:
/lib/x86_64-linux-gnu/libabsl_kernel_timeout_internal.so.20240722:
/lib/x86_64-linux-gnu/libabsl_stacktrace.so.20240722:
/lib/x86_64-linux-gnu/libabsl_symbolize.so.20240722:
/lib/x86_64-linux-gnu/libabsl_time.so.20240722:
/lib/x86_64-linux-gnu/libabsl_malloc_internal.so.20240722:
/lib/x86_64-linux-gnu/libabsl_base.so.20240722:
/lib/x86_64-linux-gnu/libabsl_spinlock_wait.so.20240722:
/lib/x86_64-linux-gnu/libabsl_raw_logging_internal.so.20240722:
/lib/x86_64-linux-gnu/libassuan.so.9:
/lib/x86_64-linux-gnu/libgpg-error.so.0:
/lib/x86_64-linux-gnu/libabsl_debugging_internal.so.20240722:
/lib/x86_64-linux-gnu/libabsl_demangle_internal.so.20240722:
/lib/x86_64-linux-gnu/libabsl_strings.so.20240722:
/lib/x86_64-linux-gnu/libabsl_time_zone.so.20240722:
/lib/x86_64-linux-gnu/libabsl_demangle_rust.so.20240722:
/lib/x86_64-linux-gnu/libabsl_strings_internal.so.20240722:
/lib/x86_64-linux-gnu/libabsl_string_view.so.20240722:
/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722:
/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722:
/usr/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722:
/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722:
/usr/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722:
/lib/x86_64-linux-gnu/libabsl_throw_delegate.so.20240722:
/lib/x86_64-linux-gnu/libabsl_decode_rust_punycode.so.20240722:
/lib/x86_64-linux-gnu/libabsl_utf8_for_code_point.so.20240722:

View File

@@ -1 +1 @@
/usr/bin/c++ -O3 -DNDEBUG -Wl,--dependency-file=CMakeFiles/radar_simulation.dir/link.d CMakeFiles/radar_simulation.dir/src/main.cpp.o CMakeFiles/radar_simulation.dir/glad/src/glad.c.o -o radar_simulation /usr/lib/x86_64-linux-gnu/libglfw.so.3.4 /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/x86_64-linux-gnu/libGLX.so /usr/lib/x86_64-linux-gnu/libOpenGL.so /usr/bin/c++ -O3 -DNDEBUG -Wl,--dependency-file=CMakeFiles/radar_simulation.dir/link.d CMakeFiles/radar_simulation.dir/src/main.cpp.o CMakeFiles/radar_simulation.dir/glad/src/glad.c.o -o radar_simulation /usr/lib/x86_64-linux-gnu/libglfw.so.3.4 /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/x86_64-linux-gnu/libgdal.so /usr/lib/x86_64-linux-gnu/libGLX.so /usr/lib/x86_64-linux-gnu/libOpenGL.so

View File

@@ -99,7 +99,10 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: \
/usr/include/freetype2/freetype/ftimage.h \ /usr/include/freetype2/freetype/ftimage.h \
/usr/include/freetype2/freetype/fterrors.h \ /usr/include/freetype2/freetype/fterrors.h \
/usr/include/freetype2/freetype/ftmoderr.h \ /usr/include/freetype2/freetype/ftmoderr.h \
/usr/include/freetype2/freetype/fterrdef.h /usr/include/c++/15/cmath \ /usr/include/freetype2/freetype/fterrdef.h /usr/include/gdal/gdal_priv.h \
/usr/include/gdal/gdal.h /usr/include/gdal/gdal_version.h \
/usr/include/gdal/cpl_port.h /usr/include/gdal/cpl_config.h \
/usr/include/c++/15/math.h /usr/include/c++/15/cmath \
/usr/include/c++/15/bits/requires_hosted.h \ /usr/include/c++/15/bits/requires_hosted.h \
/usr/include/c++/15/bits/cpp_type_traits.h \ /usr/include/c++/15/bits/cpp_type_traits.h \
/usr/include/c++/15/bits/version.h /usr/include/c++/15/type_traits \ /usr/include/c++/15/bits/version.h /usr/include/c++/15/type_traits \
@@ -140,58 +143,47 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: \
/usr/include/c++/15/tr1/modified_bessel_func.tcc \ /usr/include/c++/15/tr1/modified_bessel_func.tcc \
/usr/include/c++/15/tr1/poly_hermite.tcc \ /usr/include/c++/15/tr1/poly_hermite.tcc \
/usr/include/c++/15/tr1/poly_laguerre.tcc \ /usr/include/c++/15/tr1/poly_laguerre.tcc \
/usr/include/c++/15/tr1/riemann_zeta.tcc /usr/include/c++/15/vector \ /usr/include/c++/15/tr1/riemann_zeta.tcc /usr/include/ctype.h \
/usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \
/usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \
/usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/x86_64-linux-gnu/bits/types/error_t.h \
/usr/include/gdal/cpl_error.h /usr/include/c++/15/memory \
/usr/include/c++/15/bits/memoryfwd.h \
/usr/include/c++/15/bits/allocator.h \ /usr/include/c++/15/bits/allocator.h \
/usr/include/x86_64-linux-gnu/c++/15/bits/c++allocator.h \ /usr/include/x86_64-linux-gnu/c++/15/bits/c++allocator.h \
/usr/include/c++/15/bits/new_allocator.h /usr/include/c++/15/new \ /usr/include/c++/15/bits/new_allocator.h /usr/include/c++/15/new \
/usr/include/c++/15/bits/exception.h \ /usr/include/c++/15/bits/exception.h \
/usr/include/c++/15/bits/memoryfwd.h \ /usr/include/c++/15/bits/stl_tempbuf.h \
/usr/include/c++/15/bits/stl_construct.h \ /usr/include/c++/15/bits/stl_construct.h \
/usr/include/c++/15/bits/stl_uninitialized.h \ /usr/include/c++/15/bits/stl_uninitialized.h \
/usr/include/c++/15/ext/alloc_traits.h \ /usr/include/c++/15/ext/alloc_traits.h \
/usr/include/c++/15/bits/alloc_traits.h \ /usr/include/c++/15/bits/alloc_traits.h \
/usr/include/c++/15/bits/stl_vector.h \ /usr/include/c++/15/bits/stl_raw_storage_iter.h \
/usr/include/c++/15/initializer_list \ /usr/include/c++/15/bits/align.h \
/usr/include/c++/15/bits/stl_bvector.h \ /usr/include/c++/15/bits/uses_allocator.h \
/usr/include/c++/15/bits/functional_hash.h \ /usr/include/c++/15/bits/unique_ptr.h /usr/include/c++/15/tuple \
/usr/include/c++/15/bits/hash_bytes.h /usr/include/c++/15/bits/refwrap.h \
/usr/include/c++/15/bits/invoke.h \ /usr/include/c++/15/bits/invoke.h \
/usr/include/c++/15/bits/stl_function.h \ /usr/include/c++/15/bits/stl_function.h \
/usr/include/c++/15/backward/binders.h \ /usr/include/c++/15/backward/binders.h \
/usr/include/c++/15/bits/range_access.h \ /usr/include/c++/15/bits/functional_hash.h \
/usr/include/c++/15/bits/vector.tcc \ /usr/include/c++/15/bits/hash_bytes.h \
/usr/include/c++/15/bits/memory_resource.h /usr/include/c++/15/cstddef \ /usr/include/c++/15/bits/shared_ptr.h /usr/include/c++/15/iosfwd \
/usr/include/c++/15/bits/uses_allocator.h \ /usr/include/c++/15/bits/stringfwd.h /usr/include/c++/15/bits/postypes.h \
/usr/include/c++/15/bits/uses_allocator_args.h /usr/include/c++/15/tuple \ /usr/include/c++/15/cwchar /usr/include/wchar.h \
/usr/include/c++/15/string /usr/include/c++/15/bits/stringfwd.h \ /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \
/usr/include/c++/15/bits/char_traits.h \
/usr/include/c++/15/bits/postypes.h /usr/include/c++/15/cwchar \
/usr/include/wchar.h /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \
/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/wchar2-decl.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/wchar2.h \
/usr/include/c++/15/bits/localefwd.h \ /usr/include/c++/15/bits/shared_ptr_base.h /usr/include/c++/15/typeinfo \
/usr/include/x86_64-linux-gnu/c++/15/bits/c++locale.h \ /usr/include/c++/15/bits/allocated_ptr.h \
/usr/include/c++/15/clocale /usr/include/locale.h \ /usr/include/c++/15/bits/refwrap.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/15/iosfwd \ /usr/include/c++/15/ext/aligned_buffer.h \
/usr/include/c++/15/cctype /usr/include/ctype.h \ /usr/include/c++/15/ext/atomicity.h \
/usr/include/c++/15/bits/ostream_insert.h \
/usr/include/c++/15/bits/cxxabi_forced.h \
/usr/include/c++/15/bits/basic_string.h /usr/include/c++/15/string_view \
/usr/include/c++/15/bits/string_view.tcc \
/usr/include/c++/15/ext/string_conversions.h /usr/include/c++/15/cstdio \
/usr/include/c++/15/cerrno /usr/include/errno.h \
/usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \
/usr/include/x86_64-linux-gnu/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/x86_64-linux-gnu/bits/types/error_t.h \
/usr/include/c++/15/bits/charconv.h \
/usr/include/c++/15/bits/basic_string.tcc /usr/include/c++/15/fstream \
/usr/include/c++/15/istream /usr/include/c++/15/ios \
/usr/include/c++/15/exception /usr/include/c++/15/bits/exception_ptr.h \
/usr/include/c++/15/bits/cxxabi_init_exception.h \
/usr/include/c++/15/typeinfo /usr/include/c++/15/bits/nested_exception.h \
/usr/include/c++/15/bits/ios_base.h /usr/include/c++/15/ext/atomicity.h \
/usr/include/x86_64-linux-gnu/c++/15/bits/gthr.h \ /usr/include/x86_64-linux-gnu/c++/15/bits/gthr.h \
/usr/include/x86_64-linux-gnu/c++/15/bits/gthr-default.h \ /usr/include/x86_64-linux-gnu/c++/15/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h \ /usr/include/pthread.h /usr/include/sched.h \
@@ -206,13 +198,64 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: \
/usr/include/x86_64-linux-gnu/asm/posix_types_64.h \ /usr/include/x86_64-linux-gnu/asm/posix_types_64.h \
/usr/include/asm-generic/posix_types.h \ /usr/include/asm-generic/posix_types.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \
/usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ /usr/include/x86_64-linux-gnu/bits/cpu-set.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \
/usr/include/x86_64-linux-gnu/c++/15/bits/atomic_word.h \ /usr/include/x86_64-linux-gnu/c++/15/bits/atomic_word.h \
/usr/include/x86_64-linux-gnu/sys/single_threaded.h \ /usr/include/x86_64-linux-gnu/sys/single_threaded.h \
/usr/include/c++/15/ext/concurrence.h /usr/include/c++/15/exception \
/usr/include/c++/15/bits/exception_ptr.h \
/usr/include/c++/15/bits/cxxabi_init_exception.h \
/usr/include/c++/15/bits/nested_exception.h \
/usr/include/c++/15/bits/shared_ptr_atomic.h \
/usr/include/c++/15/bits/atomic_base.h \
/usr/include/c++/15/bits/atomic_lockfree_defines.h \
/usr/include/c++/15/backward/auto_ptr.h \
/usr/include/c++/15/pstl/glue_memory_defs.h \
/usr/include/c++/15/pstl/execution_defs.h /usr/include/c++/15/string \
/usr/include/c++/15/bits/char_traits.h \
/usr/include/c++/15/bits/localefwd.h \
/usr/include/x86_64-linux-gnu/c++/15/bits/c++locale.h \
/usr/include/c++/15/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/15/cctype \
/usr/include/c++/15/bits/ostream_insert.h \
/usr/include/c++/15/bits/cxxabi_forced.h \
/usr/include/c++/15/bits/range_access.h \
/usr/include/c++/15/initializer_list \
/usr/include/c++/15/bits/basic_string.h /usr/include/c++/15/string_view \
/usr/include/c++/15/bits/string_view.tcc \
/usr/include/c++/15/ext/string_conversions.h /usr/include/c++/15/cstdio \
/usr/include/c++/15/cerrno /usr/include/c++/15/bits/charconv.h \
/usr/include/c++/15/bits/basic_string.tcc \
/usr/include/c++/15/bits/memory_resource.h /usr/include/c++/15/cstddef \
/usr/include/c++/15/bits/uses_allocator_args.h \
/usr/include/gdal/cpl_progress.h /usr/include/gdal/cpl_virtualmem.h \
/usr/include/gdal/cpl_vsi.h \
/usr/lib/gcc/x86_64-linux-gnu/15/include/stdbool.h /usr/include/unistd.h \
/usr/include/x86_64-linux-gnu/bits/posix_opt.h \
/usr/include/x86_64-linux-gnu/bits/environments.h \
/usr/include/x86_64-linux-gnu/bits/confname.h \
/usr/include/x86_64-linux-gnu/bits/getopt_posix.h \
/usr/include/x86_64-linux-gnu/bits/getopt_core.h \
/usr/include/x86_64-linux-gnu/bits/unistd.h \
/usr/include/x86_64-linux-gnu/bits/unistd-decl.h \
/usr/include/x86_64-linux-gnu/bits/unistd_ext.h \
/usr/include/linux/close_range.h \
/usr/include/x86_64-linux-gnu/sys/stat.h \
/usr/include/x86_64-linux-gnu/bits/stat.h \
/usr/include/x86_64-linux-gnu/bits/struct_stat.h \
/usr/include/x86_64-linux-gnu/bits/statx.h /usr/include/linux/stat.h \
/usr/include/x86_64-linux-gnu/bits/statx-generic.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_statx_timestamp.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_statx.h \
/usr/include/gdal/cpl_minixml.h /usr/include/gdal/ogr_api.h \
/usr/include/gdal/ogr_core.h /usr/include/gdal/gdal_frmts.h \
/usr/include/gdal/gdalsubdatasetinfo.h /usr/include/gdal/cpl_conv.h \
/usr/include/gdal/cpl_string.h /usr/include/c++/15/vector \
/usr/include/c++/15/bits/stl_vector.h \
/usr/include/c++/15/bits/stl_bvector.h \
/usr/include/c++/15/bits/vector.tcc /usr/include/gdal/cpl_multiproc.h \
/usr/include/gdal/cpl_atomic_ops.h /usr/include/c++/15/complex \
/usr/include/c++/15/sstream /usr/include/c++/15/istream \
/usr/include/c++/15/ios /usr/include/c++/15/bits/ios_base.h \
/usr/include/c++/15/bits/locale_classes.h \ /usr/include/c++/15/bits/locale_classes.h \
/usr/include/c++/15/bits/locale_classes.tcc \ /usr/include/c++/15/bits/locale_classes.tcc \
/usr/include/c++/15/system_error \ /usr/include/c++/15/system_error \
@@ -228,15 +271,31 @@ CMakeFiles/radar_simulation.dir/src/main.cpp.o: \
/usr/include/c++/15/bits/locale_facets.tcc \ /usr/include/c++/15/bits/locale_facets.tcc \
/usr/include/c++/15/bits/basic_ios.tcc /usr/include/c++/15/ostream \ /usr/include/c++/15/bits/basic_ios.tcc /usr/include/c++/15/ostream \
/usr/include/c++/15/bits/ostream.h /usr/include/c++/15/bits/ostream.tcc \ /usr/include/c++/15/bits/ostream.h /usr/include/c++/15/bits/ostream.tcc \
/usr/include/c++/15/bits/istream.tcc /usr/include/c++/15/bits/codecvt.h \ /usr/include/c++/15/bits/istream.tcc \
/usr/include/c++/15/bits/sstream.tcc /usr/include/c++/15/cstdint \
/usr/include/c++/15/iterator /usr/include/c++/15/bits/stream_iterator.h \
/usr/include/c++/15/map /usr/include/c++/15/bits/stl_tree.h \
/usr/include/c++/15/bits/node_handle.h \
/usr/include/c++/15/bits/stl_map.h \
/usr/include/c++/15/bits/stl_multimap.h \
/usr/include/c++/15/bits/erase_if.h /usr/include/c++/15/set \
/usr/include/c++/15/bits/stl_set.h \
/usr/include/c++/15/bits/stl_multiset.h /usr/include/gdal/ogr_feature.h \
/usr/include/gdal/ogr_featurestyle.h /usr/include/gdal/ogr_geometry.h \
/usr/include/gdal/cpl_json.h \
/usr/include/gdal/ogr_geomcoordinateprecision.h \
/usr/include/gdal/ogr_spatialref.h /usr/include/gdal/ogr_srs_api.h \
/usr/include/c++/15/climits /usr/include/gdal/ogrsf_frmts.h \
/usr/include/gdal/gdal_priv.h /usr/include/c++/15/deque \
/usr/include/c++/15/bits/stl_deque.h /usr/include/c++/15/bits/deque.tcc \
/usr/include/gdal/cpl_conv.h /usr/include/c++/15/fstream \
/usr/include/c++/15/bits/codecvt.h \
/usr/include/x86_64-linux-gnu/c++/15/bits/basic_file.h \ /usr/include/x86_64-linux-gnu/c++/15/bits/basic_file.h \
/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/iostream \
/usr/include/c++/15/bits/sstream.tcc /usr/include/c++/15/iostream \
/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 \
/usr/include/c++/15/bits/uniform_int_dist.h \ /usr/include/c++/15/bits/uniform_int_dist.h \
/usr/include/c++/15/bits/stl_tempbuf.h \
/usr/include/c++/15/pstl/glue_algorithm_defs.h \ /usr/include/c++/15/pstl/glue_algorithm_defs.h \
/usr/include/c++/15/pstl/execution_defs.h /usr/include/c++/15/cstring /usr/include/c++/15/cstring

Binary file not shown.

View File

@@ -0,0 +1,20 @@
#version 330 core
// Feature 9: PPI Shoreline / Terrain — fragment stage
// Active points render in P7 blue; fading points render in P7 greenish-yellow
// with brightness proportional to vFade.
in float vFade;
in float vActive;
uniform vec3 uActiveColor; // P7A blue
uniform vec3 uPersistColor; // P7P greenish yellow
out vec4 fragColor;
void main()
{
if (vFade <= 0.01) discard;
vec3 col = (vActive > 0.5)
? uActiveColor
: uPersistColor * vFade;
fragColor = vec4(col, vFade);
}

View File

@@ -0,0 +1,49 @@
#version 330 core
// Feature 9: PPI Shoreline / Terrain
// Each vertex encodes (bearingDeg, rangeMiles) in polar radar coordinates.
// The vertex shader converts to NDC and computes sweep-based fade on the GPU,
// so the geometry buffer is static — only uniforms change each frame.
layout(location = 0) in vec2 aBearingRange; // x = bearing °CW-from-N, y = range miles
uniform vec2 uCenter; // NDC centre of PPI scope
uniform float uPpiRx; // ppiR * 2.0 / W (one full-radius in NDC, x axis)
uniform float uPpiRy; // ppiR * 2.0 / H (one full-radius in NDC, y axis)
uniform float uMaxRange; // current max range (miles)
uniform float uSweepAngle; // current sweep angle (degrees CW from N)
uniform float uSweepDegPS; // sweep speed (degrees / second)
uniform float uPersist; // phosphor persistence duration (seconds)
out float vFade; // 0..1 brightness multiplier
out float vActive; // 1.0 when sweep head is over this point
const float PI = 3.14159265358979;
const float THRESH = 3.5; // degrees — active window around sweep head
void main()
{
float bearDeg = aBearingRange.x;
float rangeMi = aBearingRange.y;
float rangeFrac = rangeMi / uMaxRange;
// Push out-of-range points outside the NDC clip volume
if (rangeFrac > 1.0) {
gl_Position = vec4(2.0, 2.0, 2.0, 1.0);
vFade = 0.0;
vActive = 0.0;
return;
}
// Convert polar radar coords → NDC
// North (0°) = +Y in NDC; East (90°) = +X in NDC
float bearRad = bearDeg * PI / 180.0;
float nx = uCenter.x + rangeFrac * uPpiRx * sin(bearRad);
float ny = uCenter.y + rangeFrac * uPpiRy * cos(bearRad);
gl_Position = vec4(nx, ny, 0.0, 1.0);
gl_PointSize = 2.0;
// Degrees the sweep has travelled past this point since last illumination
float angBehind = mod(uSweepAngle - bearDeg + 360.0, 360.0);
float timeSinceLit = angBehind / uSweepDegPS;
vFade = clamp(1.0 - timeSinceLit / uPersist, 0.0, 1.0);
vActive = (angBehind < THRESH) ? 1.0 : 0.0;
}

BIN
map/US5WA45M.000 Executable file

Binary file not shown.

BIN
map/n48_w123_1arc_v3.tif Executable file

Binary file not shown.

View File

@@ -0,0 +1,20 @@
#version 330 core
// Feature 9: PPI Shoreline / Terrain — fragment stage
// Active points render in P7 blue; fading points render in P7 greenish-yellow
// with brightness proportional to vFade.
in float vFade;
in float vActive;
uniform vec3 uActiveColor; // P7A blue
uniform vec3 uPersistColor; // P7P greenish yellow
out vec4 fragColor;
void main()
{
if (vFade <= 0.01) discard;
vec3 col = (vActive > 0.5)
? uActiveColor
: uPersistColor * vFade;
fragColor = vec4(col, vFade);
}

View File

@@ -0,0 +1,49 @@
#version 330 core
// Feature 9: PPI Shoreline / Terrain
// Each vertex encodes (bearingDeg, rangeMiles) in polar radar coordinates.
// The vertex shader converts to NDC and computes sweep-based fade on the GPU,
// so the geometry buffer is static — only uniforms change each frame.
layout(location = 0) in vec2 aBearingRange; // x = bearing °CW-from-N, y = range miles
uniform vec2 uCenter; // NDC centre of PPI scope
uniform float uPpiRx; // ppiR * 2.0 / W (one full-radius in NDC, x axis)
uniform float uPpiRy; // ppiR * 2.0 / H (one full-radius in NDC, y axis)
uniform float uMaxRange; // current max range (miles)
uniform float uSweepAngle; // current sweep angle (degrees CW from N)
uniform float uSweepDegPS; // sweep speed (degrees / second)
uniform float uPersist; // phosphor persistence duration (seconds)
out float vFade; // 0..1 brightness multiplier
out float vActive; // 1.0 when sweep head is over this point
const float PI = 3.14159265358979;
const float THRESH = 3.5; // degrees — active window around sweep head
void main()
{
float bearDeg = aBearingRange.x;
float rangeMi = aBearingRange.y;
float rangeFrac = rangeMi / uMaxRange;
// Push out-of-range points outside the NDC clip volume
if (rangeFrac > 1.0) {
gl_Position = vec4(2.0, 2.0, 2.0, 1.0);
vFade = 0.0;
vActive = 0.0;
return;
}
// Convert polar radar coords → NDC
// North (0°) = +Y in NDC; East (90°) = +X in NDC
float bearRad = bearDeg * PI / 180.0;
float nx = uCenter.x + rangeFrac * uPpiRx * sin(bearRad);
float ny = uCenter.y + rangeFrac * uPpiRy * cos(bearRad);
gl_Position = vec4(nx, ny, 0.0, 1.0);
gl_PointSize = 2.0;
// Degrees the sweep has travelled past this point since last illumination
float angBehind = mod(uSweepAngle - bearDeg + 360.0, 360.0);
float timeSinceLit = angBehind / uSweepDegPS;
vFade = clamp(1.0 - timeSinceLit / uPersist, 0.0, 1.0);
vActive = (angBehind < THRESH) ? 1.0 : 0.0;
}

View File

@@ -1,4 +1,4 @@
// Radar Simulation — Feature Test: 16 // Radar Simulation — Feature Test: 16, 9
// 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, degree labels, and outer label ring // Feature 2: PPI bearing ring with tick marks, degree labels, and outer label ring
// Feature 3: Replaceable A scope graticule — cycles through 2/5/10/15 mi ranges, // Feature 3: Replaceable A scope graticule — cycles through 2/5/10/15 mi ranges,
@@ -15,6 +15,11 @@
#include <ft2build.h> #include <ft2build.h>
#include FT_FREETYPE_H #include FT_FREETYPE_H
// GDAL / OGR — for ENC S-57 shoreline and DEM terrain loading
#include <gdal_priv.h>
#include <ogrsf_frmts.h>
#include <cpl_conv.h>
#include <cmath> #include <cmath>
#include <vector> #include <vector>
#include <string> #include <string>
@@ -69,6 +74,12 @@ static constexpr int TRAIL_SEGS = 50;
// Feature 5 — target glow lifetime (s) after sweep passes // Feature 5 — target glow lifetime (s) after sweep passes
static constexpr float TARG_PERSIST = 5.0f; static constexpr float TARG_PERSIST = 5.0f;
// ─── Radar location (WGS84, latitude first) ──────────────────────────────────
// Middle of Bellingham Bay, 100-foot platform
static constexpr double RADAR_LAT = 48.74361448950435;
static constexpr double RADAR_LON = -122.56466911663048;
static constexpr float MAX_RANGE_MILES = 6.0f;
// ─── 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; }
@@ -450,17 +461,25 @@ static BearingGraticule buildBearingGraticule(const Layout& L, const FontAtlas&
struct RangeConfig { struct RangeConfig {
float maxMiles; float maxMiles;
int numMajor; int numRings;
int numMinorPerMajor; float rings[8]; // explicit ring positions in miles (up to 8)
}; };
static const RangeConfig RANGE_CONFIGS[4] = { // PPI scope range ring configs (selectable by operator): 2, 4, 6 miles
{ 2.0f, 2, 4 }, // labels: 1, 2 mi static const RangeConfig RANGE_CONFIGS[3] = {
{ 5.0f, 5, 1 }, // labels: 1,2,3,4,5 mi { 2.0f, 2, { 1.0f, 2.0f } },
{ 10.0f, 5, 1 }, // labels: 2,4,6,8,10 mi { 4.0f, 2, { 2.0f, 4.0f } },
{ 15.0f, 5, 2 }, // labels: 3,6,9,12,15 mi { 6.0f, 4, { 1.0f, 2.0f, 4.0f, 6.0f } },
}; };
static constexpr int RANGE_COUNT = 4; static constexpr int RANGE_COUNT = 3;
// A scope graticule configs — independent from PPI: 2, 4, 6 miles
static const RangeConfig ASCOPE_RANGE_CONFIGS[3] = {
{ 2.0f, 2, { 1.0f, 2.0f } },
{ 4.0f, 2, { 2.0f, 4.0f } },
{ 6.0f, 4, { 1.0f, 2.0f, 4.0f, 6.0f } },
};
static constexpr int ASCOPE_RANGE_COUNT = 3;
// ─── Feature 3: A scope replaceable graticule ──────────────────────────────── // ─── Feature 3: A scope replaceable graticule ────────────────────────────────
@@ -521,32 +540,21 @@ static AScopeGraticule buildAScopeGraticule(
for (int i = 1; i <= 3; ++i) for (int i = 1; i <= 3; ++i)
ln(gx0, gy0 + sigH * i * 0.25f, gx1, gy0 + sigH * i * 0.25f); ln(gx0, gy0 + sigH * i * 0.25f, gx1, gy0 + sigH * i * 0.25f);
// Vertical tick marks // Vertical tick marks at each explicit ring position
const float majorSpan = sigW / rc.numMajor; for (int ri = 0; ri < rc.numRings; ++ri) {
const float minorSpan = majorSpan / (rc.numMinorPerMajor + 1); float xMaj = gx0 + (rc.rings[ri] / rc.maxMiles) * sigW;
const float minorTickH = sigH * 0.35f;
for (int m = 0; m < rc.numMajor; ++m) {
float xMaj = gx0 + (m + 1) * majorSpan;
ln(xMaj, gy1, xMaj, gy0); ln(xMaj, gy1, xMaj, gy0);
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; ag.lineCount = (int)lineV.size() / 2;
makeLineVAO(ag.lineVAO, ag.lineVBO, lineV); makeLineVAO(ag.lineVAO, ag.lineVBO, lineV);
// Range labels at each major tick // Range labels at each ring tick
std::vector<float> textV; std::vector<float> textV;
const float labelY = L.asTop + asH * 0.90f; const float labelY = L.asTop + asH * 0.90f;
const float milesPerMajor = rc.maxMiles / rc.numMajor; for (int ri = 0; ri < rc.numRings; ++ri) {
for (int m = 1; m <= rc.numMajor; ++m) { float x = gx0 + (rc.rings[ri] / rc.maxMiles) * sigW;
float x = gx0 + m * majorSpan; int labelMi = (int)std::round(rc.rings[ri]);
int labelMi = (int)std::round(m * milesPerMajor);
appendTextQuads(textV, fa, std::to_string(labelMi), x, labelY, W, H); appendTextQuads(textV, fa, std::to_string(labelMi), x, labelY, W, H);
} }
ag.textVerts = (int)textV.size() / 4; ag.textVerts = (int)textV.size() / 4;
@@ -595,16 +603,16 @@ static void buildRingVerts(std::vector<float>& v,
float sweepAngle, float W, float H) float sweepAngle, float W, float H)
{ {
const RangeConfig& rc = RANGE_CONFIGS[rangeIdx]; const RangeConfig& rc = RANGE_CONFIGS[rangeIdx];
const int nr = rc.numMajor; const int nr = rc.numRings;
auto push = [&](float px, float py, float r, float g, float b) { 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(ndcX(px,W)); v.push_back(ndcY(py,H));
v.push_back(r); v.push_back(g); v.push_back(b); v.push_back(r); v.push_back(g); v.push_back(b);
}; };
// Full persistence rings (dim greenish yellow) // Full persistence rings (dim greenish yellow) at explicit ring positions
for (int ri = 1; ri <= nr; ++ri) { for (int ri = 0; ri < nr; ++ri) {
float frac = (float)ri / nr; float frac = rc.rings[ri] / rc.maxMiles;
for (int i = 0; i <= RING_SEGS; ++i) { for (int i = 0; i <= RING_SEGS; ++i) {
float a = 2.0f * PI * i / RING_SEGS; float a = 2.0f * PI * i / RING_SEGS;
push(L.ppiCX + frac*L.ppiR*std::cos(a), push(L.ppiCX + frac*L.ppiR*std::cos(a),
@@ -613,9 +621,9 @@ static void buildRingVerts(std::vector<float>& v,
} }
} }
// Sweep trail arcs: gradient from active blue at head to dim persistence at tail // Sweep trail arcs at each ring
for (int ri = 1; ri <= nr; ++ri) { for (int ri = 0; ri < nr; ++ri) {
float frac = (float)ri / nr; float frac = rc.rings[ri] / rc.maxMiles;
for (int i = 0; i <= TRAIL_SEGS; ++i) { for (int i = 0; i <= TRAIL_SEGS; ++i) {
float t = 1.0f - (float)i / TRAIL_SEGS; float t = 1.0f - (float)i / TRAIL_SEGS;
float ang = sweepAngle - (float)i * TRAIL_DEG / TRAIL_SEGS; float ang = sweepAngle - (float)i * TRAIL_DEG / TRAIL_SEGS;
@@ -690,7 +698,8 @@ static void renderRingLayer(RingLayer& rl, const Layout& L,
glUseProgram(rl.prog); glUseProgram(rl.prog);
glBindVertexArray(rl.vao); glBindVertexArray(rl.vao);
const int nr = RANGE_CONFIGS[rangeIdx].numMajor; const RangeConfig& rcDraw = RANGE_CONFIGS[rangeIdx];
const int nr = rcDraw.numRings;
int off = 0; int off = 0;
for (int ri = 0; ri < nr; ++ri) { for (int ri = 0; ri < nr; ++ri) {
glDrawArrays(GL_LINE_STRIP, off, RING_SEGS+1); glDrawArrays(GL_LINE_STRIP, off, RING_SEGS+1);
@@ -723,11 +732,11 @@ static void renderRingLayer(RingLayer& rl, const Layout& L,
if (lr + lg + lb > 0.01f) { if (lr + lg + lb > 0.01f) {
std::vector<float> tv; std::vector<float> tv;
for (int ri = 1; ri <= nr; ++ri) { for (int ri = 0; ri < nr; ++ri) {
float frac = (float)ri / nr; float frac = rcDraw.rings[ri] / rcDraw.maxMiles;
float px = L.ppiCX; float px = L.ppiCX;
float py = L.ppiCY + frac * L.ppiR + LABEL_OFFSET_PX; float py = L.ppiCY + frac * L.ppiR + LABEL_OFFSET_PX;
int lmi = (int)std::round(RANGE_CONFIGS[rangeIdx].maxMiles * frac); int lmi = (int)std::round(rcDraw.rings[ri]);
appendTextQuads(tv, fa, std::to_string(lmi), px, py, W, H); appendTextQuads(tv, fa, std::to_string(lmi), px, py, W, H);
} }
if (!tv.empty()) { if (!tv.empty()) {
@@ -1217,6 +1226,318 @@ static void renderGratNotifyWindow(GratNotifyWindow& gn, const Layout& L,
glDisable(GL_SCISSOR_TEST); glDisable(GL_SCISSOR_TEST);
} }
// ─── Feature 9: Shoreline & Terrain ──────────────────────────────────────────
//
// Two data sources are combined into one GL_POINTS buffer:
//
// 1. NOAA ENC S-57 (COALNE layer) — precise nautical coastline.
// Line-string vertices are densified with intermediate points every
// ~40 m so the coastline appears continuous on-screen.
//
// 2. USGS 3DEP 1/3-arc-second DEM (GeoTIFF) — terrain elevation grid.
// All land pixels (elevation > 0 m) within the 15-mile radius are
// sampled at ~150 m intervals and added as terrain-return points.
// (Full line-of-sight shadow calculation is deferred to a later
// feature iteration.)
//
// The vertex shader holds the geometry fixed; sweep-based phosphor fade is
// computed entirely on the GPU from a small set of uniforms each frame.
// Convert WGS84 lat/lon to radar-local bearing (° CW from N) and range (miles).
// Uses flat-earth approximation — accurate to <0.01% at 15-mile range.
static void latLonToRadar(double lat, double lon,
float& bearDeg, float& rangeMi)
{
constexpr double MI_PER_DEG_LAT = 69.11;
double cosLat = std::cos(RADAR_LAT * M_PI / 180.0);
double dy = (lat - RADAR_LAT) * MI_PER_DEG_LAT; // + = north
double dx = (lon - RADAR_LON) * MI_PER_DEG_LAT * cosLat; // + = east
rangeMi = static_cast<float>(std::sqrt(dx*dx + dy*dy));
bearDeg = static_cast<float>(std::atan2(dx, dy) * 180.0 / M_PI);
if (bearDeg < 0.0f) bearDeg += 360.0f;
}
// Vertex: (bearingDeg, rangeMiles)
struct ShorelineVert { float bearDeg; float rangeMi; };
// ── ENC coastline loading ─────────────────────────────────────────────────────
// Recursively extract line-string geometry points, densifying at stepMiles.
static void appendENCGeomPts(OGRGeometry* geom, float maxRange,
float stepMiles,
std::vector<ShorelineVert>& pts)
{
if (!geom) return;
OGRwkbGeometryType gtype = wkbFlatten(geom->getGeometryType());
if (gtype == wkbLineString || gtype == wkbLinearRing) {
OGRLineString* ls = geom->toLineString();
int n = ls->getNumPoints();
if (n < 1) return;
constexpr double MI_PER_DEG_LAT = 69.11;
double cosLat = std::cos(RADAR_LAT * M_PI / 180.0);
for (int i = 0; i < n - 1; ++i) {
double lon0 = ls->getX(i), lat0 = ls->getY(i);
double lon1 = ls->getX(i+1),lat1 = ls->getY(i+1);
// Segment length in miles
double dlat = (lat1 - lat0) * MI_PER_DEG_LAT;
double dlon = (lon1 - lon0) * MI_PER_DEG_LAT * cosLat;
float segMi = static_cast<float>(std::sqrt(dlat*dlat + dlon*dlon));
int nSteps = std::max(1, static_cast<int>(segMi / stepMiles));
for (int j = 0; j <= nSteps; ++j) {
double t = static_cast<double>(j) / nSteps;
double lat = lat0 + t * (lat1 - lat0);
double lon = lon0 + t * (lon1 - lon0);
float bear, range;
latLonToRadar(lat, lon, bear, range);
if (range <= maxRange)
pts.push_back({bear, range});
}
}
// Last point
{
float bear, range;
latLonToRadar(ls->getY(n-1), ls->getX(n-1), bear, range);
if (range <= maxRange) pts.push_back({bear, range});
}
}
else if (gtype == wkbPolygon) {
OGRPolygon* poly = geom->toPolygon();
OGRLinearRing* ring = poly->getExteriorRing();
if (ring) appendENCGeomPts(ring, maxRange, stepMiles, pts);
}
else if (gtype == wkbMultiLineString || gtype == wkbMultiPolygon ||
gtype == wkbGeometryCollection) {
OGRGeometryCollection* gc = geom->toGeometryCollection();
for (int i = 0; i < gc->getNumGeometries(); ++i)
appendENCGeomPts(gc->getGeometryRef(i), maxRange, stepMiles, pts);
}
}
// Load COALNE coastline from an S-57 ENC file.
// Points are densified at ~40 m intervals so they appear continuous.
static std::vector<ShorelineVert> loadENCCoastline(const std::string& encPath)
{
GDALAllRegister();
GDALDataset* ds = static_cast<GDALDataset*>(
GDALOpenEx(encPath.c_str(), GDAL_OF_VECTOR | GDAL_OF_READONLY,
nullptr, nullptr, nullptr));
if (!ds) {
std::cerr << "Feature 9: cannot open ENC: " << encPath << "\n";
return {};
}
std::vector<ShorelineVert> pts;
// COALNE = coastline (primary); SLCONS = shoreline construction (piers etc.)
const char* layerNames[] = { "COALNE", "SLCONS" };
for (const char* lname : layerNames) {
OGRLayer* layer = ds->GetLayerByName(lname);
if (!layer) continue;
OGRFeature* feat;
layer->ResetReading();
while ((feat = layer->GetNextFeature()) != nullptr) {
OGRGeometry* geom = feat->GetGeometryRef();
// densify: one point every ~0.025 miles (~40 m)
appendENCGeomPts(geom, MAX_RANGE_MILES, 0.025f, pts);
OGRFeature::DestroyFeature(feat);
}
}
GDALClose(ds);
std::cerr << "Feature 9 ENC: " << pts.size() << " coastline points\n";
return pts;
}
// ── DEM terrain loading with line-of-sight (radar shadow) ────────────────────
//
// For each azimuth (0.05° steps), march outward from the radar. Track the
// maximum elevation angle seen so far. A terrain point is visible — and
// generates a radar return — only when its elevation angle equals or exceeds
// the current maximum. Everything behind that horizon is in radar shadow.
// This correctly shows the faces of hills toward the radar and hides valleys
// and reverse slopes behind them.
static constexpr float RADAR_HEIGHT_M = 30.48f; // 100-foot platform
static std::vector<ShorelineVert> loadDEMTerrainWithLOS(const std::string& demPath)
{
GDALAllRegister();
GDALDataset* ds = static_cast<GDALDataset*>(
GDALOpen(demPath.c_str(), GA_ReadOnly));
if (!ds) {
std::cerr << "Feature 9: cannot open DEM: " << demPath << "\n";
return {};
}
GDALRasterBand* band = ds->GetRasterBand(1);
if (!band) {
std::cerr << "Feature 9: DEM has no band 1\n";
GDALClose(ds); return {};
}
double gt[6];
ds->GetGeoTransform(gt);
int rasterW = ds->GetRasterXSize();
int rasterH = ds->GetRasterYSize();
// Bounding box with 2% margin
constexpr double M_PER_DEG_LAT = 111320.0;
double cosLat = std::cos(RADAR_LAT * M_PI / 180.0);
double mPerDegLon = M_PER_DEG_LAT * cosLat;
double maxRangeM = MAX_RANGE_MILES * 1609.344;
double dLat = maxRangeM / M_PER_DEG_LAT * 1.02;
double dLon = maxRangeM / mPerDegLon * 1.02;
int px0 = std::max(0, static_cast<int>((RADAR_LON - dLon - gt[0]) / gt[1]));
int px1 = std::min(rasterW-1,static_cast<int>((RADAR_LON + dLon - gt[0]) / gt[1]) + 1);
int py0 = std::max(0, static_cast<int>((RADAR_LAT + dLat - gt[3]) / gt[5]));
int py1 = std::min(rasterH-1,static_cast<int>((RADAR_LAT - dLat - gt[3]) / gt[5]) + 1);
int readW = px1 - px0 + 1;
int readH = py1 - py0 + 1;
if (readW <= 0 || readH <= 0) {
std::cerr << "Feature 9: DEM bounding box empty\n";
GDALClose(ds); return {};
}
// Bulk-read elevation tile into memory (float32, metres)
std::vector<float> elevGrid(readW * readH, 0.0f);
if (band->RasterIO(GF_Read, px0, py0, readW, readH,
elevGrid.data(), readW, readH, GDT_Float32, 0, 0) != CE_None) {
std::cerr << "Feature 9: DEM RasterIO failed\n";
GDALClose(ds); return {};
}
GDALClose(ds);
// ── Ray-march LOS ─────────────────────────────────────────────────────────
// 7200 rays (0.05° apart) × 20 m steps out to maxRange
const int NUM_AZIMUTHS = 7200;
const float STEP_M = 20.0f;
const int NUM_STEPS = static_cast<int>(maxRangeM / STEP_M) + 1;
std::vector<ShorelineVert> pts;
pts.reserve(60000);
for (int ai = 0; ai < NUM_AZIMUTHS; ++ai) {
float bearDeg = ai * 360.0f / NUM_AZIMUTHS;
float bearRad = bearDeg * static_cast<float>(M_PI) / 180.0f;
float sinB = std::sin(bearRad); // east component
float cosB = std::cos(bearRad); // north component
float maxElevAngle = -static_cast<float>(M_PI) / 2.0f; // horizon starts at -90°
for (int step = 1; step < NUM_STEPS; ++step) {
float rangeM = step * STEP_M;
float rangeMi = rangeM / 1609.344f;
// Geographic position of this ray step
double lat = RADAR_LAT + cosB * rangeM / M_PER_DEG_LAT;
double lon = RADAR_LON + sinB * rangeM / mPerDegLon;
// DEM pixel lookup (nearest-neighbour)
int pxg = static_cast<int>((lon - gt[0]) / gt[1]);
int pyg = static_cast<int>((lat - gt[3]) / gt[5]);
int pxl = pxg - px0;
int pyl = pyg - py0;
if (pxl < 0 || pxl >= readW || pyl < 0 || pyl >= readH) continue;
float elev = elevGrid[pyl * readW + pxl];
// Elevation angle from radar platform to this terrain point
float elevAngle = std::atan2(elev - RADAR_HEIGHT_M, rangeM);
if (elevAngle >= maxElevAngle) {
if (elev > 0.0f) // land (not ocean)
pts.push_back({bearDeg, rangeMi});
maxElevAngle = elevAngle; // raise the horizon
}
}
}
std::cerr << "Feature 9 DEM LOS: " << pts.size() << " visible terrain points\n";
return pts;
}
// ── ShorelineLayer GL object ──────────────────────────────────────────────────
struct ShorelineLayer {
GLuint prog = 0;
GLuint vao = 0;
GLuint vbo = 0;
int count = 0; // number of GL_POINTS vertices
};
static ShorelineLayer buildShorelineLayer()
{
const std::string encPath = MAP_DIR "/US5WA45M.000";
const std::string demPath = MAP_DIR "/n48_w123_1arc_v3.tif";
auto encPts = loadENCCoastline(encPath);
auto demPts = loadDEMTerrainWithLOS(demPath);
// Pack both into a single interleaved buffer: (bearDeg, rangeMi) per vertex
std::vector<float> verts;
verts.reserve((encPts.size() + demPts.size()) * 2);
for (auto& p : encPts) { verts.push_back(p.bearDeg); verts.push_back(p.rangeMi); }
for (auto& p : demPts) { verts.push_back(p.bearDeg); verts.push_back(p.rangeMi); }
ShorelineLayer sl{};
sl.count = static_cast<int>(verts.size() / 2);
glGenVertexArrays(1, &sl.vao);
glGenBuffers(1, &sl.vbo);
glBindVertexArray(sl.vao);
glBindBuffer(GL_ARRAY_BUFFER, sl.vbo);
glBufferData(GL_ARRAY_BUFFER,
static_cast<GLsizeiptr>(verts.size() * sizeof(float)),
verts.data(), GL_STATIC_DRAW);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), nullptr);
glEnableVertexAttribArray(0);
glBindVertexArray(0);
sl.prog = makeProgram("shaders/ppi_shoreline.vert", "shaders/ppi_shoreline.frag");
std::cerr << "Feature 9: " << sl.count << " total shoreline+terrain points\n";
return sl;
}
static void renderShorelineLayer(const ShorelineLayer& sl, const Layout& L,
int rangeIdx, float sweepAngle, float W, float H)
{
if (sl.count == 0 || sl.prog == 0) return;
const float maxRange = RANGE_CONFIGS[rangeIdx].maxMiles;
// NDC centre and per-axis NDC radius
float cx = L.ppiCX / W * 2.0f - 1.0f;
float cy = 1.0f - L.ppiCY / H * 2.0f;
float rx = L.ppiR / W * 2.0f;
float ry = L.ppiR / H * 2.0f;
glUseProgram(sl.prog);
glUniform2f(glGetUniformLocation(sl.prog, "uCenter"), cx, cy);
glUniform1f(glGetUniformLocation(sl.prog, "uPpiRx"), rx);
glUniform1f(glGetUniformLocation(sl.prog, "uPpiRy"), ry);
glUniform1f(glGetUniformLocation(sl.prog, "uMaxRange"), maxRange);
glUniform1f(glGetUniformLocation(sl.prog, "uSweepAngle"), sweepAngle);
glUniform1f(glGetUniformLocation(sl.prog, "uSweepDegPS"), SWEEP_DEG_PS);
glUniform1f(glGetUniformLocation(sl.prog, "uPersist"), TARG_PERSIST);
glUniform3f(glGetUniformLocation(sl.prog, "uActiveColor"),
P7A_R, P7A_G, P7A_B);
glUniform3f(glGetUniformLocation(sl.prog, "uPersistColor"),
P7P_R, P7P_G, P7P_B);
glEnable(GL_PROGRAM_POINT_SIZE);
glBindVertexArray(sl.vao);
glDrawArrays(GL_POINTS, 0, sl.count);
glBindVertexArray(0);
glDisable(GL_PROGRAM_POINT_SIZE);
}
// ─── 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*/)
@@ -1279,11 +1600,11 @@ 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 // Feature 3 — A scope replaceable graticules (uses its own 4-step config)
AScopeGratProg agProg = buildAScopeGratPrograms(); AScopeGratProg agProg = buildAScopeGratPrograms();
AScopeGraticule graticules[RANGE_COUNT]; AScopeGraticule graticules[ASCOPE_RANGE_COUNT];
for (int i = 0; i < RANGE_COUNT; ++i) for (int i = 0; i < ASCOPE_RANGE_COUNT; ++i)
graticules[i] = buildAScopeGraticule(layout, fa, RANGE_CONFIGS[i], W, H); graticules[i] = buildAScopeGraticule(layout, fa, ASCOPE_RANGE_CONFIGS[i], W, H);
// Feature 4 — PPI range rings // Feature 4 — PPI range rings
RingLayer rl = buildRingLayer(fa); RingLayer rl = buildRingLayer(fa);
@@ -1307,6 +1628,9 @@ int main()
// Feature 6 — PPI cursor // Feature 6 — PPI cursor
CursorLayer cl = buildCursorLayer(); CursorLayer cl = buildCursorLayer();
// Feature 9 — Shoreline + terrain (loads ENC + DEM at startup)
ShorelineLayer sl = buildShorelineLayer();
// Bearing display window (new suggestion #3) // Bearing display window (new suggestion #3)
// Reuse scope_bounds program for the box, text program for label // Reuse scope_bounds program for the box, text program for label
BearingDisplay bd = buildBearingDisplay(layout, W, H); BearingDisplay bd = buildBearingDisplay(layout, W, H);
@@ -1320,9 +1644,12 @@ int main()
const float scopeNDCH = (layout.asBot - layout.asTop) * 2.0f / H; const float scopeNDCH = (layout.asBot - layout.asTop) * 2.0f / H;
// Feature 3 animation state — 4 phases per range cycle // Feature 3 animation state — 4 phases per range cycle
// PPI and A scope cycle independently but share the same phase timer
enum class GratPhase { HOLD, SLIDE_OUT, WAIT, SLIDE_IN }; enum class GratPhase { HOLD, SLIDE_OUT, WAIT, SLIDE_IN };
int curRange = 0; int curRange = 0;
int nextRange = 1; int nextRange = 1;
int curAScopeRange = 0;
int nextAScopeRange = 1;
GratPhase gratPhase = GratPhase::HOLD; GratPhase gratPhase = GratPhase::HOLD;
float phaseTimer = 0.0f; float phaseTimer = 0.0f;
@@ -1351,6 +1678,7 @@ int main()
case GratPhase::HOLD: case GratPhase::HOLD:
if (phaseTimer >= HOLD_SEC) { if (phaseTimer >= HOLD_SEC) {
nextRange = (curRange + 1) % RANGE_COUNT; nextRange = (curRange + 1) % RANGE_COUNT;
nextAScopeRange = (curAScopeRange + 1) % ASCOPE_RANGE_COUNT;
gratPhase = GratPhase::SLIDE_OUT; gratPhase = GratPhase::SLIDE_OUT;
phaseTimer = 0.0f; phaseTimer = 0.0f;
} }
@@ -1364,6 +1692,7 @@ int main()
case GratPhase::WAIT: case GratPhase::WAIT:
if (phaseTimer >= WAIT_SEC) { if (phaseTimer >= WAIT_SEC) {
curRange = nextRange; curRange = nextRange;
curAScopeRange = nextAScopeRange;
gratPhase = GratPhase::SLIDE_IN; gratPhase = GratPhase::SLIDE_IN;
phaseTimer = 0.0f; phaseTimer = 0.0f;
} }
@@ -1416,12 +1745,12 @@ int main()
// ── Feature 3: A scope graticule (4-phase slide animation) ────────── // ── Feature 3: A scope graticule (4-phase slide animation) ──────────
switch (gratPhase) { switch (gratPhase) {
case GratPhase::HOLD: case GratPhase::HOLD:
drawAScopeGraticule(agProg, graticules[curRange], drawAScopeGraticule(agProg, graticules[curAScopeRange],
0.0f, fa, W, H, layout); 0.0f, fa, W, H, layout);
break; break;
case GratPhase::SLIDE_OUT: { case GratPhase::SLIDE_OUT: {
float t = std::min(phaseTimer / SLIDE_OUT_SEC, 1.0f); float t = std::min(phaseTimer / SLIDE_OUT_SEC, 1.0f);
drawAScopeGraticule(agProg, graticules[curRange], drawAScopeGraticule(agProg, graticules[curAScopeRange],
t * scopeNDCH, fa, W, H, layout); t * scopeNDCH, fa, W, H, layout);
break; break;
} }
@@ -1430,8 +1759,7 @@ int main()
break; break;
case GratPhase::SLIDE_IN: { case GratPhase::SLIDE_IN: {
float t = std::min(phaseTimer / SLIDE_IN_SEC, 1.0f); float t = std::min(phaseTimer / SLIDE_IN_SEC, 1.0f);
// new graticule slides down from above (starts at +scopeNDCH → 0) drawAScopeGraticule(agProg, graticules[curAScopeRange],
drawAScopeGraticule(agProg, graticules[curRange],
(1.0f - t) * scopeNDCH, fa, W, H, layout); (1.0f - t) * scopeNDCH, fa, W, H, layout);
break; break;
} }
@@ -1443,7 +1771,7 @@ int main()
// ── A scope signal trace ────────────────────────────────────────────── // ── A scope signal trace ──────────────────────────────────────────────
renderAScopeTrace(at, layout, targets, 4, renderAScopeTrace(at, layout, targets, 4,
RANGE_CONFIGS[curRange].maxMiles, ascopeBearingDeg, ASCOPE_RANGE_CONFIGS[curAScopeRange].maxMiles, ascopeBearingDeg,
W, H); W, H);
// ── Feature 4: PPI range rings ──────────────────────────────────────── // ── Feature 4: PPI range rings ────────────────────────────────────────
@@ -1454,6 +1782,9 @@ int main()
RANGE_CONFIGS[curRange].maxMiles, ppiR, RANGE_CONFIGS[curRange].maxMiles, ppiR,
sweepAngle, now, W, H); sweepAngle, now, W, H);
// ── Feature 9: Shoreline + terrain ───────────────────────────────────
renderShorelineLayer(sl, layout, curRange, sweepAngle, W, H);
// ── Feature 6: PPI cursor locked to targets[2] (east, 6 mi) ────────── // ── Feature 6: PPI cursor locked to targets[2] (east, 6 mi) ──────────
// New suggestion #5: cursor follows one target; not free-roaming. // New suggestion #5: cursor follows one target; not free-roaming.
// Only draw when the target is within the current range setting. // Only draw when the target is within the current range setting.
@@ -1469,7 +1800,7 @@ int main()
renderBearingDisplay(bd, layout, renderBearingDisplay(bd, layout,
sb.prog, bg.textProg, sb.prog, bg.textProg,
fa, ascopeBearingDeg, fa, ascopeBearingDeg,
RANGE_CONFIGS[curRange].maxMiles, W, H); ASCOPE_RANGE_CONFIGS[curAScopeRange].maxMiles, W, H);
glfwSwapBuffers(win); glfwSwapBuffers(win);
glfwPollEvents(); glfwPollEvents();
@@ -1484,7 +1815,7 @@ int main()
glDeleteProgram(bg.lineProg); glDeleteProgram(bg.lineProg);
glDeleteProgram(bg.textProg); glDeleteProgram(bg.textProg);
for (int i = 0; i < RANGE_COUNT; ++i) { for (int i = 0; i < ASCOPE_RANGE_COUNT; ++i) {
glDeleteVertexArrays(1, &graticules[i].lineVAO); glDeleteVertexArrays(1, &graticules[i].lineVAO);
glDeleteBuffers(1, &graticules[i].lineVBO); glDeleteBuffers(1, &graticules[i].lineVBO);
glDeleteVertexArrays(1, &graticules[i].textVAO); glDeleteVertexArrays(1, &graticules[i].textVAO);
@@ -1506,6 +1837,8 @@ int main()
glDeleteVertexArrays(1, &bd.textVAO); glDeleteBuffers(1, &bd.textVBO); glDeleteVertexArrays(1, &bd.textVAO); glDeleteBuffers(1, &bd.textVBO);
glDeleteVertexArrays(1, &gn.boxVAO); glDeleteBuffers(1, &gn.boxVBO); glDeleteVertexArrays(1, &gn.boxVAO); glDeleteBuffers(1, &gn.boxVBO);
glDeleteVertexArrays(1, &gn.textVAO); glDeleteBuffers(1, &gn.textVBO); glDeleteVertexArrays(1, &gn.textVAO); glDeleteBuffers(1, &gn.textVBO);
glDeleteVertexArrays(1, &sl.vao); glDeleteBuffers(1, &sl.vbo);
glDeleteProgram(sl.prog);
glfwDestroyWindow(win); glfwDestroyWindow(win);
glfwTerminate(); glfwTerminate();