-
Notifications
You must be signed in to change notification settings - Fork 0
/
vec.cpp
77 lines (65 loc) · 1.75 KB
/
vec.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
//
// Created by Arian Dovald on 4/21/23.
//
#include "vec.h"
vec::vec(double x_component, double y_component, double z_component) {
x = x_component;
y = y_component;
z = z_component;
}
vec vec::operator+(vec vector) const {
double new_x = x + vector.x;
double new_y = y + vector.y;
double new_z = z + vector.z;
return {new_x, new_y, new_z};
}
void vec::operator+=(vec vector) {
x += vector.x;
y += vector.y;
z += vector.z;
}
vec vec::operator-(vec vector) const {
double new_x = x - vector.x;
double new_y = y - vector.y;
double new_z = z - vector.z;
return {new_x, new_y, new_z};
}
void vec::operator-=(vec vector) {
x -= vector.x;
y -= vector.y;
z -= vector.z;
}
vec vec::operator*(double m) const {
double new_x = x * m;
double new_y = y * m;
double new_z = z * m;
return {new_x, new_y, new_z};
}
vec vec::operator/(double m) const {
double new_x = x / m;
double new_y = y / m;
double new_z = z / m;
return {new_x, new_y, new_z};
}
[[nodiscard]] double vec::dot(vec vector) const {
double product = (x * vector.x) + (y * vector.y) + (z * vector.z);
return product;
}
[[nodiscard]] double vec::mag() const {
double magnitude = sqrt(dot(vec(x, y, z)));
return magnitude;
}
[[nodiscard]] vec vec::norm() const {
double magnitude = mag();
double new_x = x/magnitude;
double new_y = y/magnitude;
double new_z = z/magnitude;
return {new_x, new_y, new_z};
}
[[nodiscard]] vec vec::cross(vec vector) const {
double new_x = (y * vector.z) - (z * vector.y);
double new_y = (x * vector.z) - (z * vector.x);
double new_z = (x * vector.y) - (y * vector.z);
return {new_x, new_y, new_z};
}
vec& vec::operator=(const vec&) = default;