Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
tornado.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_graphics
3/// \notebook
4/// \preview Show 3-d polymarker.
5///
6/// \macro_image
7/// \macro_code
8///
9/// \author Rene Brun
10
11void tornado()
12{
13 gBenchmark->Start("tornado");
14
15 double PI = 3.141592653;
16 int d = 16;
17 int numberOfPoints = 200;
18 int numberOfCircles = 40;
19
20 // create and open a canvas
21 TCanvas *sky = new TCanvas("sky", "Tornado", 300, 10, 700, 500);
22 sky->SetFillColor(14);
23
24 // creating view
25 TView *view = TView::CreateView(1, 0, 0);
26 float range = numberOfCircles * d;
27 view->SetRange(0, 0, 0, 4.0 * range, 2.0 * range, range);
28
29 for (int j = d; j < numberOfCircles * d; j += d) {
30
31 // create a PolyMarker3D
32 TPolyMarker3D *pm3d = new TPolyMarker3D(numberOfPoints);
33
34 float x, y, z;
35
36 // set points
37 for (int i = 1; i < numberOfPoints; i++) {
38 float csin = sin(2 * PI / (double)numberOfPoints * (double)i) + 1;
39 float ccos = cos(2 * PI / (double)numberOfPoints * (double)i) + 1;
40 float esin = sin(2 * PI / (double)(numberOfCircles * d) * (double)j) + 1;
41 x = j * (csin + esin);
42 y = j * ccos;
43 z = j;
44 pm3d->SetPoint(i, x, y, z);
45 }
46
47 // set marker size, color & style
48 pm3d->SetMarkerSize(1);
49 pm3d->SetMarkerColor(2 + (d == (j & d)));
50 pm3d->SetMarkerStyle(3);
51
52 // draw
53 pm3d->Draw();
54 }
55
56 gBenchmark->Show("tornado");
57
58 Float_t ct = gBenchmark->GetCpuTime("tornado");
59
60 TPaveText *text = new TPaveText(0.1, 0.81, 0.9, 0.97);
61 text->SetFillColor(42);
62 text->AddText("ROOT example: tornado.C");
63 text->AddText(Form("Execution time: %g sec.", ct));
64 text->Draw();
65 sky->Update();
66}
#define d(i)
Definition RSha256.hxx:102
float Float_t
Float 4 bytes (float).
Definition RtypesCore.h:71
#define PI
externTBenchmark * gBenchmark
Definition TBenchmark.h:59
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
Definition TString.cxx:2496
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition TAttFill.h:40
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
Definition TAttMarker.h:41
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
Definition TAttMarker.h:43
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Definition TAttMarker.h:48
The Canvas class.
Definition TCanvas.h:23
void Update() override
Update canvas pad buffers.
Definition TCanvas.cxx:2486
A 3D polymarker.
void SetPoint(Int_t n, Double_t x, Double_t y, Double_t z)
Set point n to x, y, z.
void Draw(Option_t *option="") override
Draws 3-D polymarker with its current attributes.
See TView3D.
Definition TView.h:25
static TView * CreateView(Int_t system=1, const Double_t *rmin=nullptr, const Double_t *rmax=nullptr)
Create a concrete default 3-d view via the plug-in manager.
Definition TView.cxx:26
virtual void SetRange(const Double_t *min, const Double_t *max)=0
TText * text
RVec< PromoteType< T > > cos(const RVec< T > &v)
Definition RVec.hxx:1848
RVec< PromoteType< T > > sin(const RVec< T > &v)
Definition RVec.hxx:1847
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17