mirror of
https://github.com/Lime3DS/Lime3DS
synced 2024-12-27 17:42:40 -06:00
vector math: add implementation of Length and Normalize
This commit is contained in:
parent
55f5d0f777
commit
2e6d8e1321
1 changed files with 19 additions and 0 deletions
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue