diff --git a/include/Nazara/Math/Vector2.inl b/include/Nazara/Math/Vector2.inl index 7bfe930e0..227d95425 100644 --- a/include/Nazara/Math/Vector2.inl +++ b/include/Nazara/Math/Vector2.inl @@ -150,11 +150,13 @@ NzVector2& NzVector2::Minimize(const NzVector2& vec) template NzVector2& NzVector2::Normalize(T* length) { - T norm = std::sqrt(GetSquaredLength()); - T invNorm = F(1.0) / norm; - - x *= invNorm; - y *= invNorm; + T norm = GetLength(); + if (norm > F(0.0)) + { + T invNorm = F(1.0) / norm; + x *= invNorm; + y *= invNorm; + } if (length) *length = norm; diff --git a/include/Nazara/Math/Vector3.inl b/include/Nazara/Math/Vector3.inl index 15ad4c95e..f300330b8 100644 --- a/include/Nazara/Math/Vector3.inl +++ b/include/Nazara/Math/Vector3.inl @@ -231,11 +231,13 @@ template NzVector3& NzVector3::Normalize(T* length) { T norm = GetLength(); - T invNorm = F(1.0) / norm; - - x *= invNorm; - y *= invNorm; - z *= invNorm; + if (norm > F(0.0)) + { + T invNorm = F(1.0) / norm; + x *= invNorm; + y *= invNorm; + z *= invNorm; + } if (length) *length = norm;