CUGL 2.3
Cornell University Game Library

#include <CUPerspectiveCamera.h>
Public Member Functions  
PerspectiveCamera ()  
~PerspectiveCamera ()  
void  dispose () override 
bool  init (const Size size, float fieldOfView=DEFAULT_CAMERA_FOV) 
bool  init (float width, float height, float fieldOfView=DEFAULT_CAMERA_FOV) 
bool  init (const Rect rect, float fieldOfView=DEFAULT_CAMERA_FOV) 
bool  init (const Vec2 origin, const Size size, float fieldOfView=DEFAULT_CAMERA_FOV) 
bool  init (float x, float y, float width, float height, float fieldOfView=DEFAULT_CAMERA_FOV) 
void  set (const Size size, float fieldOfView=DEFAULT_CAMERA_FOV) 
void  set (float width, float height, float fieldOfView=DEFAULT_CAMERA_FOV) 
void  set (const Rect rect, float fieldOfView=DEFAULT_CAMERA_FOV) 
void  set (const Vec2 origin, const Size size, float fieldOfView=DEFAULT_CAMERA_FOV) 
void  set (float x, float y, float width, float height, float fieldOfView=DEFAULT_CAMERA_FOV) 
void  update () override 
float  getFieldOfView () const 
void  setFieldOfView (float fov) 
Public Member Functions inherited from cugl::Camera  
Camera ()  
~Camera ()  
virtual void  dispose () 
const Vec3  getPosition () const 
void  setPosition (const Vec3 pos) 
const Vec3  getDirection () const 
void  setDirection (const Vec3 vec) 
const Vec3  getUp () const 
void  setUp (const Vec3 vec) 
float  getNear () const 
void  setNear (float value) 
float  getFar () const 
void  setFar (float value) 
const Rect  getViewport () const 
const Mat4 &  getProjection () const 
const Mat4 &  getView () const 
const Mat4 &  getCombined () const 
const Mat4 &  getInverseProjectView () const 
virtual void  update ()=0 
void  lookAt (const Vec3 target) 
void  lookAt (const Vec3 target, const Vec3 up) 
void  lookAt (float x, float y, float z) 
void  normalizeUp () 
void  rotate (const Quaternion &quat) 
void  rotate (const Vec3 axis, float angle) 
void  rotateX (float angle) 
void  rotateY (float angle) 
void  rotateZ (float angle) 
void  rotate (float angle) 
void  rotate (const Mat4 &transform) 
void  rotateAround (const Vec3 point, const Vec3 axis, float angle) 
void  translate (const Vec3 vec) 
void  translate (const Vec2 vec) 
void  translate (float tx, float ty, float tz) 
void  translate (float tx, float ty) 
void  transform (const Mat4 &transform) 
Vec3  unproject (const Vec3 windowCoords) const 
Vec3  unproject (const Vec3 windowCoords, const Rect viewport) const 
Vec3  screenToWorldCoords (const Vec2 screenCoords) const 
Vec3  project (const Vec3 worldCoords) const 
Vec3  project (const Vec3 worldCoords, const Rect viewport) const 
Vec2  worldToScreenCoords (const Vec3 worldCoords) const 
Ray  getPickRay (const Vec3 windowCoords) const 
Ray  getPickRay (const Vec3 windowCoords, const Rect viewport) const 
Ray  getPickRayFromScreen (const Vec2 screenCoords) const 
Vec2  windowToScreenCoords (const Vec3 windowCoords) const 
Vec2  windowToScreenCoords (const Vec3 windowCoords, const Rect viewport) const 
Vec3  screenToWindowCoords (const Vec2 screenCoords) const 
Vec3  screenToWindowCoords (const Vec2 screenCoords, const Rect viewport) const 
Static Public Member Functions  
static std::shared_ptr< PerspectiveCamera >  alloc (const Size size, float fieldOfView=DEFAULT_CAMERA_FOV) 
static std::shared_ptr< PerspectiveCamera >  alloc (float width, float height, float fieldOfView=DEFAULT_CAMERA_FOV) 
static std::shared_ptr< PerspectiveCamera >  alloc (const Rect rect, float fieldOfView=DEFAULT_CAMERA_FOV) 
static std::shared_ptr< PerspectiveCamera >  alloc (const Vec2 origin, const Size size, float fieldOfView=DEFAULT_CAMERA_FOV) 
static std::shared_ptr< PerspectiveCamera >  alloc (float x, float y, float width, float height, float fieldOfView=DEFAULT_CAMERA_FOV) 
Protected Attributes  
float  _fieldOfView = 67 
bool  _initialized 
Protected Attributes inherited from cugl::Camera  
Vec3  _position 
Vec3  _direction 
Vec3  _upwards 
Mat4  _projection 
Mat4  _modelview 
Mat4  _combined 
Mat4  _inverse 
float  _near 
float  _far 
Rect  _viewport 
This is a class for a camera with a perspective projection.
This camera is used for 3d rendering.

inline 
Creates a degenerate camera.
All of the matrices are the identity and the viewport is empty.

inline 
Deletes this camera, disposing all resources.

inlinestatic 
Initializes a new PerspectiveCamera for the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
Offseting the viewport origin has no affect on the position attribute. It only affects the coordinate conversion methods Camera#project()
and Camera#unproject()
. It is supposed to represent the offset of the viewport in a larger canvas.
rect  The viewport bounding box 
fieldOfView  The field of view of the height, in degrees 

inlinestatic 
Initializes a new PerspectiveCamera for the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
The viewport origin is assumed to be (0,0).
size  The viewport size 
fieldOfView  The field of view of the height, in degrees 

inlinestatic 
Initializes a new PerspectiveCamera for the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
Offseting the viewport origin has no affect on the position attribute. It only affects the coordinate conversion methods Camera#project()
and Camera#unproject()
. It is supposed to represent the offset of the viewport in a larger canvas.
origin  The viewport offset 
size  The viewport size 
fieldOfView  The field of view of the height, in degrees 

inlinestatic 
Initializes a new PerspectiveCamera for the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
The viewport origin is assumed to be (0,0).
width  The viewport width 
height  The viewport height 
fieldOfView  The field of view of the height, in degrees 

inlinestatic 
Initializes a new PerspectiveCamera for the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
Offseting the viewport origin has no affect on the position attribute. It only affects the coordinate conversion methods Camera#project()
and Camera#unproject()
. It is supposed to represent the offset of the viewport in a larger canvas.
x  The viewport x offset 
y  The viewport y offset 
width  The viewport width 
height  The viewport height 
fieldOfView  The field of view of the height, in degrees 

overridevirtual 
Returns this camera to the denegerate one, with all matrices the identity.
Reimplemented from cugl::Camera.

inline 
Returns the field of view for the given camera.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.

inline 
Initializes a new PerspectiveCamera for the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
Offseting the viewport origin has no affect on the position attribute. It only affects the coordinate conversion methods Camera#project()
and Camera#unproject()
. It is supposed to represent the offset of the viewport in a larger canvas.
rect  The viewport bounding box 
fieldOfView  The field of view of the height, in degrees 

inline 
Initializes a new PerspectiveCamera for the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
The viewport origin is assumed to be (0,0).
size  The viewport size 
fieldOfView  The field of view of the height, in degrees 

inline 
Initializes a new PerspectiveCamera for the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
Offseting the viewport origin has no affect on the position attribute. It only affects the coordinate conversion methods Camera#project()
and Camera#unproject()
. It is supposed to represent the offset of the viewport in a larger canvas.
origin  The viewport offset 
size  The viewport size 
fieldOfView  The field of view of the height, in degrees 

inline 
Initializes a new PerspectiveCamera for the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
The viewport origin is assumed to be (0,0).
width  The viewport width 
height  The viewport height 
fieldOfView  The field of view of the height, in degrees 
bool cugl::PerspectiveCamera::init  (  float  x, 
float  y,  
float  width,  
float  height,  
float  fieldOfView = DEFAULT_CAMERA_FOV 

) 
Initializes a new PerspectiveCamera for the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
Offseting the viewport origin has no affect on the position attribute. It only affects the coordinate conversion methods Camera#project()
and Camera#unproject()
. It is supposed to represent the offset of the viewport in a larger canvas.
x  The viewport x offset 
y  The viewport y offset 
width  The viewport width 
height  The viewport height 
fieldOfView  The field of view of the height, in degrees 

inline 
Sets this PerspectiveCamera to have the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
Offseting the viewport origin has no affect on the position attribute. It only affects the coordinate conversion methods Camera#project()
and Camera#unproject()
. It is supposed to represent the offset of the viewport in a larger canvas.
rect  The viewport bounding box 
fieldOfView  The field of view of the height, in degrees 

inline 
Sets this PerspectiveCamera to have the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
The viewport origin is assumed to be (0,0).
size  The viewport size 
fieldOfView  The field of view of the height, in degrees 

inline 
Sets this PerspectiveCamera to have the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
Offseting the viewport origin has no affect on the position attribute. It only affects the coordinate conversion methods Camera#project()
and Camera#unproject()
. It is supposed to represent the offset of the viewport in a larger canvas.
origin  The viewport offset 
size  The viewport size 
fieldOfView  The field of view of the height, in degrees 

inline 
Sets this PerspectiveCamera to have the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
The viewport origin is assumed to be (0,0).
width  The viewport width 
height  The viewport height 
fieldOfView  The field of view of the height, in degrees 
void cugl::PerspectiveCamera::set  (  float  x, 
float  y,  
float  width,  
float  height,  
float  fieldOfView = DEFAULT_CAMERA_FOV 

) 
Sets this PerspectiveCamera to have the given viewport and field of view.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
Offseting the viewport origin has no affect on the position attribute. It only affects the coordinate conversion methods Camera#project()
and Camera#unproject()
. It is supposed to represent the offset of the viewport in a larger canvas.
x  The viewport x offset 
y  The viewport y offset 
width  The viewport width 
height  The viewport height 
fieldOfView  The field of view of the height, in degrees 
void cugl::PerspectiveCamera::setFieldOfView  (  float  fov  ) 
Sets the field of view for the given camera.
The field of view given is for the height, and is measured in degrees. The field of view for the width will be calculated according to the aspect ratio. Furthermore, the aspect ratio is derived from the viewport size.
Changing this value will have no effect on the underlying matrices until you call the update() method.
fov  the field of view for the given camera. 

overridevirtual 
Recalculates the projection and view matrix of this camera.
Use this after you've manipulated any of the attributes of the camera.
Implements cugl::Camera.

protected 
The field of view of the height, in degrees

protected 
Whether or not the camera has been initialized