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.
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 |
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) |
TGLVertex3 | fCenter | ! |
Double_t | fDolly | ! |
Double_t | fDollyDefault | ! |
Double_t | fDollyMax | ! |
Double_t | fDollyMin | ! |
Double_t | fFOV | ! |
TGLVector3 | fHAxis | ! |
Double_t | fHRotate | ! |
TGLVector3 | fTruck | ! |
TGLVector3 | fVAxis | ! |
Double_t | fVRotate | ! |
static UInt_t | fgDollyDeltaSens | |
static Double_t | fgFOVDefault | |
static UInt_t | fgFOVDeltaSens | |
static Double_t | fgFOVMax | |
static Double_t | fgFOVMin |
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.
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.
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.
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. TODO: Rotation center should be changeable from outside.
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.
Configure the camera state