Ray Tracer Common Project
Image rendering program based on the ray tracing technique.
vector.hpp
1 
15 #pragma once
16 
17 #include <ostream>
18 
19 namespace rt {
20 
28  struct vector {
29 
30  double x;
31  double y;
32  double z;
33 
38  : x(0.0), y(0.0), z(0.0) {}
39 
43  vector(double a, double b, double c)
44  : x(a), y(b), z(c) {}
45 
49  const double & operator[](int i) const;
50 
54  double & operator[](int i);
55 
59  bool operator==(const vector& other) const;
60 
64  vector operator+(const vector& other) const;
65 
69  vector operator-(const vector& other) const;
70 
74  vector operator-() const;
75 
80  vector operator^(const vector& other) const;
81 
86  double operator|(const vector& other) const;
87 
91  double norm() const;
92 
96  vector unit() const;
97 
101  double distance(const vector &) const;
102  };
103 
108  vector operator*(const double& x, const vector& v);
109 
114  vector operator*(const vector& v, const double& x);
115 
116  std::ostream & operator<<(std::ostream & stream, const vector & v);
117 }
118 
119 
vector operator+(const vector &other) const
Definition: vector.cpp:55
vector operator-() const
Definition: vector.cpp:65
vector unit() const
Definition: vector.cpp:87
Definition: bitmap.cpp:4
double distance(const vector &) const
Definition: vector.cpp:94
double operator|(const vector &other) const
Definition: vector.cpp:76
const double & operator[](int i) const
Definition: vector.cpp:22
bool operator==(const vector &other) const
Definition: vector.cpp:50
vector operator^(const vector &other) const
Definition: vector.cpp:69
vector(double a, double b, double c)
Construct a new vector from its coordinates.
Definition: vector.hpp:43
3D vector
Definition: vector.hpp:28
double norm() const
Definition: vector.cpp:81
vector()
Null vector constructor.
Definition: vector.hpp:37
color operator*(double f, const color &c)
Same as color::operator*(double).