vector math: add implementation of Length and Normalize

This commit is contained in:
wwylele 2016-12-11 23:28:55 +02:00
parent 55f5d0f777
commit 2e6d8e1321

View file

@ -186,6 +186,18 @@ Vec2<T> operator*(const V& f, const Vec2<T>& vec) {
typedef Vec2<float> Vec2f; typedef Vec2<float> Vec2f;
template <>
inline float Vec2<float>::Length() const {
return std::sqrt(x * x + y * y);
}
template <>
inline float Vec2<float>::Normalize() {
float length = Length();
*this /= length;
return length;
}
template <typename T> template <typename T>
class Vec3 { class Vec3 {
public: public:
@ -388,6 +400,13 @@ inline Vec3<float> Vec3<float>::Normalized() const {
return *this / Length(); return *this / Length();
} }
template <>
inline float Vec3<float>::Normalize() {
float length = Length();
*this /= length;
return length;
}
typedef Vec3<float> Vec3f; typedef Vec3<float> Vec3f;
template <typename T> template <typename T>