From f51afb42e086c0f6d5f92f1df47a925f3906774a Mon Sep 17 00:00:00 2001 From: Quinn Date: Sat, 8 Feb 2025 23:57:43 -0500 Subject: [PATCH] Refactored file layout because platformio failed to find things --- library.json | 14 +---- src/CMakeLists.txt | 61 ++++++++++++++++++- src/{Matrix => }/Matrix.cpp | 0 src/{Matrix => }/Matrix.hpp | 0 src/Matrix/CMakeLists.txt | 35 ----------- src/{Quaternion => }/Quaternion.cpp | 6 +- src/{Quaternion => }/Quaternion.h | 3 +- src/Quaternion/CMakeLists.txt | 40 ------------ src/{Vector3D => }/Vector3D.cpp | 0 src/{Vector3D => }/Vector3D.hpp | 0 src/Vector3D/CMakeLists.txt | 31 ---------- unit-tests/CMakeLists.txt | 26 ++++++++ .../matrix-tests.cpp | 0 .../quaternion-tests.cpp | 0 .../vector-tests.cpp | 0 15 files changed, 91 insertions(+), 125 deletions(-) rename src/{Matrix => }/Matrix.cpp (100%) rename src/{Matrix => }/Matrix.hpp (100%) delete mode 100644 src/Matrix/CMakeLists.txt rename src/{Quaternion => }/Quaternion.cpp (95%) rename src/{Quaternion => }/Quaternion.h (98%) delete mode 100644 src/Quaternion/CMakeLists.txt rename src/{Vector3D => }/Vector3D.cpp (100%) rename src/{Vector3D => }/Vector3D.hpp (100%) delete mode 100644 src/Vector3D/CMakeLists.txt create mode 100644 unit-tests/CMakeLists.txt rename {src/Matrix/unit-tests => unit-tests}/matrix-tests.cpp (100%) rename {src/Quaternion/unit-tests => unit-tests}/quaternion-tests.cpp (100%) rename {src/Vector3D/unit-tests => unit-tests}/vector-tests.cpp (100%) diff --git a/library.json b/library.json index 2350414..3087d6c 100644 --- a/library.json +++ b/library.json @@ -16,17 +16,5 @@ ], "license": "None Yet", "frameworks": "*", - "platforms": "*", - "build": { - "srcDir": "src", - "flags": [ - "-std=c++17", - "-I src/Vector3D", - "-I src/Matrix", - "-I src/Quaternion" - ], - "srcFilter": [ - "-<*/unit-tests/>" - ] - } + "platforms": "*" } \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index db28747..a1dcb05 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,59 @@ -add_subdirectory(Matrix) -add_subdirectory(Quaternion) -add_subdirectory(Vector3D) +# Quaternion Interface +add_library(vector-3d-intf + INTERFACE +) +target_include_directories(vector-3d-intf + INTERFACE + . +) + +target_link_libraries(vector-3d-intf + INTERFACE +) + +# Quaternion +add_library(quaternion + STATIC + Quaternion.cpp +) + +target_link_libraries(quaternion + PUBLIC + vector-3d-intf + PRIVATE +) + +set_target_properties(quaternion + PROPERTIES + LINKER_LANGUAGE CXX +) + +# Vector3d +add_library(vector-3d + STATIC + Vector3D.cpp +) + +target_link_libraries(vector-3d + PUBLIC + vector-3d-intf + PRIVATE +) + +# Matrix +add_library(matrix + STATIC + Matrix.cpp +) + +target_link_libraries(matrix + PUBLIC + vector-3d-intf + PRIVATE +) + +set_target_properties(matrix + PROPERTIES + LINKER_LANGUAGE CXX +) \ No newline at end of file diff --git a/src/Matrix/Matrix.cpp b/src/Matrix.cpp similarity index 100% rename from src/Matrix/Matrix.cpp rename to src/Matrix.cpp diff --git a/src/Matrix/Matrix.hpp b/src/Matrix.hpp similarity index 100% rename from src/Matrix/Matrix.hpp rename to src/Matrix.hpp diff --git a/src/Matrix/CMakeLists.txt b/src/Matrix/CMakeLists.txt deleted file mode 100644 index fbb1299..0000000 --- a/src/Matrix/CMakeLists.txt +++ /dev/null @@ -1,35 +0,0 @@ -# Matrix Interface -add_library(matrix-intf - INTERFACE -) - -target_include_directories(matrix-intf - INTERFACE - . -) - -# Matrix -add_library(matrix - STATIC - Matrix.cpp -) - -target_link_libraries(matrix - PUBLIC - matrix-intf - PRIVATE -) - -set_target_properties(matrix - PROPERTIES - LINKER_LANGUAGE CXX -) - -# matrix tests -add_executable(matrix-tests unit-tests/matrix-tests.cpp) - -target_link_libraries(matrix-tests - PRIVATE - matrix-intf - Catch2::Catch2WithMain -) \ No newline at end of file diff --git a/src/Quaternion/Quaternion.cpp b/src/Quaternion.cpp similarity index 95% rename from src/Quaternion/Quaternion.cpp rename to src/Quaternion.cpp index 2530329..5420075 100644 --- a/src/Quaternion/Quaternion.cpp +++ b/src/Quaternion.cpp @@ -49,7 +49,7 @@ Quaternion Quaternion::operator*(float scalar) const Quaternion Quaternion::operator+(const Quaternion &other) const { - return Quaternion{this->w * other.w, this->v1 * other.v1, this->v2 * other.v2, this->v3 * other.v3}; + return Quaternion{this->w + other.w, this->v1 + other.v1, this->v2 + other.v2, this->v3 + other.v3}; } Quaternion & @@ -81,6 +81,10 @@ Quaternion &Quaternion::Rotate(Quaternion &other, Quaternion &buffer) const void Quaternion::Normalize() { float magnitude = sqrt(this->v1 * this->v1 + this->v2 * this->v2 + this->v3 * this->v3 + this->w * this->w); + if (magnitude == 0) + { + return; + } this->v1 /= magnitude; this->v2 /= magnitude; this->v3 /= magnitude; diff --git a/src/Quaternion/Quaternion.h b/src/Quaternion.h similarity index 98% rename from src/Quaternion/Quaternion.h rename to src/Quaternion.h index f270a9a..5c958e2 100644 --- a/src/Quaternion/Quaternion.h +++ b/src/Quaternion.h @@ -2,7 +2,6 @@ #define QUATERNION_H_ #include "Matrix.hpp" - class Quaternion : public Matrix<1, 4> { public: @@ -70,7 +69,7 @@ public: */ void Normalize(); - Matrix<3,3> ToRotationMatrix() const; + Matrix<3, 3> ToRotationMatrix() const; // Give people an easy way to access the elements float &w{matrix[0]}; diff --git a/src/Quaternion/CMakeLists.txt b/src/Quaternion/CMakeLists.txt deleted file mode 100644 index 430d752..0000000 --- a/src/Quaternion/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -# Quaternion Interface -add_library(quaternion-intf - INTERFACE -) - -target_include_directories(quaternion-intf - INTERFACE - . -) - -target_link_libraries(quaternion-intf - INTERFACE - matrix-intf -) - -# Quaternion -add_library(quaternion - STATIC - Quaternion.cpp -) - -target_link_libraries(quaternion - PUBLIC - quaternion-intf - PRIVATE -) - -set_target_properties(quaternion - PROPERTIES - LINKER_LANGUAGE CXX -) - -# Quaternion tests -add_executable(quaternion-tests unit-tests/quaternion-tests.cpp) - -target_link_libraries(quaternion-tests - PRIVATE - quaternion - Catch2::Catch2WithMain -) \ No newline at end of file diff --git a/src/Vector3D/Vector3D.cpp b/src/Vector3D.cpp similarity index 100% rename from src/Vector3D/Vector3D.cpp rename to src/Vector3D.cpp diff --git a/src/Vector3D/Vector3D.hpp b/src/Vector3D.hpp similarity index 100% rename from src/Vector3D/Vector3D.hpp rename to src/Vector3D.hpp diff --git a/src/Vector3D/CMakeLists.txt b/src/Vector3D/CMakeLists.txt deleted file mode 100644 index 04c4fc8..0000000 --- a/src/Vector3D/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -# Vector 3D Interface -add_library(vector-3d-intf - INTERFACE -) - -target_include_directories(vector-3d-intf - INTERFACE - . -) - -# Vector3d -add_library(vector-3d - STATIC - Vector3D.cpp -) - -target_link_libraries(vector-3d - PUBLIC - vector-3d-intf - PRIVATE -) - -# vector tests -add_executable(vector-tests unit-tests/vector-tests.cpp) - -target_link_libraries(vector-tests - PRIVATE - matrix-intf - vector-3d-intf - Catch2::Catch2WithMain -) \ No newline at end of file diff --git a/unit-tests/CMakeLists.txt b/unit-tests/CMakeLists.txt new file mode 100644 index 0000000..97d1133 --- /dev/null +++ b/unit-tests/CMakeLists.txt @@ -0,0 +1,26 @@ +# Quaternion tests +add_executable(quaternion-tests unit-tests/quaternion-tests.cpp) + +target_link_libraries(quaternion-tests + PRIVATE + vector-3d-intf + Catch2::Catch2WithMain +) + +# matrix tests +add_executable(matrix-tests unit-tests/matrix-tests.cpp) + +target_link_libraries(matrix-tests + PRIVATE + vector-3d-intf + Catch2::Catch2WithMain +) + +# Vector 3D Tests +add_executable(vector-3d-tests unit-tests/vector-tests.cpp) + +target_link_libraries(vector-3d-tests + PRIVATE + vector-3d-intf + Catch2::Catch2WithMain +) \ No newline at end of file diff --git a/src/Matrix/unit-tests/matrix-tests.cpp b/unit-tests/matrix-tests.cpp similarity index 100% rename from src/Matrix/unit-tests/matrix-tests.cpp rename to unit-tests/matrix-tests.cpp diff --git a/src/Quaternion/unit-tests/quaternion-tests.cpp b/unit-tests/quaternion-tests.cpp similarity index 100% rename from src/Quaternion/unit-tests/quaternion-tests.cpp rename to unit-tests/quaternion-tests.cpp diff --git a/src/Vector3D/unit-tests/vector-tests.cpp b/unit-tests/vector-tests.cpp similarity index 100% rename from src/Vector3D/unit-tests/vector-tests.cpp rename to unit-tests/vector-tests.cpp