Ray Tracer Common Project
Image rendering program based on the ray tracing technique.
euclidian.hpp
1 
15 #pragma once
16 
17 #include "vector.hpp"
18 #include "matrix.hpp"
19 
20 namespace rt{
21 
27 class euclidian{
28 public:
37  euclidian(const vector & origin, const vector & u);
38 
42  inline const vector & direction() const{
43  return _u;
44  }
45 
49  inline const vector & u() const{
50  return _u;
51  }
52 
56  inline const vector & origin() const{
57  return _origin;
58  }
59 
60  friend euclidian operator*(const matrix &, const euclidian &);
61 
62 private:
63  vector _u;
64  vector _origin;
65 };
66 
88 inline euclidian operator*(const matrix & m, const euclidian & e){
89  vector pos = m*e.origin();
90  return euclidian(pos, m*(e.origin()+e.u()) - pos);
91 }
92 
93 }
const vector & direction() const
The direction vector.
Definition: euclidian.hpp:42
friend euclidian operator*(const matrix &, const euclidian &)
Matrix multiplication with an euclidian.
Definition: euclidian.hpp:88
Definition: bitmap.cpp:4
const vector & u() const
The direction vector (alias for euclidian::direction())
Definition: euclidian.hpp:49
const vector & origin() const
The position vector.
Definition: euclidian.hpp:56
3D vector
Definition: vector.hpp:28
euclidian(const vector &origin, const vector &u)
Constructor.
Definition: euclidian.cpp:5
4x4 matrix
Definition: matrix.hpp:33
Localised vector class.
Definition: euclidian.hpp:27
color operator*(double f, const color &c)
Same as color::operator*(double).