From 82ea2f6e688eb8470e7214898f8ff3a6ab5d4c71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaakko=20Ker=C3=A4nen?= Date: Mon, 7 Apr 2014 14:37:38 +0300 Subject: [PATCH] libdeng2|Vector: Squared length for 2-component vectors --- doomsday/libdeng2/include/de/core/vector.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/doomsday/libdeng2/include/de/core/vector.h b/doomsday/libdeng2/include/de/core/vector.h index 7cf9f47af3..57d2b1cafb 100644 --- a/doomsday/libdeng2/include/de/core/vector.h +++ b/doomsday/libdeng2/include/de/core/vector.h @@ -166,8 +166,11 @@ class Vector2 bool operator <= (Vector2 const &other) const { return *this == other || *this < other; } - ddouble length() const { - return std::sqrt(ddouble(x*x + y*y)); + inline ddouble length() const { + return std::sqrt(lengthSquared()); + } + inline ddouble lengthSquared() const { + return ddouble(x*x + y*y); } void setLength(ddouble len) { *this = *this / length() * len; @@ -701,6 +704,9 @@ typedef Vector4 Vector4f; ///< 4-component vector of floating point va typedef Vector4 Vector4d; ///< 4-component vector of high-precision floating point values. ///@} +// Qt hash functions: +inline quint32 qHash(Vector2i const &vec) { return vec.x * vec.y + vec.x - vec.y; } + } // namespace de #endif /* LIBDENG2_VECTOR_H */