Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
shapesAnim.C File Reference

Detailed Description

Macro illustrating how to animate a geometry picture using a Timer.

Float_t theta = 0;
Float_t phi = 30;
void shapesAnim()
{
TCanvas *c1 = new TCanvas("c1", "Geometry Shapes", 10, 10, 500, 500);
// Define some volumes
TBRIK *brik = new TBRIK("BRIK", "BRIK", "void", 200, 150, 150);
TTRD1 *trd1 = new TTRD1("TRD1", "TRD1", "void", 200, 50, 100, 100);
TTRD2 *trd2 = new TTRD2("TRD2", "TRD2", "void", 200, 50, 200, 50, 100);
TTRAP *trap = new TTRAP("TRAP", "TRAP", "void", 190, 0, 0, 60, 40, 90, 15, 120, 80, 180, 15);
TPARA *para = new TPARA("PARA", "PARA", "void", 100, 200, 200, 15, 30, 30);
TGTRA *gtra = new TGTRA("GTRA", "GTRA", "void", 390, 0, 0, 20, 60, 40, 90, 15, 120, 80, 180, 15);
TTUBE *tube = new TTUBE("TUBE", "TUBE", "void", 150, 200, 400);
TTUBS *tubs = new TTUBS("TUBS", "TUBS", "void", 80, 100, 100, 90, 235);
TCONE *cone = new TCONE("CONE", "CONE", "void", 100, 50, 70, 120, 150);
TCONS *cons = new TCONS("CONS", "CONS", "void", 50, 100, 100, 200, 300, 90, 270);
TSPHE *sphe = new TSPHE("SPHE", "SPHE", "void", 25, 340, 45, 135, 0, 270);
TSPHE *sphe1 = new TSPHE("SPHE1", "SPHE1", "void", 0, 140, 0, 180, 0, 360);
TSPHE *sphe2 = new TSPHE("SPHE2", "SPHE2", "void", 0, 200, 10, 120, 45, 145);
TPCON *pcon = new TPCON("PCON", "PCON", "void", 180, 270, 4);
pcon->DefineSection(0, -200, 50, 100);
pcon->DefineSection(1, -50, 50, 80);
pcon->DefineSection(2, 50, 50, 80);
pcon->DefineSection(3, 200, 50, 100);
TPGON *pgon = new TPGON("PGON", "PGON", "void", 180, 270, 8, 4);
pgon->DefineSection(0, -200, 50, 100);
pgon->DefineSection(1, -50, 50, 80);
pgon->DefineSection(2, 50, 50, 80);
pgon->DefineSection(3, 200, 50, 100);
// Set shapes attributes
brik->SetLineColor(1);
trd1->SetLineColor(2);
trd2->SetLineColor(3);
trap->SetLineColor(4);
para->SetLineColor(5);
gtra->SetLineColor(7);
tube->SetLineColor(6);
tubs->SetLineColor(7);
cone->SetLineColor(2);
cons->SetLineColor(3);
pcon->SetLineColor(6);
pgon->SetLineColor(2);
// Build the geometry hierarchy
TNode *node1 = new TNode("NODE1", "NODE1", "BRIK");
node1->cd();
TNode *node2 = new TNode("NODE2", "NODE2", "TRD1", 0, 0, -1000);
TNode *node3 = new TNode("NODE3", "NODE3", "TRD2", 0, 0, 1000);
TNode *node4 = new TNode("NODE4", "NODE4", "TRAP", 0, -1000, 0);
TNode *node5 = new TNode("NODE5", "NODE5", "PARA", 0, 1000, 0);
TNode *node6 = new TNode("NODE6", "NODE6", "TUBE", -1000, 0, 0);
TNode *node7 = new TNode("NODE7", "NODE7", "TUBS", 1000, 0, 0);
TNode *node8 = new TNode("NODE8", "NODE8", "CONE", -300, -300, 0);
TNode *node9 = new TNode("NODE9", "NODE9", "CONS", 300, 300, 0);
TNode *node10 = new TNode("NODE10", "NODE10", "PCON", 0, -1000, -1000);
TNode *node11 = new TNode("NODE11", "NODE11", "PGON", 0, 1000, 1000);
TNode *node12 = new TNode("NODE12", "NODE12", "GTRA", 0, -400, 700);
TNode *node13 = new TNode("NODE13", "NODE13", "SPHE", 10, -400, 500);
TNode *node14 = new TNode("NODE14", "NODE14", "SPHE1", 10, 250, 300);
TNode *node15 = new TNode("NODE15", "NODE15", "SPHE2", 10, -100, -200);
// Draw this geometry in the current canvas
node1->cd();
node1->Draw();
c1->Update();
// start a Timer
TTimer *timer = new TTimer(20);
timer->SetCommand("Animate()");
timer->TurnOn();
}
void Animate()
{
theta += 2;
phi += 2;
gPad->GetView()->RotateView(theta, phi);
gPad->Modified();
gPad->Update();
}
float Float_t
Definition RtypesCore.h:57
double Double_t
Definition RtypesCore.h:59
@ kRed
Definition Rtypes.h:66
@ kBlack
Definition Rtypes.h:65
@ kBlue
Definition Rtypes.h:66
#define gPad
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition TAttLine.h:40
A box with faces perpendicular to the axes.
Definition TBRIK.h:26
A conical tube.
Definition TCONE.h:28
A segment of a conical tube.
Definition TCONS.h:27
The Canvas class.
Definition TCanvas.h:23
A general twisted trapezoid.
Definition TGTRA.h:27
TNode description.
Definition TNode.h:33
void Draw(Option_t *option="") override
Draw Referenced node with current parameters.
Definition TNode.cxx:322
virtual void cd(const char *path=nullptr)
Change Current Reference node to this.
Definition TNode.cxx:249
A parallelepiped.
Definition TPARA.h:30
A polycone.
Definition TPCON.h:33
virtual void DefineSection(Int_t secNum, Float_t z, Float_t rmin, Float_t rmax)
Defines section secNum of the polycone.
Definition TPCON.cxx:174
A polygon.
Definition TPGON.h:30
A Sphere.
Definition TSPHE.h:28
A general trapezoid.
Definition TTRAP.h:33
A trapezoid with the x dimension varying along z.
Definition TTRD1.h:28
A trapezoid with both x and y dimensions varying along z.
Definition TTRD2.h:29
A tube.
Definition TTUBE.h:32
A segment of a tube.
Definition TTUBS.h:29
Handles synchronous and a-synchronous timer events.
Definition TTimer.h:51
virtual void TurnOn()
Add the timer to the system timer list.
Definition TTimer.cxx:243
void SetCommand(const char *command)
Set the interpreter command to be executed at time out.
Definition TTimer.cxx:176
return c1
Definition legend1.C:41
Author
Rene Brun

Definition in file shapesAnim.C.