Add quaternion exponential

This commit is contained in:
Nikita Lisitsa 2021-08-17 12:45:52 +03:00
parent 451b4c1e66
commit 44db0e8fee

View file

@ -199,6 +199,17 @@ namespace psemek::geom
}
}
template <typename T>
quaternion<T> exp(quaternion<T> const & q)
{
auto v = vector{q[0], q[1], q[2]};
auto l = length(v);
auto s = sin_over_x(l);
return std::exp(q[3]) * quaternion<T>({v[0] * s, v[1] * s, v[2] * s, std::cos(l)});
}
template <typename T>
std::ostream & operator << (std::ostream & os, quaternion<T> const & q)
{