Ray Tracer Common Project
Image rendering program based on the ray tracing technique.
camera.hpp
1 
15 #pragma once
16 
17 #include "scene/entity.hpp"
18 #include "core/image.hpp"
19 #include "ray.hpp"
20 
21 namespace rt{
28 class Camera : public Entity{
29 public:
38  Camera(const vector & position, const vector & target, const vector & up, double near = 3.0);
39 
44  FastRender = 0,
48  };
49 
53  const vector & target() const;
57  void setTarget(const vector & target);
58 
64  virtual void render(image & img, int flags = FullRender) const;
65 
66 protected:
75  ray project(int ix, int iy, int width, int height) const;
76 
77 private:
78  vector _target;
79  vector _up;
80  double _near;
81 };
82 
83 }
Basic space entity.
Definition: entity.hpp:50
Definition: camera.hpp:45
const vector & position() const
Entity location.
Definition: entity.cpp:83
Definition: camera.hpp:44
virtual void render(image &img, int flags=FullRender) const
Process a render.
Definition: camera.cpp:40
Render camera.
Definition: camera.hpp:28
Definition: camera.hpp:46
Definition: bitmap.cpp:4
3D vector
Definition: vector.hpp:28
Camera(const vector &position, const vector &target, const vector &up, double near=3.0)
Main constructor.
Definition: camera.cpp:10
const vector & target() const
The camera focus target.
Definition: camera.cpp:16
RenderQuality
Render quality flags.
Definition: camera.hpp:43
ray project(int ix, int iy, int width, int height) const
Build a new ray projected from a render target position.
Definition: camera.cpp:24
Light ray.
Definition: ray.hpp:33
Image surface.
Definition: image.hpp:31
Definition: camera.hpp:47
void setTarget(const vector &target)
set the camera focus target
Definition: camera.cpp:20