Ray Tracer Common Project
Image rendering program based on the ray tracing technique.
Public Member Functions | List of all members
rt::Geometry Class Referenceabstract

Geometric entity. More...

#include <geometry.hpp>

Inheritance diagram for rt::Geometry:
rt::Entity rt::Mesh rt::Plan rt::Sphere

Public Member Functions

 Geometry (Entity *parent=0)
 Main constructor. More...
 
 Geometry (const vector &pos, Entity *parent=0)
 Make a new geometry from its position and parent. More...
 
 Geometry (double x, double y, double z, Entity *parent=0)
 Make a new geometry from its position and parent. More...
 
virtual ~Geometry ()=0
 Destructor.
 
virtual vector uv (const element &) const =0
 UV-map a surface element on a texture. More...
 
virtual std::vector< rt::hithits (const euclidian &e) const =0
 Compute hits between a Geometry and an euclidian. More...
 
- Public Member Functions inherited from rt::Entity
 Entity (Entity *parent=0)
 Default entity constructor. More...
 
 Entity (const vector &pos, Entity *parent=0)
 Make a new entity from its position and parent. More...
 
 Entity (double x, double y, double z, Entity *parent=0)
 Make a new entity from its position coordinates and parent. More...
 
virtual ~Entity ()=0
 Destructor. More...
 
void soil ()
 Make an entity dirty. More...
 
bool isDirty () const
 
virtual void update ()
 Update the global matrix of the entity and its children.
 
const matrixglobalMatrix () const
 The global matrix of the entity. More...
 
const matrixinvertedGlobalMatrix () const
 The invert of the global matrix of the entity. More...
 
vector globalPosition () const
 Global position of the entity. More...
 
const vectorposition () const
 Entity location.
 
const vectorrotation () const
 Entity rotation.
 
void setPosition (const vector &pos)
 Set the entity position. More...
 
void setRotation (const vector &rot)
 Set the entity rotation. More...
 
Entityparent () const
 The parent entity. More...
 
void setParent (Entity *)
 Set the parent entity. More...
 
Scenescene () const
 The scene of the entity.
 
void setScene (Scene *)
 Set the scene of the entity. More...
 
const std::unordered_set< Entity * > & children () const
 Entity children.
 
void addChild (Entity *)
 Add a child. More...
 
void removeChild (Entity *)
 Remove a child. More...
 
template<class T >
void queryAll (std::list< const T *> &list) const
 Get the list of a specific type of entity. More...
 

Detailed Description

Geometric entity.

This class is used to describe geometric elements. Geometry is used by Object to draw complex objects with differents shapes and materials.

The geometry is described by its location in the local space of its parent entity, but this entity is mainly an Object instance.

The main purpose of a Geometry is to compute hits between itself and some euclidian in the global space referential.

Constructor & Destructor Documentation

◆ Geometry() [1/3]

rt::Geometry::Geometry ( Entity parent = 0)

Main constructor.

Parameters
parentThe parent entity of the geometry. To be able to draw the geometry during the render, this parent must be an Object.

◆ Geometry() [2/3]

rt::Geometry::Geometry ( const vector pos,
Entity parent = 0 
)

Make a new geometry from its position and parent.

Parameters
posThe location of the geometry in its parent local space.
parentThe parent entity of the geometry. To be able to draw the geometry during the render, this parent must be an Object.

◆ Geometry() [3/3]

rt::Geometry::Geometry ( double  x,
double  y,
double  z,
Entity parent = 0 
)

Make a new geometry from its position and parent.

Parameters
xPosition of the geometry along x-axis.
yPosition of the geometry along y-axis.
zPosition of the geometry along z-axis.
parentThe parent entity of the geometry. To be able to draw the geometry during the render, this parent must be an Object.

Member Function Documentation

◆ hits()

virtual std::vector<rt::hit> rt::Geometry::hits ( const euclidian e) const
pure virtual

Compute hits between a Geometry and an euclidian.

Parameters
eAn euclidian in the global space referential.
Returns
A list of hit. If no hit occurs, the list is empty.

Implemented in rt::Sphere, rt::Plan, and rt::Mesh.

◆ uv()

virtual vector rt::Geometry::uv ( const element ) const
pure virtual

UV-map a surface element on a texture.

Returns
The surface element coordinate on a texture for the UV-mapping.

Implemented in rt::Sphere, rt::Plan, and rt::Mesh.


The documentation for this class was generated from the following files: