From 66018249860d827550879dd59668b27843bbadae Mon Sep 17 00:00:00 2001 From: lisyarus Date: Thu, 20 Aug 2026 21:52:38 +0300 Subject: [PATCH] Fix NaN in quaternion slerp when slerping opposite quaternions --- libs/math/include/psemek/math/quaternion.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/math/include/psemek/math/quaternion.hpp b/libs/math/include/psemek/math/quaternion.hpp index b341a9d2..fff1573f 100644 --- a/libs/math/include/psemek/math/quaternion.hpp +++ b/libs/math/include/psemek/math/quaternion.hpp @@ -265,8 +265,10 @@ namespace psemek::math auto const d = dot(q0.coords, q1.coords); // prevent division by zero - if (d >= T{1}) - return quaternion{lerp(q0.coords, q1.coords, t)}; + if (d >= T{ 1}) + return quaternion{lerp(q0.coords, q1.coords, t)}; + if (d <= T{-1}) + return quaternion{lerp(q0.coords, -q1.coords, t)}; auto const omega = acos(abs(d));