Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
glrose.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_gl
3 /// Render a TF2 looking like a rose.
4 ///
5 /// It defines and set a user's palette, and use polar system.
6 ///
7 /// \macro_image(nobatch)
8 /// \macro_code
9 ///
10 /// \author Timur Pocheptsov
11 
12 void glrose()
13 {
14  const Int_t paletteSize = 10;
15  Float_t rgb[paletteSize * 3] =
16  {0.80f, 0.55f, 0.40f,
17  0.85f, 0.60f, 0.45f,
18  0.90f, 0.65f, 0.50f,
19  0.95f, 0.70f, 0.55f,
20  1.f, 0.75f, 0.60f,
21  1.f, 0.80f, 0.65f,
22  1.f, 0.85f, 0.70f,
23  1.f, 0.90f, 0.75f,
24  1.f, 0.95f, 0.80f,
25  1.f, 1.f, 0.85f};
26 
27  Int_t palette[paletteSize] = {0};
28 
29  for (Int_t i = 0; i < paletteSize; ++i)
30  palette[i] = TColor::GetColor(rgb[i * 3], rgb[i * 3 + 1], rgb[i * 3 + 2]);
31 
32  gStyle->SetPalette(paletteSize, palette);
33 
34  gStyle->SetCanvasPreferGL(1);
35  TCanvas *cnv = new TCanvas("glc", "Surface sample", 200, 10, 600, 550);
36 
37  TPaveLabel *title = new TPaveLabel(0.04, 0.86, 0.96, 0.98,
38  "\"glsurf2pol\" option + user defined palette.");
39  title->SetFillColor(32);
40  title->Draw();
41 
42  TPad *rosePad = new TPad("box", "box", 0.04, 0.04, 0.96, 0.8);
43  rosePad->Draw();
44 
45 
46  TF2 *fun = new TF2("a", "cos(y)*sin(x)+cos(x)*sin(y)", -6, 6, -6, 6);
47  fun->SetContour(paletteSize);
48  fun->SetNpx(30);
49  fun->SetNpy(30);
50  rosePad->cd();
51  fun->Draw("glsurf2pol");
52 }