15 TGLViewer::ECameraType camera;
24 static Double_t fov = 30;
25 static Double_t zoom = 0.78;
26 static Double_t dolly = 1500.0;
27 static Double_t center[3] = {-164.0, -164.0, -180.0};
28 static Double_t hRotate = 0.0;
29 static Double_t vRotate = 0.0;
31 static Double_t fovStep = randGen.Rndm()*3.0 - 0.5;
32 static Double_t zoomStep = (20 - randGen.Rndm())/1000.;
33 static Double_t dollyStep = randGen.Rndm()*5.0 - 1.0;
34 static Double_t centerStep[3] = {randGen.Rndm()*4, randGen.Rndm()*4,
36 static Double_t hRotateStep = randGen.Rndm()*0.025;
37 static Double_t vRotateStep = randGen.Rndm()*0.05;
40 center[0] += centerStep[0];
41 center[1] += centerStep[1];
42 center[2] += centerStep[2];
43 Double_t mag = TMath::Sqrt(center[0]*center[0] + center[1]*center[1] +
47 centerStep[0] = -centerStep[0];
48 centerStep[1] = -centerStep[1];
49 centerStep[2] = -centerStep[2];
53 hRotate += hRotateStep;
54 vRotate += vRotateStep;
55 if (vRotate >= TMath::TwoPi() || vRotate <= 0.0)
56 vRotateStep = -vRotateStep;
58 if (hRotate >= (TMath::PiOver2()- 0.02f) ||
59 hRotate <= (0.07f -TMath::PiOver2())) {
60 hRotateStep = -hRotateStep;
65 if (dolly >= 2000.0 || dolly <= 1500.0)
66 dollyStep = -dollyStep;
69 TGLViewer * v = (TGLViewer *)gPad->GetViewer3D();
73 if (fov > 130.0 || fov < 5.0)
74 fovStep = - fovStep; }
78 if (zoom > 4.0 || zoom < 0.25)
79 zoomStep = - zoomStep;
84 v->SetPerspectiveCamera(camera, fov, dollyStep, center, hRotateStep,
87 v->SetOrthoCamera(camera, zoom, dollyStep, center, hRotateStep,
90 if (++moveCount % 10 == 0)
91 v->RefreshPadEditor(v);
94 void glViewerExercise()
96 gROOT->ProcessLine(
".x nucleus.C");
97 TGLViewer * v = (TGLViewer *)gPad->GetViewer3D();
100 Int_t style = randGen.Integer(3);
103 case 0: v->SetStyle(TGLRnrCtx::kFill);
break;
104 case 1: v->SetStyle(TGLRnrCtx::kOutline);
break;
105 case 2: v->SetStyle(TGLRnrCtx::kWireFrame);
break;
109 TGLLightSet* ls = v->GetLightSet();
110 if (randGen.Integer(2) == 0)
111 ls->SetLight(TGLLightSet::kLightLeft, kFALSE);
112 if (randGen.Integer(2) == 0)
113 ls->SetLight(TGLLightSet::kLightRight, kFALSE);
114 if (randGen.Integer(2) == 0)
115 ls->SetLight(TGLLightSet::kLightTop, kFALSE);
116 if (randGen.Integer(2) == 0)
117 ls->SetLight(TGLLightSet::kLightBottom, kFALSE);
120 Int_t
id = randGen.Integer(6);
121 camera = (TGLViewer::ECameraType)
id;
122 v->SetCurrentCamera(camera);
123 v->CurrentCamera().SetExternalCenter(kTRUE);
126 TGLOrthoCamera& o =
static_cast<TGLOrthoCamera &
>(v->CurrentCamera());
127 o.SetEnableRotate(kTRUE);
131 TGLSAViewer* sav =
dynamic_cast<TGLSAViewer*
>(v);
133 sav->GetFrame()->Connect(
"CloseWindow()",
"TTimer", &timer,
"TurnOff()");
134 timer.SetCommand(
"AnimateCamera()");