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.
Bool_t | TGLCamera::AdjustAndClampVal(Double_t& val, Double_t min, Double_t max, Int_t screenShift, Int_t screenShiftRange, Bool_t mod1, Bool_t mod2) const |
void | TGLCamera::UpdateCache() const |
void | Init() |
enum EType { | kXOY | |
kXOZ | ||
kZOY | ||
}; | ||
enum TGLCamera::EFrustumPlane { | kNear | |
kLeft | ||
kRight | ||
kTop | ||
kBottom | ||
kFar | ||
kPlanesPerFrustum | ||
}; |
Bool_t | TGLCamera::fCacheDirty | ! cached items dirty? |
TGLMatrix | TGLCamera::fClipM | ! object space clip matrix (cached) |
TGLPlane | TGLCamera::fFrustumPlanes[6] | ! frustum planes (cached) |
TGLBoundingBox | TGLCamera::fInterestBox | ! the interest box - created in UpdateInterest() |
Double_t | TGLCamera::fLargestSeen | ! largest box volume seen in OfInterest() - used when |
TGLMatrix | TGLCamera::fModVM | ! modelView matrix (cached) |
TGLMatrix | TGLCamera::fProjM | ! projection matrix (cached) |
UInt_t | TGLCamera::fTimeStamp | ! timestamp |
TGLRect | TGLCamera::fViewport | ! viewport (GL coords - origin bottom left) |
TArcBall | fArcBall | |
TGLVertex3 | fCenter | |
TGLMatrix | fMatrix | ! orthographic orientation matrix |
TPoint | fMousePos | |
Double_t | fOrthoBox[4] | |
Double_t | fShift | |
TGLVector3 | fTruck | ! current truck vector |
TGLOrthoCamera::EType | fType | ! type (EType) - one of kXOY, kXOZ, kZOY |
TGLBoundingBox | fVolume | ! |
Bool_t | fVpChanged | |
Double_t | fZoom | ! current zoom |
Double_t | fZoomDefault | ! default zoom factor |
Double_t | fZoomMax | ! maximum zoom factor |
Double_t | fZoomMin | ! minimum zoom factor |
static UInt_t | fgZoomDeltaSens |
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.
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.
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.
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.
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.
Configure the camera state
void TGLOrthoCamera::SetViewport(Int_t context) Setup viewport, if it was changed, plus reset arcball.