From 1ed74db7a83821c33f5990e32e97bc0c7c033531 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Mon, 1 Apr 2019 21:51:57 +0200 Subject: [PATCH] [DEV] correct quaternion --- etk/math/Quaternion.hpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/etk/math/Quaternion.hpp b/etk/math/Quaternion.hpp index 4623bf2..6b8bb2f 100644 --- a/etk/math/Quaternion.hpp +++ b/etk/math/Quaternion.hpp @@ -12,6 +12,7 @@ extern "C" { } #include #include +#include namespace etk { /** @@ -30,6 +31,20 @@ namespace etk { m_floats[2] = 0.0f; m_floats[3] = 0.0f; } + /* + void checkValues() const { + if ( isinf(m_floats[0]) == true + || isnan(m_floats[0]) == true + || isinf(m_floats[1]) == true + || isnan(m_floats[1]) == true + || isinf(m_floats[2]) == true + || isnan(m_floats[2]) == true + || isinf(m_floats[3]) == true + || isnan(m_floats[3]) == true) { + TK_CRITICAL(" set transform: (" << m_floats[0] << "," << m_floats[1] << "," << m_floats[2] << "," << m_floats[3] << ")"); + } + } + */ /** * @brief Constructor from scalars. * @param _xxx X value @@ -409,6 +424,7 @@ namespace etk { m_floats[1] = m_floats[3] * _obj.m_floats[1] + _obj.m_floats[3] * m_floats[1] + crossValue.y(); m_floats[2] = m_floats[3] * _obj.m_floats[2] + _obj.m_floats[3] * m_floats[2] + crossValue.z(); m_floats[3] = m_floats[3] * _obj.m_floats[3] - base.dot(_obj.getVectorV()); + safeNormalize(); return *this; } /** @@ -462,10 +478,10 @@ namespace etk { * @param[in] _www W value. */ void setValue(const float& _xxx, const float& _yyy, const float& _zzz, const float& _www) { - m_floats[0]=_xxx; - m_floats[1]=_yyy; - m_floats[2]=_zzz; - m_floats[3]=_www; + m_floats[0] = _xxx; + m_floats[1] = _yyy; + m_floats[2] = _zzz; + m_floats[3] = _www; } /** * @brief Set 0 value on all the quaternion