-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathVector4.cpp
More file actions
90 lines (71 loc) · 1.79 KB
/
Vector4.cpp
File metadata and controls
90 lines (71 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "Vector4.h"
#include <math.h>
Vector4::Vector4(float x, float y, float z, float w)
:x(x), y(y), z(z), w(w)
{}
Vector4::Vector4(const Vector4& v)
:x(v.x), y(v.y), z(v.z), w(v.w)
{}
Vector4& Vector4::operator=(const Vector4& vect){
x = vect.x;
y = vect.y;
z = vect.z;
w = vect.w;
return *this;
}
Vector4::~Vector4(){}
float Vector4::length() const {
return sqrt(x * x + y * y + z * z + w * w);
}
void Vector4::lerp(const Vector4& a, const Vector4& b, float t, Vector4& dest){
dest.x = a.x + ((b.x - a.x) * t);
dest.y = a.y + ((b.y - a.y) * t);
dest.z = a.z + ((b.z - a.z) * t);
dest.w = a.w + ((b.w - a.w) * t);
}
void Vector4::sub(const Vector4& left, const Vector4& right, Vector4& dest){
dest.x = left.x - right.x;
dest.y = left.y - right.y;
dest.z = left.z - right.z;
dest.w = left.w - right.w;
}
void Vector4::add(const Vector4& left, const Vector4& right, Vector4& dest){
dest.x = left.x + right.x;
dest.y = left.y + right.y;
dest.z = left.z + right.z;
dest.w = left.w + right.w;
}
void Vector4::mul(const Vector4& left, const Vector4& right, Vector4& dest){
dest.x = left.x * right.x;
dest.y = left.y * right.y;
dest.z = left.z * right.z;
dest.w = left.w * right.w;
}
float Vector4::dot(const Vector4& left, const Vector4& right){
return left.x * right.x + left.y * right.y + left.z * right.z + left.w * right.w;
}
float Vector4::dist(const Vector4& a, const Vector4& b){
float x = a.x - b.x;
float y = a.y - b.y;
float z = a.z - b.z;
float w = a.w - b.w;
return sqrt(x * x + y * y + z * z + w * w);
}
Vector4 Vector4::getNormalized(const Vector4& input){
Vector4 ret(input);
ret.normalize();
return ret;
}
void Vector4::scale(float s){
x *= s;
y *= s;
z *= s;
w *= s;
}
void Vector4::normalize(){
float mag = length();
x /= mag;
y /= mag;
z /= mag;
w /= mag;
}