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
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