From: Mikko Rasa Date: Thu, 30 Jan 2025 18:28:06 +0000 (+0200) Subject: Add some shorthand syntaxes for angles and quaternions X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;ds=inline;p=libs%2Fmath.git Add some shorthand syntaxes for angles and quaternions --- diff --git a/source/geometry/angle.h b/source/geometry/angle.h index c6baf1a..5239d42 100644 --- a/source/geometry/angle.h +++ b/source/geometry/angle.h @@ -252,6 +252,24 @@ inline Angle atan2(T y, T x) return Angle::from_radians(atan2(y, x)); } +const struct { } degrees; + +template +inline Angle operator*(T value, const decltype(degrees) &) +{ return Angle::from_degrees(value); } + +const struct { } radians; + +template +inline Angle operator*(T value, const decltype(radians) &) +{ return Angle::from_radians(value); } + +const struct { } turns; + +template +inline Angle operator*(T value, const decltype(turns) &) +{ return Angle::from_turns(value); } + } // namespace Geometry } // namespace Msp diff --git a/source/geometry/quaternion.h b/source/geometry/quaternion.h index 2e15c1a..6623946 100644 --- a/source/geometry/quaternion.h +++ b/source/geometry/quaternion.h @@ -256,6 +256,14 @@ LinAl::Matrix Quaternion::to_matrix() const return LinAl::Matrix::from_columns(columns); } +template +inline Quaternion make_quat(Angle angle, const LinAl::Vector &axis) +{ return Quaternion::rotation(angle, axis); } + +template +inline Quaternion make_quat(const LinAl::Vector &from, const LinAl::Vector &to) +{ return Quaternion::rotation(from, to); } + } // namespace Geometry } // namespace Msp