]> git.tdb.fi Git - libs/math.git/commitdiff
Add some shorthand syntaxes for angles and quaternions master
authorMikko Rasa <tdb@tdb.fi>
Thu, 30 Jan 2025 18:28:06 +0000 (20:28 +0200)
committerMikko Rasa <tdb@tdb.fi>
Thu, 30 Jan 2025 18:28:06 +0000 (20:28 +0200)
source/geometry/angle.h
source/geometry/quaternion.h

index c6baf1ac8686fcf7a9bca88fc17f6a3f19f750a9..5239d428e07de00f9fe078180d3eea44bb1a0e7c 100644 (file)
@@ -252,6 +252,24 @@ inline Angle<T> atan2(T y, T x)
        return Angle<T>::from_radians(atan2(y, x));
 }
 
        return Angle<T>::from_radians(atan2(y, x));
 }
 
+const struct { } degrees;
+
+template<typename T>
+inline Angle<T> operator*(T value, const decltype(degrees) &)
+{ return Angle<T>::from_degrees(value); }
+
+const struct { } radians;
+
+template<typename T>
+inline Angle<T> operator*(T value, const decltype(radians) &)
+{ return Angle<T>::from_radians(value); }
+
+const struct { } turns;
+
+template<typename T>
+inline Angle<T> operator*(T value, const decltype(turns) &)
+{ return Angle<T>::from_turns(value); }
+
 } // namespace Geometry
 } // namespace Msp
 
 } // namespace Geometry
 } // namespace Msp
 
index 2e15c1acf57c2a390296112aad7856cd09334dd0..6623946e45f17d33ad57518a5a4fe7fb64725a0c 100644 (file)
@@ -256,6 +256,14 @@ LinAl::Matrix<T, 3, 3> Quaternion<T>::to_matrix() const
        return LinAl::Matrix<T, 3, 3>::from_columns(columns);
 }
 
        return LinAl::Matrix<T, 3, 3>::from_columns(columns);
 }
 
+template<typename T>
+inline Quaternion<T> make_quat(Angle<T> angle, const LinAl::Vector<T, 3> &axis)
+{ return Quaternion<T>::rotation(angle, axis); }
+
+template<typename T>
+inline Quaternion<T> make_quat(const LinAl::Vector<T, 3> &from, const LinAl::Vector<T, 3> &to)
+{ return Quaternion<T>::rotation(from, to); }
+
 } // namespace Geometry
 } // namespace Msp
 
 } // namespace Geometry
 } // namespace Msp