kyosu v0.1.0
Complex Without Complexes
Loading...
Searching...
No Matches

◆ rot_angle

auto kyosu::rot_angle = eve::functor<rot_angle_t>
inlineconstexpr

Callable object computing the normalized angle of rotation defined by a quaternion.

Header file

#include kyosu/quaternion.hpp>`

Callable Signatures

namespace eve
{
auto rot_angle(auto q) const noexcept;
auto rot_angle[radpi](auto q) const noexcept;
}
constexpr auto rot_angle
Callable object computing the normalized angle of rotation defined by a quaternion.
Definition rot_angle.hpp:68

Parameters

q: quaternion, complex or floating

Return value

the rotation angle. This is two times the arg of the quaternion. If the radpi option is used the angles are returned in \(\pi\) multiples else in radian.

Example

#include <eve/wide.hpp>
#include <iostream>
#include <kyosu/kyosu.hpp>
int main()
{
// std::cout << "Real: ";
// std::cout << 72.9f << " -> " << rot_angle(72.9f) << "\n";
std::cout << "Complex: ";
std::cout << kyosu::complex_t<float>(3.5f, -2.9f) << " -> " << rot_angle(kyosu::complex_t<float>(3.5f, -2.9f))
<< "\n";
std::cout << "Quaternion: ";
std::cout << kyosu::quaternion_t<double>(1., 2., 3., 4.) << " -> "
<< rot_angle(kyosu::quaternion_t<double>(1., 2., 3., 4.)) << "\n";
std::cout << "SIMD: ";
using wc_t = eve::wide<kyosu::complex_t<double>, eve::fixed<2>>;
std::cout << wc_t(kyosu::complex_t<double>(1.3, -3.7)) << " -> "
<< rot_angle(wc_t(kyosu::complex_t<double>(1.3, -3.7))) << "\n";
return 0;
}
as_cayley_dickson_n_t< 2, T > complex_t
Type alias for complex numbers.
Definition complex.hpp:27
as_cayley_dickson_n_t< 4, T > quaternion_t
Type alias for quaternion numbers.
Definition quaternion.hpp:24