Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Attributes | Friends
omni::visual::PerspectiveCamera Class Reference

A perspective camera. More...

#include <PerspectiveCamera.h>

Inheritance diagram for omni::visual::PerspectiveCamera:
Inheritance graph
[legend]
Collaboration diagram for omni::visual::PerspectiveCamera:
Collaboration graph
[legend]

Public Member Functions

 PerspectiveCamera (qreal _fov=30.0)
 
 PerspectiveCamera (const Tracker &_tracker, qreal _fov=30.0, qreal _near=0.1, qreal _far=1000.0, const QVector3D &_up=QVector3D(0.0, 0.0, 1.0))
 
void setup (qreal _aspect) const
 Setup perspective camera in OpenGL. More...
 
qreal fov () const
 Return field of view value. More...
 
void setFov (qreal _fov)
 Set new field of view value. More...
 
void fromStream (QDataStream &)
 Deserialize from stream. More...
 
void toStream (QDataStream &) const
 Serialize to stream. More...
 
- Public Member Functions inherited from omni::visual::CameraInterface
 CameraInterface ()
 
 CameraInterface (const Tracker &_tracker, qreal _near=0.1, qreal _far=1000.0, const QVector3D &_up=QVector3D(0.0, 0.0, 1.0))
 
QVector3D right () const
 Right vector. More...
 
void strafe (qreal _right)
 Move camera to the right (or to the left if value is negative) More...
 
void lift (qreal _up)
 Move camera upwards (or downwards if value is negative) More...
 
QVector3D up () const
 Camera orientation. More...
 
void setUp (QVector3D const &)
 
qreal near () const
 Camera's near plane. More...
 
void setNear (qreal)
 
qreal far () const
 Camera's far plane. More...
 
void setFar (qreal)
 
- Public Member Functions inherited from omni::visual::Tracker
 Tracker ()
 
 Tracker (const QVector3D &_center, const PolarVec &_direction)
 
void track (float _longitude, float _latitude, float _radius)
 
QVector3D eye () const
 get tracker position More...
 
void setEye (const QVector3D &_pos)
 Set eye position. More...
 
void setCenter (QVector3D const &)
 Set center position. More...
 
QVector3D & center ()
 Return center position. More...
 
QVector3D const & center () const
 Return center position (const version) More...
 
void setDirection (PolarVec const &)
 Set direction from polar vector. More...
 
void setDistance (float _t)
 Set direction with a certain distance. More...
 
PolarVec & direction ()
 Return direction as polar vector. More...
 
PolarVec const & direction () const
 Return direction as polar vector (const version) More...
 
void limitDistance (float _minDist, float _maxDist)
 Keep distance in limits. More...
 

Private Attributes

qreal fov_ = 30.0
 Field of View Angle. More...
 

Friends

bool operator== (PerspectiveCamera const &, PerspectiveCamera const &)
 Test for equality. ScreenSetup is ignored. More...
 

Detailed Description

A perspective camera.

Constructor & Destructor Documentation

omni::visual::PerspectiveCamera::PerspectiveCamera ( qreal  _fov = 30.0)
25  :
26  fov_(_fov) {
27  }
qreal fov_
Field of View Angle.
Definition: PerspectiveCamera.h:60
omni::visual::PerspectiveCamera::PerspectiveCamera ( const Tracker _tracker,
qreal  _fov = 30.0,
qreal  _near = 0.1,
qreal  _far = 1000.0,
const QVector3D &  _up = QVector3D(0.0, 0.0, 1.0) 
)
33  :
34  CameraInterface(_tracker,_near,_far,_up),
35  fov_(_fov)
36  {
37 
38  }
qreal fov_
Field of View Angle.
Definition: PerspectiveCamera.h:60
CameraInterface()
Definition: CameraInterface.cpp:26

Member Function Documentation

qreal omni::visual::PerspectiveCamera::fov ( ) const
virtual

Return field of view value.

Reimplemented from omni::visual::CameraInterface.

40  {
41  return fov_;
42  }
qreal fov_
Field of View Angle.
Definition: PerspectiveCamera.h:60
void omni::visual::PerspectiveCamera::fromStream ( QDataStream &  _is)
virtual

Deserialize from stream.

Reimplemented from omni::visual::CameraInterface.

65  {
67  _is >> fov_;
68  }
qreal fov_
Field of View Angle.
Definition: PerspectiveCamera.h:60
void fromStream(QDataStream &)
Deserialize from stream.
Definition: CameraInterface.cpp:88
void omni::visual::PerspectiveCamera::setFov ( qreal  _fov)
virtual

Set new field of view value.

Reimplemented from omni::visual::CameraInterface.

44  {
45  fov_ = _fov;
46  }
qreal fov_
Field of View Angle.
Definition: PerspectiveCamera.h:60
void omni::visual::PerspectiveCamera::setup ( qreal  _aspect) const
virtual

Setup perspective camera in OpenGL.

Implements omni::visual::CameraInterface.

50  {
51  QMatrix4x4 _m;
52  glMatrixMode(GL_PROJECTION);
53  glLoadIdentity();
54 
55  // perspective projection
56  _m.perspective(fov_, _aspect, near(), far());
57 
58  _m.lookAt(eye(), center(), up());
59 
60  // Apply matrix to OpenGL
61  glMultMatrixf(_m.constData());
62  }
QVector3D eye() const
get tracker position
Definition: Tracker.cpp:44
qreal fov_
Field of View Angle.
Definition: PerspectiveCamera.h:60
QVector3D up() const
Camera orientation.
Definition: CameraInterface.cpp:57
qreal far() const
Camera's far plane.
Definition: CameraInterface.cpp:77
QVector3D & center()
Return center position.
Definition: Tracker.cpp:59
qreal near() const
Camera's near plane.
Definition: CameraInterface.cpp:67
void omni::visual::PerspectiveCamera::toStream ( QDataStream &  _os) const
virtual

Serialize to stream.

Reimplemented from omni::visual::CameraInterface.

71  {
73  _os << fov_;
74  }
qreal fov_
Field of View Angle.
Definition: PerspectiveCamera.h:60
void toStream(QDataStream &) const
Serialize to stream.
Definition: CameraInterface.cpp:94

Friends And Related Function Documentation

bool operator== ( PerspectiveCamera const &  _lhs,
PerspectiveCamera const &  _rhs 
)
friend

Test for equality. ScreenSetup is ignored.

77  {
78  return
79  (static_cast<CameraInterface const&>(_lhs) == static_cast<CameraInterface const&>(_rhs)) &&
81  }
qreal fov_
Field of View Angle.
Definition: PerspectiveCamera.h:60
#define OMNI_TEST_MEMBER_EQUAL(member)
Definition: util.h:125

Field Documentation

qreal omni::visual::PerspectiveCamera::fov_ = 30.0
private

Field of View Angle.


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