29 class TView3D :
public TView {
53 TSeqCollection *fOutline;
54 Bool_t fDefaultOutline;
58 TView3D(
const TView3D&);
59 TView3D& operator=(
const TView3D&);
61 void ResetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep);
71 TView3D(Int_t system,
const Double_t *rmin,
const Double_t *rmax);
74 virtual void AxisVertex(Double_t ang, Double_t *av, Int_t &ix1, Int_t &ix2, Int_t &iy1, Int_t &iy2, Int_t &iz1, Int_t &iz2);
75 virtual void DefinePerspectiveView();
76 virtual void DefineViewDirection(
const Double_t *s,
const Double_t *c,
77 Double_t cosphi, Double_t sinphi,
78 Double_t costhe, Double_t sinthe,
79 Double_t cospsi, Double_t sinpsi,
80 Double_t *tnorm, Double_t *tback);
81 virtual void DrawOutlineCube(TList *outline, Double_t *rmin, Double_t *rmax);
82 virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
83 virtual void ExecuteRotateView(Int_t event, Int_t px, Int_t py);
84 virtual void FindScope(Double_t *scale, Double_t *center, Int_t &irep);
85 virtual Int_t GetDistancetoAxis(Int_t axis, Int_t px, Int_t py, Double_t &ratio);
86 virtual Double_t GetDview()
const {
return fDview;}
87 virtual Double_t GetDproj()
const {
return fDproj;}
88 virtual Double_t GetExtent()
const;
89 virtual Bool_t GetAutoRange() {
return fAutoRange;}
90 virtual Double_t GetLatitude() {
return fLatitude;}
91 virtual Double_t GetLongitude() {
return fLongitude;}
92 virtual Double_t GetPsi() {
return fPsi;}
93 virtual void GetRange (Float_t *min, Float_t *max);
94 virtual void GetRange (Double_t *min, Double_t *max);
95 virtual Double_t *GetRmax() {
return fRmax;}
96 virtual Double_t *GetRmin() {
return fRmin;}
97 virtual TSeqCollection *GetOutline() {
return fOutline; }
98 virtual Double_t *GetTback() {
return fTback;}
99 virtual Double_t *GetTN() {
return fTN;}
100 virtual Double_t *GetTnorm() {
return fTnorm;}
101 virtual Int_t GetSystem() {
return fSystem;}
102 virtual void GetWindow(Double_t &u0, Double_t &v0, Double_t &du, Double_t &dv)
const;
103 virtual Double_t GetWindowWidth()
const {
return 0.5*(fUVcoord[1]-fUVcoord[0]);}
104 virtual Double_t GetWindowHeight()
const {
return 0.5*(fUVcoord[3]-fUVcoord[2]);}
105 virtual void FindNormal(Double_t x, Double_t y, Double_t z, Double_t &zn);
106 virtual void FindPhiSectors(Int_t iopt, Int_t &kphi, Double_t *aphi, Int_t &iphi1, Int_t &iphi2);
107 virtual void FindThetaSectors(Int_t iopt, Double_t phi, Int_t &kth, Double_t *ath, Int_t &ith1, Int_t &ith2);
108 virtual Bool_t IsClippedNDC(Double_t *p)
const;
109 virtual Bool_t IsPerspective()
const {
return TestBit(kPerspective);}
110 virtual Bool_t IsViewChanged()
const {
return fChanged;}
111 virtual void NDCtoWC(
const Float_t *pn, Float_t *pw);
112 virtual void NDCtoWC(
const Double_t *pn, Double_t *pw);
113 virtual void NormalWCtoNDC(
const Float_t *pw, Float_t *pn);
114 virtual void NormalWCtoNDC(
const Double_t *pw, Double_t *pn);
115 virtual void PadRange(Int_t rback);
116 virtual void ResizePad();
117 virtual void SetAutoRange(Bool_t autorange=kTRUE) {fAutoRange=autorange;}
118 virtual void SetAxisNDC(
const Double_t *x1,
const Double_t *x2,
const Double_t *y1,
const Double_t *y2,
const Double_t *z1,
const Double_t *z2);
119 virtual void SetDefaultWindow();
120 virtual void SetDview(Double_t dview) {fDview=dview;}
121 virtual void SetDproj(Double_t dproj) {fDproj=dproj;}
122 virtual void SetLatitude(Double_t latitude) {fLatitude = latitude;}
123 virtual void SetLongitude(Double_t longitude) {fLongitude = longitude;}
124 virtual void SetPsi(Double_t psi) {fPsi = psi;}
125 virtual void SetOutlineToCube();
126 virtual void SetParallel();
127 virtual void SetPerspective();
128 virtual void SetRange(
const Double_t *min,
const Double_t *max);
129 virtual void SetRange(Double_t x0, Double_t y0, Double_t z0, Double_t x1, Double_t y1, Double_t z1, Int_t flag=0);
130 virtual void SetSystem(Int_t system) {fSystem = system;}
131 virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep);
132 virtual void SetViewChanged(Bool_t flag=kTRUE) {fChanged = flag;}
133 virtual void SetWindow(Double_t u0, Double_t v0, Double_t du, Double_t dv);
134 virtual void WCtoNDC(
const Float_t *pw, Float_t *pn);
135 virtual void WCtoNDC(
const Double_t *pw, Double_t *pn);
138 virtual void MoveFocus(Double_t *center, Double_t dx, Double_t dy, Double_t dz, Int_t nsteps=10,
139 Double_t dlong=0, Double_t dlat=0, Double_t dpsi=0);
140 virtual void MoveViewCommand(Char_t chCode, Int_t count=1);
141 virtual void MoveWindow(Char_t option);
143 virtual void AdjustScales(TVirtualPad *pad=0);
144 virtual void Centered3DImages(TVirtualPad *pad=0);
145 virtual void Centered();
146 virtual void FrontView(TVirtualPad *pad=0);
147 virtual void Front();
149 virtual void ZoomIn();
150 virtual void ZoomOut();
151 virtual void ZoomView(TVirtualPad *pad=0, Double_t zoomFactor = 1.25 );
152 virtual void UnzoomView(TVirtualPad *pad=0,Double_t unZoomFactor = 1.25);
154 virtual void RotateView(Double_t phi, Double_t theta, TVirtualPad *pad=0);
155 virtual void SideView(TVirtualPad *pad=0);
157 virtual void TopView(TVirtualPad *pad=0);
160 virtual void ToggleRulers(TVirtualPad *pad=0);
161 virtual void ShowAxis();
162 virtual void ToggleZoom(TVirtualPad *pad=0);
163 virtual void ZoomMove();
165 virtual void UnZoom();
167 static void AdjustPad(TVirtualPad *pad=0);