-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVec3.cpp
More file actions
68 lines (55 loc) · 1.37 KB
/
Vec3.cpp
File metadata and controls
68 lines (55 loc) · 1.37 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
#include "Vec3.h"
Vec3::Vec3() : e{0, 0, 0} {}; //Default
Vec3::Vec3(double x, double y, double z) : e{x, y, z}{}
Vec3::Vec3(double s): e{s, s, s}{}
double Vec3::x() const { return e[0];}
double Vec3::y() const { return e[1];}
double Vec3::z() const { return e[2];}
Vec3 Vec3::operator-() const {return Vec3(-e[0], -e[1], -e[2]);}
double Vec3::operator[](int i) const {return e[i];}
double& Vec3::operator[](int i) {return e[i];}
Vec3& Vec3::operator+=(const Vec3 &v){
e[0] += v.e[0];
e[1] += v.e[1];
e[2] += v.e[2];
return *this;
}
Vec3& Vec3::operator-=(const Vec3 &v){
e[0] -= v.e[0];
e[1] -= v.e[1];
e[2] -= v.e[2];
return *this;
}
Vec3& Vec3::operator*=(const Vec3 &v){
e[0] *= v.e[0];
e[1] *= v.e[1];
e[2] *= v.e[2];
return *this;
}
Vec3& Vec3::operator/=(const Vec3 &v){
e[0] /= v.e[0];
e[1] /= v.e[1];
e[2] /= v.e[2];
return *this;
}
Vec3& Vec3::operator+=(const double s){
return *this += Vec3(s, s, s);
}
Vec3& Vec3::operator-=(const double s){
return *this += Vec3(-s, -s, -s);
}
Vec3& Vec3::operator*=(const double s){
e[0] *= s;
e[1] *= s;
e[2] *= s;
return *this;
}
Vec3& Vec3::operator/=(const double s){
return *this *= 1/s;
}
double Vec3::Length() const{
return sqrt(LengthSquared());
}
double Vec3::LengthSquared() const{
return e[0]*e[0] + e[1]*e[1] + e[2]*e[2];
}