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

Geometric sphere. More...

#include <sphere.hpp>

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

Public Member Functions

 Sphere (double r)
 Make a new sphere at \((0, 0, 0)\). More...
 
 Sphere (const vector &pos, double r)
 Make a new sphere. More...
 
double ray () const
 The ray of the sphere.
 
void setRay (double r)
 Set the ray of the sphere.
 
vector normal (const vector &) const
 Compute a normal of the sphere from a local position. More...
 
vector tangent (const vector &) const
 Compute a tangent of the sphere from a local position. More...
 
virtual vector uv (const element &) const
 UV-map a surface element on the sphere. More...
 
virtual std::vector< hithits (const euclidian &) const
 Compute hits between the sphere and an euclidian. More...
 
- Public Member Functions inherited from rt::Geometry
 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.
 
- 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 sphere.

Constructor & Destructor Documentation

◆ Sphere() [1/2]

rt::Sphere::Sphere ( double  r)

Make a new sphere at \((0, 0, 0)\).

Parameters
r

◆ Sphere() [2/2]

rt::Sphere::Sphere ( const vector pos,
double  r 
)

Make a new sphere.

Parameters
posThe location of the sphere
rThe ray of the sphere

Member Function Documentation

◆ hits()

std::vector< hit > rt::Sphere::hits ( const euclidian global_e) const
virtual

Compute hits between the sphere and an euclidian.

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

Implements rt::Geometry.

◆ normal()

vector rt::Sphere::normal ( const vector v) const

Compute a normal of the sphere from a local position.

Returns
A normal vector.

◆ tangent()

vector rt::Sphere::tangent ( const vector o) const

Compute a tangent of the sphere from a local position.

Returns
A tangent vector.

◆ uv()

vector rt::Sphere::uv ( const element ) const
virtual

UV-map a surface element on the sphere.

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

Implements rt::Geometry.


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