Hermes
ray.h
Go to the documentation of this file.
1 
28 #ifndef HERMES_HERMES_GEOMETRY_RAY_H
29 #define HERMES_HERMES_GEOMETRY_RAY_H
30 
31 #include <hermes/geometry/point.h>
32 #include <hermes/geometry/vector.h>
33 
34 namespace hermes {
35 
36 // *********************************************************************************************************************
37 // Ray2
38 // *********************************************************************************************************************
39 class Ray2 {
40 public:
41  // *******************************************************************************************************************
42  // CONSTRUCTORS
43  // *******************************************************************************************************************
45  Ray2();
50  Ray2(const point2 &origin, const vec2 &direction);
52  virtual ~Ray2() = default;
53  // *******************************************************************************************************************
54  // OPERATORS
55  // *******************************************************************************************************************
59  point2 operator()(float t) const { return o + d * t; }
60  // *******************************************************************************************************************
61  // PUBLIC FIELDS
62  // *******************************************************************************************************************
64  vec2 d;
65 };
66 
67 // *********************************************************************************************************************
68 // Ray3
69 // *********************************************************************************************************************
70 class Ray3 {
71 public:
72  // *******************************************************************************************************************
73  // CONSTRUCTORS
74  // *******************************************************************************************************************
76  Ray3();
81  Ray3(const point3 &origin, const vec3 &direction);
83  virtual ~Ray3() = default;
84  // *******************************************************************************************************************
85  // OPERATORS
86  // *******************************************************************************************************************
90  point3 operator()(float t) const { return o + d * t; }
91  // *******************************************************************************************************************
92  // PUBLIC FIELDS
93  // *******************************************************************************************************************
95  vec3 d;
96 };
97 
98 // *********************************************************************************************************************
99 // IO
100 // *********************************************************************************************************************
101 inline std::ostream &operator<<(std::ostream &os, const Ray2 &r) {
102  os << "[Ray]\n";
103  os << r.o << r.d;
104  return os;
105 }
106 inline std::ostream &operator<<(std::ostream &os, const Ray3 &r) {
107  os << "[Ray]\n";
108  os << r.o << r.d;
109  return os;
110 }
111 
112 // *********************************************************************************************************************
113 // TYPEDEFS
114 // *********************************************************************************************************************
115 typedef Ray2 ray2;
116 typedef Ray3 ray3;
117 
118 } // namespace hermes
119 
120 #endif //HERMES_HERMES_GEOMETRY_RAY_H
Definition: ray.h:39
vec2 d
ray's direction
Definition: ray.h:64
point2 operator()(float t) const
Computes a point in ray's path at the given parametric coordinate.
Definition: ray.h:59
point2 o
ray's origin
Definition: ray.h:63
Definition: ray.h:70
vec3 d
ray's direction
Definition: ray.h:95
point3 operator()(float t) const
Computes a point in ray's path at the given parametric coordinate.
Definition: ray.h:90
point3 o
ray's origin
Definition: ray.h:94
Geometric point classes.
Geometric vector classes.