Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
triangles.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_graphics
3/// \notebook
4/// Generate small triangles randomly in the canvas.
5/// Each triangle has a unique id and a random color in the color palette
6///
7/// ~~~{.cpp}
8/// root > .x triangles.C
9/// ~~~
10///
11/// Then click on any triangle. A message showing the triangle number
12/// and its color will be printed.
13///
14/// \macro_image
15/// \macro_code
16///
17/// \author Rene Brun
18
19void triangles(Int_t ntriangles=50)
20{
21 TCanvas *c1 = new TCanvas("c1","triangles",10,10,700,700);
22 TRandom r;
23 Double_t dx = 0.2; Double_t dy = 0.2;
24 Int_t ncolors = gStyle->GetNumberOfColors();
25 Double_t x[4],y[4];
26 for (Int_t i=0;i<ntriangles;i++) {
27 x[0] = r.Uniform(.05,.95); y[0] = r.Uniform(.05,.95);
28 x[1] = x[0] + dx*r.Rndm(); y[1] = y[0] + dy*r.Rndm();
29 x[2] = x[1] - dx*r.Rndm(); y[2] = y[1] - dy*r.Rndm();
30 x[3] = x[0]; y[3] = y[0];
31 TPolyLine *pl = new TPolyLine(4,x,y);
32 pl->SetUniqueID(i);
33 Int_t ci = ncolors*r.Rndm();
35 c->SetAlpha(r.Rndm());
36 pl->SetFillColor(ci);
37 pl->Draw("f");
38 }
39 c1->AddExec("ex","TriangleClicked()");
40}
41
42void TriangleClicked()
43{
44 //this action function is called whenever you move the mouse
45 //it just prints the id of the picked triangle
46 //you can add graphics actions instead
47 int event = gPad->GetEvent();
48 if (event != 11) return; //may be comment this line
49 TObject *select = gPad->GetSelected();
50 if (!select) return;
51 if (select->InheritsFrom(TPolyLine::Class())) {
52 TPolyLine *pl = (TPolyLine*)select;
53 printf("You have clicked triangle %d, color=%d\n",
54 pl->GetUniqueID(),pl->GetFillColor());
55 }
56}
#define c(i)
Definition RSha256.hxx:101
int Int_t
Definition RtypesCore.h:45
double Double_t
Definition RtypesCore.h:59
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
#define gROOT
Definition TROOT.h:406
R__EXTERN TStyle * gStyle
Definition TStyle.h:433
#define gPad
virtual Color_t GetFillColor() const
Return the fill area color.
Definition TAttFill.h:30
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition TAttFill.h:37
The Canvas class.
Definition TCanvas.h:23
The color creation and management class.
Definition TColor.h:21
static Int_t GetColorPalette(Int_t i)
Static function returning the color number i in current palette.
Definition TColor.cxx:1455
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
Definition TColor.cxx:1839
Mother of all ROOT objects.
Definition TObject.h:41
virtual UInt_t GetUniqueID() const
Return the unique object id.
Definition TObject.cxx:457
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition TObject.cxx:525
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
Definition TObject.cxx:791
Defined by an array on N points in a 2-D space.
Definition TPolyLine.h:23
void Draw(Option_t *option="") override
Draw this polyline with its current attributes.
static TClass * Class()
This is the base class for the ROOT Random number generators.
Definition TRandom.h:27
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
Definition TStyle.cxx:1171
Double_t y[n]
Definition legend1.C:17
return c1
Definition legend1.C:41
Double_t x[n]
Definition legend1.C:17