Ray Tracer Common Project
Image rendering program based on the ray tracing technique.
object.hpp
1 
15 #pragma once
16 
17 #include "entity.hpp"
18 #include "geometry/geometry.hpp"
19 #include "material/material.hpp"
20 
21 #include <map>
22 
23 namespace rt{
24 
25 class hit;
26 class euclidian;
27 
34 class Object : public Entity{
35 public:
39  Object(const vector & pos, Entity *parent = 0);
40 
44  Object(double x, double y, double z, Entity *parent = 0);
45 
52  rt::hit hit(const euclidian &) const;
53 
62 
66  void setMaterial(Geometry *, Material *);
67 
71  Material *material(Geometry *) const;
72 
73 private:
74  std::map<Geometry *, Material *> _materials;
75 };
76 
77 }
Basic space entity.
Definition: entity.hpp:50
Object material.
Definition: material.hpp:39
Definition: bitmap.cpp:4
static Material * defaultMaterial()
The default material.
Definition: material.cpp:20
3D vector
Definition: vector.hpp:28
Geometric entity.
Definition: geometry.hpp:39
rt::hit hit(const euclidian &) const
Perform a hit with an euclidian.
Definition: object.cpp:33
The result of a collistion between a Geometry and an euclidian.
Definition: hit.hpp:39
Material * material(Geometry *) const
Get the material of a geometric element.
Definition: object.cpp:29
Localised vector class.
Definition: euclidian.hpp:27
Visibles objects in a scene.
Definition: object.hpp:34
void addGeometry(Geometry *geometry, Material *material=Material::defaultMaterial())
Add a geometric element to the object.
Definition: object.cpp:17
void setMaterial(Geometry *, Material *)
Set the material of a geometric element.
Definition: object.cpp:22
Entity * parent() const
The parent entity.
Definition: entity.cpp:101
Object(const vector &pos, Entity *parent=0)
Construct an object from its position vector and its parent.
Definition: object.cpp:9