library: libRGL #include "TGLOrthoCamera.h" |
TGLOrthoCamera
class description - source file - inheritance tree (.pdf)
private:
void Init()
public:
TGLOrthoCamera(TGLOrthoCamera::EType type)
virtual ~TGLOrthoCamera()
virtual void Apply(const TGLBoundingBox& sceneBox, const TGLRect* pickRect = 0) const
static TClass* Class()
void Configure(Double_t left, Double_t right, Double_t top, Double_t bottom)
virtual Bool_t Dolly(Int_t delta, Bool_t mod1, Bool_t mod2)
virtual TClass* IsA() const
virtual void Reset()
virtual Bool_t Rotate(Int_t xDelta, Int_t yDelta)
virtual void Setup(const TGLBoundingBox& box)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
virtual Bool_t Truck(Int_t x, Int_t y, Int_t xDelta, Int_t yDelta)
virtual Bool_t Zoom(Int_t delta, Bool_t mod1, Bool_t mod2)
private:
TGLOrthoCamera::EType fType !
Double_t fZoomMin !
Double_t fZoomDefault !
Double_t fZoomMax !
TGLBoundingBox fVolume !
Double_t fZoom !
TGLVector3 fTruck !
TGLMatrix fMatrix !
static UInt_t fgZoomDeltaSens
public:
static const TGLOrthoCamera::EType kXOY
static const TGLOrthoCamera::EType kXOZ
static const TGLOrthoCamera::EType kZOY
TGLOrthoCamera
Orthographic projection camera. Currently limited to three types
defined at construction time - kXOY, kXOZ, kZOY - where this refers
to the viewport plane axis - e.g. kXOY has X axis horizontal, Y
vertical - i.e. looking down Z axis with Y vertical.
The plane types restriction could easily be removed to supported
arbitary ortho projections along any axis/orientation with free
rotations about them.
TGLOrthoCamera(EType type) :
fType(type), fZoomMin(0.01), fZoomDefault(0.78), fZoomMax(1000.0),
fVolume(TGLVertex3(-100.0, -100.0, -100.0), TGLVertex3(100.0, 100.0, 100.0)),
fZoom(1.0), fTruck(0.0, 0.0, 0.0), fMatrix()
Construct orthographic camera with 'type' defining fixed view direction
& orientation (in world frame):
kXOY : X Horz. / Y Vert (looking towards +Z, Y up)
kXOZ : X Horz. / Z Vert (looking towards +Y, Z up)
kZOY : Z Horz. / Y Vert (looking towards +X, Y up)
~TGLOrthoCamera()
Destroy orthographic camera
void Setup(const TGLBoundingBox & box)
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 - trucking, zooming to reframe the world volume
established in Setup(). 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()
For an orthographic camera dollying and zooming are identical and both equate
logically to a rescaling of the viewport limits - without center shift.
There is no perspective foreshortening or lens 'focal length'.
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()
For an orthographic camera dollying and zooming are identical and both equate
logically to a rescaling of the viewport limits - without center shift.
There is no perspective foreshortening or lens 'focal length'.
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.
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 - 'swivel round the view volume center'.
Ignored at present for orthographic cameras - have a fixed direction.
Could let the user or external code create non-axis
ortho projects by adjusting H/V rotations in future.
Returns kTRUE is redraw required (camera change), kFALSE otherwise.
void Apply(const TGLBoundingBox & /*box*/, const TGLRect * pickRect) const
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 - ignored for ortho camera. Assumed to be same
as one passed to Setup().
'pickRect' - optional picking rect. If non-null, restrict drawing to this
viewport rect.
void Configure(Double_t left, Double_t right,
Double_t top, Double_t bottom)
Configure the camera state
Inline Functions
void Init()
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
Author: Richard Maunder 25/05/2005
Last update: root/gl:$Name: $:$Id: TGLOrthoCamera.cxx,v 1.13 2006/01/26 11:59:41 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.