26 vec3(
double a,
double b,
double c): x(a),y(b),z(c) {};
28 bool operator==(
const vec3& other)
const {
29 return (x == other.x && y == other.y && z==other.z);
32 double operator[](
size_t index)
const{
33 if (index == 0)
return x;
34 else if (index == 1)
return y;
35 else if (index == 2)
return z;
36 throw std::out_of_range(
"Index out of range");
40 vec3 operator+(
const vec3& other)
const {
41 return vec3(x+other.x,y+other.y,z+other.z);
45 return vec3(x-other.x,y-other.y,z-other.z);
48 vec3 operator*(
double scalar)
const {
49 return vec3(x * scalar,y * scalar,z * scalar);
52 vec3 operator/(
double scalar)
const {
53 return vec3(x / scalar,y / scalar,z / scalar);
56 friend vec3 operator*(
double scalar,
const vec3& other) {
57 return vec3(other.x * scalar, other.y * scalar, other.z * scalar);
60 double dot(
const vec3& other)
const {
61 return x * other.x + y * other.y + z * other.z;
64 double length()
const {
65 return std::sqrt(x * x + y * y + z * z);
68 vec3 normalize()
const {
69 double mag = length();
71 return vec3(0.0, 0.0, 0.0);
73 return vec3(x / mag, y / mag, z / mag);
81 return vec3(-x, -y, -z);
87inline double dot(
const vec3& a,
const vec3& b) {
88 return a.x * b.x + a.y * b.y + a.z * b.z;
93 a.y * b.z - a.z * b.y,
94 a.z * b.x - a.x * b.z,
vec3 operator-() const
Inverts the vector.
Definition: vec3.hpp:80