NRE::Math::Frustum Class Reference

A view frustum used with camera. More...

#include <NRE_Frustum.hpp>

Inheritance diagram for NRE::Math::Frustum:

Public Member Functions

 Frustum ()=delete
 
 Frustum (Angle fieldOfView, float r, Vector2D< float > const &d)
 
 Frustum (Frustum const &f)=default
 
 Frustum (Frustum &&f)=default
 
 ~Frustum ()=default
 
Plane< float > const & getPlane (std::size_t index) const
 
void setFov (Angle fieldOfView)
 
void computePlane (Point3D< float > const &eye, Vector3D< float > const &forward, Vector3D< float > const &left, Vector3D< float > const &up)
 
void computeProjectionMatrix (Matrix4x4< float > &m)
 
void resize (Vector2D< std::size_t > const &size, Point3D< float > const &eye, Vector3D< float > const &forward, Vector3D< float > const &left, Vector3D< float > const &up)
 
Frustumoperator= (Frustum const &f)=default
 
Frustumoperator= (Frustum &&f)=default
 
Utility::String toString () const
 

Detailed Description

A view frustum used with camera.

Constructor & Destructor Documentation

NRE::Math::Frustum::Frustum ( )
delete

No default constructor

NRE::Math::Frustum::Frustum ( Angle  fieldOfView,
float  r,
Vector2D< float > const &  d 
)

Construct a frustum with his fov, his ratio and the distance vector

Parameters
fieldOfViewthe frustum's fov
rthe frustum's ratio
dthe frustum's distance
NRE::Math::Frustum::Frustum ( Frustum const &  f)
default

Copy f into this

Parameters
fthe object to copy
NRE::Math::Frustum::Frustum ( Frustum &&  f)
default

Move f into this

Parameters
fthe object to move
NRE::Math::Frustum::~Frustum ( )
default

Frustum Deconstructor

Member Function Documentation

void NRE::Math::Frustum::computePlane ( Point3D< float > const &  eye,
Vector3D< float > const &  forward,
Vector3D< float > const &  left,
Vector3D< float > const &  up 
)

Compute the frustum's planes according to the given vectors

Parameters
eyethe eye's position
forwardthe forward vector
leftthe left vector
upthe up vector
void NRE::Math::Frustum::computeProjectionMatrix ( Matrix4x4< float > &  m)

Perform a perspective projection on m

Parameters
mthe matrix to transform
Plane<float> const& NRE::Math::Frustum::getPlane ( std::size_t  index) const

Query a specific plane

Parameters
indexthe plane index
Returns
the corresponding plane
Frustum& NRE::Math::Frustum::operator= ( Frustum const &  f)
default

Copy f into this

Parameters
fthe object to copy into this
Returns
the reference of himself
Frustum& NRE::Math::Frustum::operator= ( Frustum &&  f)
default

Move f into this

Parameters
fthe object to move into this
Returns
the reference of himself
void NRE::Math::Frustum::resize ( Vector2D< std::size_t > const &  size,
Point3D< float > const &  eye,
Vector3D< float > const &  forward,
Vector3D< float > const &  left,
Vector3D< float > const &  up 
)

Resize the frustum according to the given vector

Parameters
sizethe screen's size
eyethe eye's position
forwardthe forward vector
leftthe left vector
upthe up vector
void NRE::Math::Frustum::setFov ( Angle  fieldOfView)

Set the frustum field of view

Parameters
fieldOfViewthe new fov
Utility::String NRE::Math::Frustum::toString ( ) const

Convert the frustum into a string

Returns
the converted frustum

The documentation for this class was generated from the following file:
  • /mnt/c/Users/abell/Documents/GitHub/NRE-Math/src/Math/Frustum/NRE_Frustum.hpp