From 44db0e8fee3bb3d260e6a29b59d59cf456d16469 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 17 Aug 2021 12:45:52 +0300 Subject: [PATCH] Add quaternion exponential --- libs/geom/include/psemek/geom/quaternion.hpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libs/geom/include/psemek/geom/quaternion.hpp b/libs/geom/include/psemek/geom/quaternion.hpp index 67d601d8..a7a378fa 100644 --- a/libs/geom/include/psemek/geom/quaternion.hpp +++ b/libs/geom/include/psemek/geom/quaternion.hpp @@ -199,6 +199,17 @@ namespace psemek::geom } } + template + quaternion exp(quaternion 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({v[0] * s, v[1] * s, v[2] * s, std::cos(l)}); + } + template std::ostream & operator << (std::ostream & os, quaternion const & q) {