-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVector3.cpp
100 lines (87 loc) · 1.82 KB
/
Vector3.cpp
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
89
90
91
92
93
94
95
96
97
98
99
100
#include "Vector3.h"
//Vector Computations
Vector3 Vector3::Normalise()
{
float magnitude = Magnitude();
return Vector3(x / magnitude , y / magnitude, z / magnitude);
}
float Vector3::Magnitude()
{
return sqrtf((x * x) + (y * y) + (z * z));
}
Vector3 Vector3::DotProduct(Vector3 vector)
{
return Vector3(this->x * vector.x, this->y * vector.y, this->z * vector.z);
}
Vector3 Vector3::CrossProduct(Vector3 vector)
{
return Vector3((y * vector.z - vector.y * z), (z * vector.x - vector.z * x), (x * vector.y - vector.x * y));
}
void Vector3::Clamp(float maxNumber)
{
if (x > maxNumber)
{
x = maxNumber;
}
if (y > maxNumber)
{
y = maxNumber;
}
if (z > maxNumber)
{
z = maxNumber;
}
}
//Vector operators
Vector3 Vector3::operator*=(float scalar)
{
this->x *= scalar;
this->y *= scalar;
this->z *= scalar;
return *this;
}
Vector3 Vector3::operator*=(Vector3 vector)
{
this->x *= vector.x;
this->y *= vector.y;
this->z *= vector.z;
return *this;
}
Vector3 Vector3::operator+=(Vector3 vector)
{
this->x += vector.x;
this->y += vector.y;
this->z += vector.z;
return *this;
}
Vector3 Vector3::operator+(Vector3 vector)
{
Vector3 sum;
sum = Vector3(this->x + vector.x, this->y + vector.y, this->z + vector.z);
return sum;
}
Vector3 Vector3::operator-(Vector3 vector)
{
Vector3 sum;
sum = Vector3(this->x - vector.x, this->y - vector.y, this->z - vector.z);
return sum;
}
Vector3 Vector3::operator-()
{
//return opposite of vector
Vector3 opposite;
opposite = Vector3(-x, -y, -z);
return opposite;
}
Vector3 Vector3::operator*(float scalar)
{
Vector3 product;
product = Vector3(this->x * scalar, this->y * scalar, this->z * scalar);
return product;
}
Vector3 Vector3::operator*(Vector3 vector)
{
Vector3 product;
product = Vector3(this->x * product.x, this->y * product.y, this->z * product.z);
return product;
}