From 5ea0a101e512d798a326554d4068c869fb25186f Mon Sep 17 00:00:00 2001 From: Pascal Serrarens Date: Thu, 22 Jun 2023 11:02:45 +0200 Subject: [PATCH] Add initial Spherical struct --- include/Spherical.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 include/Spherical.h diff --git a/include/Spherical.h b/include/Spherical.h new file mode 100644 index 0000000..b28b7f6 --- /dev/null +++ b/include/Spherical.h @@ -0,0 +1,38 @@ +/// @copyright +/// This Source Code Form is subject to the terms of the Mozilla Public +/// License, v. 2.0.If a copy of the MPL was not distributed with this +/// file, You can obtain one at https ://mozilla.org/MPL/2.0/. + +#ifndef SPHERICAL_H +#define SPHERICAL_H + +/// @brief A spherical vector +/// @details +/// This is a vector in 3D space using a spherical coordinate system. +/// It consists of a distance and the polar and elevation angles from a +/// reference direction. The reference direction is typically thought of +/// as a forward direction. +struct Spherical { + public: + /// @brief The angle in the horizontal plane in degrees, clockwise rotation + /// @details The angle is automatically normalized to -180 .. 180 + float polarAngle; + /// @brief The angle in the vertical plane in degrees. Positive is upward. + /// @details The angle is automatically normalized to -180 .. 180 + float elevationAngle; + + /// @brief Create a new spherical vector with zero degrees and distance + Spherical(); + /// @brief Create a new spherical vector + /// @param polarAngle The angle in the horizontal plane in degrees, + /// clockwise rotation + /// @param elevationAngle The angle in the vertical plan in degrees, + /// zero is forward, positive is upward + /// @param distance The distance in meters + Spherical(float polarAngle, float elevationAngle, float distance); + + /// @brief A spherical vector with zero degree angles and distance + const static Spherical zero; +}; + +#endif \ No newline at end of file