library: libRGL
#include "TGLPerspectiveCamera.h"

TGLPerspectiveCamera


class description - header file - source file
viewCVS header - viewCVS source

class TGLPerspectiveCamera: public TGLCamera

Inheritance Inherited Members Includes Libraries
Class Charts

Function Members (Methods)

Display options:
Show inherited
Show non-public
public:
TGLPerspectiveCamera(const TGLVector3& hAxis, const TGLVector3& vAxis)
virtual~TGLPerspectiveCamera()
virtual voidApply(const TGLBoundingBox& box, const TGLRect* pickRect = 0) const
static TClass*Class()
voidConfigure(Double_t fov, Double_t dolly, Double_t* center, Double_t hRotate, Double_t vRotate)
virtual Bool_tDolly(Int_t delta, Bool_t mod1, Bool_t mod2)
voidTGLCamera::DrawDebugAids() const
TGLVector3TGLCamera::EyeDirection() const
TGLVertex3TGLCamera::EyePoint() const
TGLVertex3TGLCamera::FrustumCenter() const
EOverlapTGLCamera::FrustumOverlap(const TGLBoundingBox& box) const
const TGLPlane&TGLCamera::FrustumPlane(TGLCamera::EFrustumPlane plane) const
virtual TClass*IsA() const
Bool_tTGLCamera::OfInterest(const TGLBoundingBox& box, Bool_t ignoreSize) const
virtual voidReset()
voidTGLCamera::ResetInterest()
virtual Bool_tRotate(Int_t xDelta, Int_t yDelta)
virtual voidSetup(const TGLBoundingBox& box, Bool_t reset = kTRUE)
voidTGLCamera::SetViewport(const TGLRect& viewport)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual Bool_tTruck(Int_t x, Int_t y, Int_t xDelta, Int_t yDelta)
Bool_tTGLCamera::UpdateInterest(Bool_t force)
TGLVector3TGLCamera::ViewportDeltaToWorld(const TGLVertex3& worldRef, Double_t viewportXDelta, Double_t viewportYDelta) const
EOverlapTGLCamera::ViewportOverlap(const TGLBoundingBox& box) const
pair<Bool_t,TGLVertex3>TGLCamera::ViewportPlaneIntersection(const TPoint& viewport, const TGLPlane& worldPlane) const
pair<Bool_t,TGLVertex3>TGLCamera::ViewportPlaneIntersection(Double_t viewportX, Double_t viewportY, const TGLPlane& worldPlane) const
TGLRectTGLCamera::ViewportRect(const TGLBoundingBox& box, TGLBoundingBox::EFace face) const
TGLRectTGLCamera::ViewportRect(const TGLBoundingBox& box, const TGLBoundingBox::EFace* face = 0) const
TGLVertex3TGLCamera::ViewportToWorld(const TGLVertex3& viewportVertex) const
TGLLine3TGLCamera::ViewportToWorld(const TPoint& viewport) const
TGLLine3TGLCamera::ViewportToWorld(Double_t viewportX, Double_t viewportY) const
voidTGLCamera::WindowToViewport(TPoint& point) const
voidTGLCamera::WindowToViewport(TGLRect& rect) const
voidTGLCamera::WindowToViewport(TGLVertex3& vertex) const
voidTGLCamera::WindowToViewport(Int_t&, Int_t& y) const
TGLVector3TGLCamera::WorldDeltaToViewport(const TGLVertex3& worldRef, const TGLVector3& worldDelta) const
TGLVertex3TGLCamera::WorldToViewport(const TGLVertex3& worldVertex) const
virtual Bool_tZoom(Int_t delta, Bool_t mod1, Bool_t mod2)
protected:
Bool_tTGLCamera::AdjustAndClampVal(Double_t& val, Double_t min, Double_t max, Int_t screenShift, Int_t screenShiftRange, Bool_t mod1, Bool_t mod2) const
voidTGLCamera::UpdateCache() const

Data Members

public:
enum TGLCamera::EFrustumPlane { kNear
kLeft
kRight
kTop
kBottom
kFar
kPlanesPerFrustum
};
protected:
Bool_tTGLCamera::fCacheDirty! cached items dirty?
TGLMatrixTGLCamera::fProjM! projection matrix (cached)
TGLMatrixTGLCamera::fModVM! modelView matrix (cached)
TGLMatrixTGLCamera::fClipM! object space clip matrix (cached)
TGLPlaneTGLCamera::fFrustumPlanes[6]! frustum planes (cached)
TGLRectTGLCamera::fViewport! viewport (GL coords - origin bottom left)
TGLBoundingBoxTGLCamera::fInterestBox! the interest box - created in UpdateInterest()
Double_tTGLCamera::fLargestSeen! largest box volume seen in OfInterest() - used when
private:
TGLVector3fHAxis!
TGLVector3fVAxis!
Double_tfDollyMin!
Double_tfDollyDefault!
Double_tfDollyMax!
Double_tfFOV!
Double_tfDolly!
Double_tfVRotate!
Double_tfHRotate!
TGLVertex3fCenter!
TGLVector3fTruck!
static Double_tfgFOVMin
static Double_tfgFOVDefault
static Double_tfgFOVMax
static UInt_tfgDollyDeltaSens
static UInt_tfgFOVDeltaSens

Class Description

                                                                      
 TGLPerspectiveCamera                                                 
                                                                      
 Perspective projection camera - with characteristic foreshortening.  
                                                                      
 TODO: Currently constrains YOZ plane to be floor - this is never     
 'tipped'. While useful we really need to extend so can:              
 i) Pick any one of the three natural planes of the world to be floor.
 ii) Can use a free arcball style camera with no contraint - integrate
 TArcBall.                                                            

TGLPerspectiveCamera(const TGLVector3 & hAxis, const TGLVector3 & vAxis)
 Construct perspective camera
~TGLPerspectiveCamera()
 Destroy perspective camera
void Setup(const TGLBoundingBox & box, Bool_t reset)
 Setup camera limits suitible to view the world volume defined by 'box'
 and call Reset() to initialise camera.
void Reset()
 Reset the camera to defaults - reframe the world volume established in Setup()
 in default state. Note: limits defined in Setup() are not adjusted.
Bool_t Dolly(Int_t delta, Bool_t mod1, Bool_t mod2)
 Dolly the camera - 'move camera along eye line, retaining lens focal length'.
 Arguments are:

 'delta' - mouse viewport delta (pixels) - +ive dolly in, -ive dolly out
 'mod1' / 'mod2' - sensitivity modifiers - see TGLCamera::AdjustAndClampVal()

 Returns kTRUE is redraw required (camera change), kFALSE otherwise.
Bool_t Zoom(Int_t delta, Bool_t mod1, Bool_t mod2)
 Zoom the camera - 'adjust lens focal length, retaining camera position'.
 Arguments are:

 'delta' - mouse viewport delta (pixels) - +ive zoom in, -ive zoom out
 'mod1' / 'mod2' - sensitivity modifiers - see TGLCamera::AdjustAndClampVal()

 Returns kTRUE is redraw required (camera change), kFALSE otherwise.
Bool_t Truck(Int_t x, Int_t y, Int_t xDelta, Int_t yDelta)
 Truck the camera - 'move camera parallel to film plane'. The film 
 plane is defined by the EyePoint() / EyeDirection() pair. Define motion 
 using center point (x/y) and delta (xDelta/yDelta) - the mouse motion. 
 For an orthographic projection this means all objects (regardless of 
 camera distance) track the mouse motion. 

 Returns kTRUE is redraw required (camera change), kFALSE otherwise.

 Note: Trucking is often mistakenly refered to as 'pan' or 'panning'. 
 Panning is swivelling the camera on it's own axis - the eye point.
Bool_t Rotate(Int_t xDelta, Int_t yDelta)
 Rotate the camera round view volume center established in Setup().
 Arguments are:

 xDelta - horizontal delta (pixels)
 YDelta - vertical delta (pixels)

 Deltas are divided by equivalent viewport dimension and scaled
 by full rotation - i.e. translates fraction of viewport to
 fractional rotation.   
void Apply(const TGLBoundingBox & sceneBox, const TGLRect * pickRect)
 Apply the camera to the current GL context, setting the viewport, projection
 and modelview matricies. After this verticies etc can be directly entered
 in the world frame. This also updates the cached frustum values, enabling
 all the projection, overlap tests etc defined in TGLCamera to be used.
 
 Arguments are:
 'box' - view volume box - used to adjust near/far clipping
 'pickRect' - optional picking rect. If non-null, restrict drawing to this
 viewport rect.
void Configure(Double_t fov, Double_t dolly, Double_t center[3], Double_t hRotate, Double_t vRotate)
 Configure the camera state

Author: Richard Maunder 25/05/2005
Last update: root/gl:$Name: $:$Id: TGLPerspectiveCamera.cxx,v 1.17 2006/08/23 14:39:40 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.