library: libRGL #include "TGLCamera.h"

# TGLCamera

class description - source file - inheritance tree (.pdf)

## class TGLCamera

| Inheritance Chart:
`TGLCamera` |
<- |
`TGLOrthoCamera` |
`TGLPerspectiveCamera` |

This is an abstract class, constructors will not be documented.
Look at the header to check for available constructors.

        private:

              TGLVertex3 EyePoint() const
          TGLBoundingBox Frustum(Bool_t asBox = kTRUE) const
              TGLCamera& operator=(const TGLCamera&)

        protected:

          Bool_t AdjustAndClampVal(Double_t& val, Double_t min, Double_t max, Int_t screenShift, Int_t screenShiftRange, Bool_t mod1, Bool_t mod2) const
            void UpdateCache()

        public:

                  virtual ~TGLCamera()
             virtual void Apply(const TGLBoundingBox& box, const TGLRect* pickRect = 0)
           static TClass* Class()
           virtual Bool_t Dolly(Int_t delta, Bool_t mod1, Bool_t mod2)
                     void DrawDebugAids() const
               TGLVector3 EyeDistances(const TGLBoundingBox& box) const
                 EOverlap FrustumOverlap(const TGLBoundingBox& box) const
          virtual TClass* IsA() const
                   Bool_t OfInterest(const TGLBoundingBox& box) const
               TGLVector3 ProjectedShift(const TGLVertex3& vertex, Int_t xDelta, Int_t yDelta) const
             virtual void Reset()
                     void ResetInterest()
           virtual Bool_t Rotate(Int_t xDelta, Int_t yDelta)
             virtual void Setup(const TGLBoundingBox& box)
                     void SetViewport(const TGLRect& viewport)
             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)
                   Bool_t UpdateInterest(Bool_t force)
                 EOverlap ViewportOverlap(const TGLBoundingBox& box) const
                  TGLRect ViewportSize(const TGLBoundingBox& box) const
           virtual Bool_t Zoom(Int_t delta, Bool_t mod1, Bool_t mod2)

### Data Members

        private:

          TGLPlane fFrustumPlanes[6]  !

        protected:

                 TGLRect fViewport              ! viewport (GL coords - origin bottom left)
               TGLMatrix fProjM                 ! projection matrix        (cached)
               TGLMatrix fModVM                 ! modelView matrix         (cached)
               TGLMatrix fClipM                 ! object space clip matrix (cached)
                  Bool_t fCacheDirty            ! cached items dirty?
          TGLBoundingBox fInterestBox           ! the interest box - created in UpdateInterest()
          TGLBoundingBox fInterestFrustum       ! frustum used to create interest box - debug mode only
          TGLBoundingBox fInterestFrustumAsBox  ! squared off frustum - debug mode only
                Double_t fInterestBoxExpansion  ! expansion c.f. aligned current frustum box
                Double_t fLargestInterest

        public:

          static const enum TGLCamera:: kNEAR
          static const enum TGLCamera:: kLEFT
          static const enum TGLCamera:: kRIGHT
          static const enum TGLCamera:: kTOP
          static const enum TGLCamera:: kBOTTOM
          static const enum TGLCamera:: kFAR
          static const enum TGLCamera:: kPlanesPerFrustum

## Class Description

~TGLCamera()

void SetViewport(const TGLRect & viewport)

void UpdateCache()

     Update internal cached values

TGLVertex3 EyePoint() const

TGLBoundingBox Frustum(Bool_t asBox) const

     Return the the current camera frustum. If asBox == FALSE return
     a true frustum (truncated square based pyramid). If asBox == TRUE
     return a true box, using the far clipping plane intersection projected
     back to the near plane

EOverlap FrustumOverlap(const TGLBoundingBox & box) const

EOverlap ViewportOverlap(const TGLBoundingBox & box) const

     No cached values need here

TGLRect ViewportSize(const TGLBoundingBox & box) const

TGLVector3 ProjectedShift(const TGLVertex3 & vertex, Int_t xDelta, Int_t yDelta) const

TGLVector3 EyeDistances(const TGLBoundingBox & box) const

Bool_t OfInterest(const TGLBoundingBox & box) const

Bool_t UpdateInterest(Bool_t force)

void ResetInterest()

Bool_t AdjustAndClampVal(Double_t & val, Double_t min, Double_t max, Int_t screenShift, Int_t screenShiftRange, Bool_t mod1, Bool_t mod2) const

void DrawDebugAids() const

     Draw out some debugging aids for the camera:

     i) The frustum used to create the current interest box (RED)
     ii) The same frustum as a squared off box (ORANGE)
     iii) The axis aligned version of the frustum used as interest box basis (YELLOW)
     iv) The current interest box (BLUE)

### Inline Functions

             TGLCamera& operator=(const TGLCamera&)
                   void Setup(const TGLBoundingBox& box)
                   void Reset()
                 Bool_t Dolly(Int_t delta, Bool_t mod1, Bool_t mod2)
                 Bool_t Zoom(Int_t delta, Bool_t mod1, Bool_t mod2)
                 Bool_t Truck(Int_t x, Int_t y, Int_t xDelta, Int_t yDelta)
                 Bool_t Rotate(Int_t xDelta, Int_t yDelta)
                   void Apply(const TGLBoundingBox& box, const TGLRect* pickRect = 0)
                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: TGLCamera.cxx,v 1.13 2005/06/24 14:53:02 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *