diff --git a/src/math/math.hpp b/src/math/math.hpp index 0f918d9..0b7860b 100644 --- a/src/math/math.hpp +++ b/src/math/math.hpp @@ -23,54 +23,24 @@ /// Mathematical functions and data types. namespace math {} -/** - * @defgroup vector Vector - * - * Vector type, functions, and operators. - */ #include "math/vector-type.hpp" #include "math/vector-functions.hpp" #include "math/vector-operators.hpp" -/** - * @defgroup matrix Matrix - * - * Matrix type, functions, and operators. - */ #include "math/matrix-type.hpp" #include "math/matrix-functions.hpp" #include "math/matrix-operators.hpp" -/** - * @defgroup quaternion Quaternion - * - * Quaternion type, functions, and operators. - */ #include "math/quaternion-type.hpp" #include "math/quaternion-functions.hpp" #include "math/quaternion-operators.hpp" -/** - * @defgroup transform Transform - * - * TRS transform type, functions, and operators. - */ #include "math/transform-type.hpp" #include "math/transform-functions.hpp" #include "math/transform-operators.hpp" -/** - * @defgroup io I/O - * - * Functions and operators that read/write vectors, matrices, or quaternions from/to streams. - */ #include "math/stream-operators.hpp" -/** - * @defgroup utility Utility constants and functions - * - * Commonly used utilities. - */ #include "math/angles.hpp" #include "math/constants.hpp" #include "math/interpolation.hpp" diff --git a/src/math/matrix-functions.hpp b/src/math/matrix-functions.hpp index 25f7552..e76822e 100644 --- a/src/math/matrix-functions.hpp +++ b/src/math/matrix-functions.hpp @@ -27,9 +27,6 @@ namespace math { -/// @addtogroup matrix -/// @{ - /** * Adds two matrices. * @@ -867,8 +864,6 @@ matrix type_cast(const matrix& m) return type_cast(m, std::make_index_sequence{}); } -/// @} - } // namespace math #endif // ANTKEEPER_MATH_MATRIX_FUNCTIONS_HPP diff --git a/src/math/matrix-operators.hpp b/src/math/matrix-operators.hpp index 33b34dd..316b16f 100644 --- a/src/math/matrix-operators.hpp +++ b/src/math/matrix-operators.hpp @@ -23,78 +23,64 @@ #include "math/matrix-type.hpp" #include "math/matrix-functions.hpp" -namespace math { -namespace matrix_operators { - -/// @addtogroup matrix -/// @{ - -/// @copydoc add(const matrix&, const matrix&) +/// @copydoc math::add(const math::matrix&, const math::matrix&) template -matrix operator+(const matrix& x, const matrix& y); +math::matrix operator+(const math::matrix& x, const math::matrix& y); -/// @copydoc mul(const matrix&, const matrix&) +/// @copydoc math::mul(const math::matrix&, const math::matrix&) template -matrix operator*(const matrix& x, const matrix& y); +math::matrix operator*(const math::matrix& x, const math::matrix& y); -/// @copydoc mul(const matrix&, T) +/// @copydoc math::mul(const math::matrix&, T) template -matrix operator*(const matrix& m, T s); +math::matrix operator*(const math::matrix& m, T s); -/// @copydoc mul(const matrix&, T) +/// @copydoc math::mul(const math::matrix&, T) template -matrix operator*(T s, const matrix& m); +math::matrix operator*(T s, const math::matrix& m); -/// @copydoc mul(const matrix&, const vector&) +/// @copydoc math::mul(const math::matrix&, const math::vector&) template -vector operator*(const matrix& m, const vector& v); +math::vector operator*(const math::matrix& m, const math::vector& v); -/// @copydoc sub(const matrix&, const matrix&) +/// @copydoc math::sub(const math::matrix&, const math::matrix&) template -matrix operator-(const matrix& x, const matrix& y); +math::matrix operator-(const math::matrix& x, const math::matrix& y); template -inline matrix operator+(const matrix& x, const matrix& y) +inline math::matrix operator+(const math::matrix& x, const math::matrix& y) { return add(x, y); } template -inline matrix operator*(const matrix& x, const matrix& y) +inline math::matrix operator*(const math::matrix& x, const math::matrix& y) { return mul(x, y); } template -inline matrix operator*(const matrix& m, T s) +inline math::matrix operator*(const math::matrix& m, T s) { return mul(m, s); } template -inline matrix operator*(T s, const matrix& m) +inline math::matrix operator*(T s, const math::matrix& m) { return mul(m, s); } template -inline vector operator*(const matrix& m, const vector& v) +inline math::vector operator*(const math::matrix& m, const math::vector& v) { return mul(m, v); } template -inline matrix operator-(const matrix& x, const matrix& y) +inline math::matrix operator-(const math::matrix& x, const math::matrix& y) { return sub(x, y); } -/// @} - -} // namespace matrix_operators -} // namespace math - -// Bring matrix operators into global namespace -using namespace math::matrix_operators; - #endif // ANTKEEPER_MATH_MATRIX_OPERATORS_HPP diff --git a/src/math/matrix-type.hpp b/src/math/matrix-type.hpp index ff6d923..9f8a469 100644 --- a/src/math/matrix-type.hpp +++ b/src/math/matrix-type.hpp @@ -25,9 +25,6 @@ namespace math { -/// @addtogroup matrix -/// @{ - /** * An NxM matrix. * @@ -46,8 +43,6 @@ struct matrix inline constexpr const row_type& operator[](std::size_t i) const noexcept { return columns[i]; } }; -/// @} - } // namespace math #endif // ANTKEEPER_MATH_MATRIX_TYPE_HPP diff --git a/src/math/quaternion-functions.hpp b/src/math/quaternion-functions.hpp index f75ffaa..ed56e02 100644 --- a/src/math/quaternion-functions.hpp +++ b/src/math/quaternion-functions.hpp @@ -28,9 +28,6 @@ namespace math { -/// @addtogroup quaternion -/// @{ - /** * Adds two quaternions. * @@ -482,8 +479,6 @@ inline quaternion type_cast(const quaternion& q) }; } -/// @} - } // namespace math #endif // ANTKEEPER_MATH_QUATERNION_FUNCTIONS_HPP diff --git a/src/math/quaternion-operators.hpp b/src/math/quaternion-operators.hpp index 9ecf1da..c71b887 100644 --- a/src/math/quaternion-operators.hpp +++ b/src/math/quaternion-operators.hpp @@ -23,89 +23,75 @@ #include "math/quaternion-type.hpp" #include "math/quaternion-functions.hpp" -namespace math { -namespace quaternion_operators { - -/// @addtogroup quaternion -/// @{ - -/// @copydoc add(const quaternion&, const quaternion&) +/// @copydoc math::add(const math::quaternion&, const math::quaternion&) template -quaternion operator+(const quaternion& x, const quaternion& y); +math::quaternion operator+(const math::quaternion& x, const math::quaternion& y); -/// @copydoc div(const quaternion&, T) +/// @copydoc math::div(const math::quaternion&, T) template -quaternion operator/(const quaternion& q, T s); +math::quaternion operator/(const math::quaternion& q, T s); -/// @copydoc mul(const quaternion&, const quaternion&) +/// @copydoc math::mul(const math::quaternion&, const math::quaternion&) template -quaternion operator*(const quaternion& x, const quaternion& y); +math::quaternion operator*(const math::quaternion& x, const math::quaternion& y); -/// @copydoc mul(const quaternion&, T) +/// @copydoc math::mul(const math::quaternion&, T) template -quaternion operator*(const quaternion& q, T s); +math::quaternion operator*(const math::quaternion& q, T s); -/// @copydoc mul(const quaternion&, const vector&) +/// @copydoc math::mul(const math::quaternion&, const math::vector&) template -vector operator*(const quaternion& q, const vector& v); +math::vector operator*(const math::quaternion& q, const math::vector& v); -/// @copydoc sub(const quaternion&, const quaternion&) +/// @copydoc math::sub(const math::quaternion&, const math::quaternion&) template -quaternion operator-(const quaternion& x, const quaternion& y); +math::quaternion operator-(const math::quaternion& x, const math::quaternion& y); -/// @copydoc negate(const quaternion&) +/// @copydoc math::negate(const math::quaternion&) template -quaternion operator-(const quaternion& x); +math::quaternion operator-(const math::quaternion& x); template -inline quaternion operator+(const quaternion& x, const quaternion& y) +inline math::quaternion operator+(const math::quaternion& x, const math::quaternion& y) { return add(x, y); } template -inline quaternion operator/(const quaternion& q, T s) +inline math::quaternion operator/(const math::quaternion& q, T s) { return div(q, s); } template -inline quaternion operator*(const quaternion& x, const quaternion& y) +inline math::quaternion operator*(const math::quaternion& x, const math::quaternion& y) { return mul(x, y); } template -inline quaternion operator*(const quaternion& q, T s) +inline math::quaternion operator*(const math::quaternion& q, T s) { return mul(q, s); } template -inline vector operator*(const quaternion& q, const vector& v) +inline math::vector operator*(const math::quaternion& q, const math::vector& v) { return mul(q, v); } template -inline quaternion operator-(const quaternion& x, const quaternion& y) +inline math::quaternion operator-(const math::quaternion& x, const math::quaternion& y) { return sub(x, y); } template -inline quaternion operator-(const quaternion& x) +inline math::quaternion operator-(const math::quaternion& x) { return negate(x); } -/// @} - -} // namespace quaternion_operators -} // namespace math - -/// Bring quaternion operators into global namespace -using namespace math::quaternion_operators; - #endif // ANTKEEPER_MATH_QUATERNION_OPERATORS_HPP diff --git a/src/math/quaternion-type.hpp b/src/math/quaternion-type.hpp index d7fa768..24a7e2a 100644 --- a/src/math/quaternion-type.hpp +++ b/src/math/quaternion-type.hpp @@ -22,9 +22,6 @@ namespace math { -/// @addtogroup quaternion -/// @{ - /** * A quaternion type is a tuple made of a scalar (real) part and vector (imaginary) part. * @@ -40,8 +37,6 @@ struct quaternion scalar_type z; }; -/// @} - } // namespace math #endif // ANTKEEPER_MATH_QUATERNION_TYPE_HPP diff --git a/src/math/stream-operators.hpp b/src/math/stream-operators.hpp index 60e1d4b..386a3d8 100644 --- a/src/math/stream-operators.hpp +++ b/src/math/stream-operators.hpp @@ -25,12 +25,6 @@ #include "math/quaternion-type.hpp" #include -namespace math { -namespace stream_operators { - -/// @addtogroup io -/// @{ - /** * Writes the elements of a vector to an output stream, with each element delimeted by a space. * @@ -39,7 +33,7 @@ namespace stream_operators { * @return Output stream. */ template -std::ostream& operator<<(std::ostream& os, const vector& v); +std::ostream& operator<<(std::ostream& os, const math::vector& v); /** * Writes the elements of a matrix to an output stream, with each element delimeted by a space. @@ -49,7 +43,7 @@ std::ostream& operator<<(std::ostream& os, const vector& v); * @return Output stream. */ template -std::ostream& operator<<(std::ostream& os, const matrix& m); +std::ostream& operator<<(std::ostream& os, const math::matrix& m); /** * Writes the real and imaginary parts of a quaternion to an output stream, with each number delimeted by a space. @@ -59,7 +53,7 @@ std::ostream& operator<<(std::ostream& os, const matrix& m); * @return Output stream. */ template -std::ostream& operator<<(std::ostream& os, const quaternion& q); +std::ostream& operator<<(std::ostream& os, const math::quaternion& q); /** * Reads the elements of a vector from an input stream, with each element delimeted by a space. @@ -69,7 +63,7 @@ std::ostream& operator<<(std::ostream& os, const quaternion& q); * @return Input stream. */ template -std::istream& operator>>(std::istream& is, vector& v); +std::istream& operator>>(std::istream& is, math::vector& v); /** * Reads the elements of a matrix from an input stream, with each element delimeted by a space. @@ -79,7 +73,7 @@ std::istream& operator>>(std::istream& is, vector& v); * @return Input stream. */ template -std::istream& operator>>(std::istream& is, matrix& m); +std::istream& operator>>(std::istream& is, math::matrix& m); /** * Reads the real and imaginary parts of a quaternion from an input stream, with each number delimeted by a space. @@ -89,10 +83,10 @@ std::istream& operator>>(std::istream& is, matrix& m); * @return Input stream. */ template -std::istream& operator>>(std::istream& is, const quaternion& q); +std::istream& operator>>(std::istream& is, const math::quaternion& q); template -std::ostream& operator<<(std::ostream& os, const vector& v) +std::ostream& operator<<(std::ostream& os, const math::vector& v) { for (std::size_t i = 0; i < N; ++i) { @@ -108,7 +102,7 @@ std::ostream& operator<<(std::ostream& os, const vector& v) } template -std::ostream& operator<<(std::ostream& os, const matrix& m) +std::ostream& operator<<(std::ostream& os, const math::matrix& m) { for (std::size_t i = 0; i < N; ++i) { @@ -127,14 +121,14 @@ std::ostream& operator<<(std::ostream& os, const matrix& m) } template -std::ostream& operator<<(std::ostream& os, const quaternion& q) +std::ostream& operator<<(std::ostream& os, const math::quaternion& q) { os << q.w << ' ' << q.x << ' ' << q.y << ' ' << q.z; return os; } template -std::istream& operator>>(std::istream& is, vector& v) +std::istream& operator>>(std::istream& is, math::vector& v) { for (std::size_t i = 0; i < N; ++i) is >> v[i]; @@ -143,7 +137,7 @@ std::istream& operator>>(std::istream& is, vector& v) } template -std::istream& operator>>(std::istream& is, matrix& m) +std::istream& operator>>(std::istream& is, math::matrix& m) { for (std::size_t i = 0; i < N * M; ++i) { @@ -156,7 +150,7 @@ std::istream& operator>>(std::istream& is, matrix& m) } template -std::istream& operator>>(std::istream& is, const quaternion& q) +std::istream& operator>>(std::istream& is, const math::quaternion& q) { is >> q.w; is >> q.x; @@ -166,12 +160,4 @@ std::istream& operator>>(std::istream& is, const quaternion& q) return is; } -/// @} - -} // namespace stream_operators -} // namespace math - -// Bring stream operators into global namespace -using namespace math::stream_operators; - #endif // ANTKEEPER_MATH_STREAM_OPERATORS_HPP diff --git a/src/math/transform-functions.hpp b/src/math/transform-functions.hpp index 88224ea..e3c06bf 100644 --- a/src/math/transform-functions.hpp +++ b/src/math/transform-functions.hpp @@ -27,9 +27,6 @@ namespace math { -/// @addtogroup transform -/// @{ - /** * Calculates the inverse of a transform. * @@ -102,8 +99,6 @@ vector mul(const transform& t, const vector& v) return t.translation + (t.rotation * (v * t.scale)); } -/// @} - } // namespace math #endif // ANTKEEPER_MATH_TRANSFORM_FUNCTIONS_HPP diff --git a/src/math/transform-operators.hpp b/src/math/transform-operators.hpp index 1f27034..caacf7f 100644 --- a/src/math/transform-operators.hpp +++ b/src/math/transform-operators.hpp @@ -23,19 +23,13 @@ #include "math/transform-type.hpp" #include "math/transform-functions.hpp" -namespace math { -namespace transform_operators { - -/// @addtogroup transform -/// @{ - -/// @copydoc mul(const transform&, const transform&) +/// @copydoc math::mul(const math::transform&, const math::transform&) template -transform operator*(const transform& x, const transform& y); +math::transform operator*(const math::transform& x, const math::transform& y); -/// @copydoc mul(const transform&, const vector&) +/// @copydoc math::mul(const math::transform&, const math::vector&) template -vector operator*(const transform& t, const vector& v); +math::vector operator*(const math::transform& t, const math::vector& v); /** * Multiplies two transforms and stores the result in the first transform. @@ -45,33 +39,25 @@ vector operator*(const transform& t, const vector& v); * @return Reference to the first transform. */ template -transform& operator*=(transform& x, const transform& y); +math::transform& operator*=(math::transform& x, const math::transform& y); template -inline transform operator*(const transform& x, const transform& y) +inline math::transform operator*(const math::transform& x, const math::transform& y) { return mul(x, y); } template -inline vector operator*(const transform& t, const vector& v) +inline math::vector operator*(const math::transform& t, const math::vector& v) { return mul(t, v); } template -inline transform& operator*=(transform& x, const vector& y) +inline math::transform& operator*=(math::transform& x, const math::vector& y) { return (x = x * y); } -/// @} - -} // namespace transform_operators -} // namespace math - -// Bring transform operators into global namespace -using namespace math::transform_operators; - #endif // ANTKEEPER_MATH_TRANSFORM_OPERATORS_HPP diff --git a/src/math/transform-type.hpp b/src/math/transform-type.hpp index 4304826..249ee6c 100644 --- a/src/math/transform-type.hpp +++ b/src/math/transform-type.hpp @@ -25,9 +25,6 @@ namespace math { -/// @addtogroup transform -/// @{ - /** * Represents 3D TRS transformation. * @@ -46,8 +43,6 @@ struct transform vector scale; }; -/// @} - } // namespace math #endif // ANTKEEPER_MATH_TRANSFORM_TYPE_HPP diff --git a/src/math/vector-functions.hpp b/src/math/vector-functions.hpp index 279b96a..8281bcc 100644 --- a/src/math/vector-functions.hpp +++ b/src/math/vector-functions.hpp @@ -28,9 +28,6 @@ namespace math { -/// @addtogroup vector -/// @{ - /** * Adds two vectors. * @@ -644,8 +641,6 @@ inline vector type_cast(const vector& v) return type_cast(v, std::make_index_sequence{}); } -/// @} - } // namespace math #endif // ANTKEEPER_MATH_VECTOR_FUNCTIONS_HPP diff --git a/src/math/vector-operators.hpp b/src/math/vector-operators.hpp index f40fb97..af7f899 100644 --- a/src/math/vector-operators.hpp +++ b/src/math/vector-operators.hpp @@ -23,43 +23,37 @@ #include "math/vector-type.hpp" #include "math/vector-functions.hpp" -namespace math { -namespace vector_operators { - -/// @addtogroup vector -/// @{ - -/// @copydoc add(const vector&, const vector&) +/// @copydoc math::add(const math::vector&, const math::vector&) template -vector operator+(const vector& x, const vector& y); +math::vector operator+(const math::vector& x, const math::vector& y); -/// @copydoc div(const vector&, const vector&) +/// @copydoc math::div(const math::vector&, const math::vector&) template -vector operator/(const vector& x, const vector& y); +math::vector operator/(const math::vector& x, const math::vector& y); -/// @copydoc div(const vector&, T) +/// @copydoc math::div(const math::vector&, T) template -vector operator/(const vector& v, T s); +math::vector operator/(const math::vector& v, T s); -/// @copydoc mul(const vector&, const vector&) +/// @copydoc math::mul(const math::vector&, const math::vector&) template -vector operator*(const vector& x, const vector& y); +math::vector operator*(const math::vector& x, const math::vector& y); -/// @copydoc mul(const vector&, T) +/// @copydoc math::mul(const math::vector&, T) template -vector operator*(const vector& v, T s); +math::vector operator*(const math::vector& v, T s); -/// @copydoc mul(const vector&, T) +/// @copydoc math::mul(const math::vector&, T) template -vector operator*(T s, const vector& v); +math::vector operator*(T s, const math::vector& v); -/// @copydoc negate(const vector&) +/// @copydoc math::negate(const math::vector&) template -vector operator-(const vector& x); +math::vector operator-(const math::vector& x); -/// @copydoc sub(const vector&, const vector&) +/// @copydoc math::sub(const math::vector&, const math::vector&) template -vector operator-(const vector& x, const vector& y); +math::vector operator-(const math::vector& x, const math::vector& y); /** * Adds two vectors and stores the result in the first vector. @@ -69,7 +63,7 @@ vector operator-(const vector& x, const vector& y); * @return Reference to the first vector. */ template -vector& operator+=(vector& x, const vector& y); +math::vector& operator+=(math::vector& x, const math::vector& y); /** * Subtracts two vectors and stores the result in the first vector. @@ -79,7 +73,7 @@ vector& operator+=(vector& x, const vector& y); * @return Reference to the first vector. */ template -vector& operator-=(vector& x, const vector& y); +math::vector& operator-=(math::vector& x, const math::vector& y); /** * Multiplies two vectors and stores the result in the first vector. @@ -89,7 +83,7 @@ vector& operator-=(vector& x, const vector& y); * @return Reference to the first vector. */ template -vector& operator*=(vector& x, const vector& y); +math::vector& operator*=(math::vector& x, const math::vector& y); /** * Multiplies a vector and a scalar and stores the result in the vector. @@ -99,7 +93,7 @@ vector& operator*=(vector& x, const vector& y); * @return Reference to the vector. */ template -vector& operator*=(vector& v, T s); +math::vector& operator*=(math::vector& v, T s); /** * Divides the first vector by the second vector the result in the first vector. @@ -109,7 +103,7 @@ vector& operator*=(vector& v, T s); * @return Reference to the first vector. */ template -vector& operator/=(vector& x, const vector& y); +math::vector& operator/=(math::vector& x, const math::vector& y); /** * Divides a vector by a scalar and stores the result in the vector. @@ -119,99 +113,91 @@ vector& operator/=(vector& x, const vector& y); * @return Reference to the vector. */ template -vector& operator/=(vector& v, T s); +math::vector& operator/=(math::vector& v, T s); template -inline vector operator+(const vector& x, const vector& y) +inline math::vector operator+(const math::vector& x, const math::vector& y) { return add(x, y); } template -inline vector operator-(const vector& x) +inline math::vector operator-(const math::vector& x) { return negate(x); } template -inline vector operator-(const vector& x, const vector& y) +inline math::vector operator-(const math::vector& x, const math::vector& y) { return sub(x, y); } template -inline vector operator*(const vector& x, const vector& y) +inline math::vector operator*(const math::vector& x, const math::vector& y) { return mul(x, y); } template -inline vector operator*(const vector& v, T s) +inline math::vector operator*(const math::vector& v, T s) { return mul(v, s); } template -inline vector operator*(T s, const vector& v) +inline math::vector operator*(T s, const math::vector& v) { return mul(v, s); } template -inline vector operator/(const vector& x, const vector& y) +inline math::vector operator/(const math::vector& x, const math::vector& y) { return div(x, y); } template -inline vector operator/(const vector& v, T s) +inline math::vector operator/(const math::vector& v, T s) { return div(v, s); } template -inline vector& operator+=(vector& x, const vector& y) +inline math::vector& operator+=(math::vector& x, const math::vector& y) { return (x = x + y); } template -inline vector& operator-=(vector& x, const vector& y) +inline math::vector& operator-=(math::vector& x, const math::vector& y) { return (x = x - y); } template -inline vector& operator*=(vector& x, const vector& y) +inline math::vector& operator*=(math::vector& x, const math::vector& y) { return (x = x * y); } template -inline vector& operator*=(vector& v, T s) +inline math::vector& operator*=(math::vector& v, T s) { return (v = v * s); } template -inline vector& operator/=(vector& x, const vector& y) +inline math::vector& operator/=(math::vector& x, const math::vector& y) { return (x = x * y); } template -inline vector& operator/=(vector& v, T s) +inline math::vector& operator/=(math::vector& v, T s) { return (v = v / s); } -/// @} - -} // namespace vector_operators -} // namespace math - -// Bring vector operators into global namespace -using namespace math::vector_operators; - #endif // ANTKEEPER_MATH_VECTOR_OPERATORS_HPP diff --git a/src/math/vector-type.hpp b/src/math/vector-type.hpp index 422ab47..80aa108 100644 --- a/src/math/vector-type.hpp +++ b/src/math/vector-type.hpp @@ -25,9 +25,6 @@ namespace math { -/// @addtogroup vector -/// @{ - /** * An `N`-dimensional Euclidean vector. * @@ -121,10 +118,6 @@ struct vector inline constexpr std::size_t size() const noexcept { return 4; }; }; -static_assert(std::is_trivial>::value); - -/// @} - } // namespace math #endif // ANTKEEPER_MATH_VECTOR_TYPE_HPP