ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
triangles.C File Reference

Generate small triangles randomly in the canvas. More...

Go to the source code of this file.

Detailed Description

Generate small triangles randomly in the canvas.

Each triangle has a unique id and a random color in the color palette

root > .x triangles.C

Then click on any triangle. A message showing the triangle number and its color will be printed.

pict1_triangles.C.png
void triangles(Int_t ntriangles=50) {
TCanvas *c1 = new TCanvas("c1","triangles",10,10,700,700);
Double_t dx = 0.2; Double_t dy = 0.2;
Double_t x[4],y[4];
Int_t ci;
for (Int_t i=0;i<ntriangles;i++) {
x[0] = r.Uniform(.05,.95); y[0] = r.Uniform(.05,.95);
x[1] = x[0] + dx*r.Rndm(); y[1] = y[0] + dy*r.Rndm();
x[2] = x[1] - dx*r.Rndm(); y[2] = y[1] - dy*r.Rndm();
x[3] = x[0]; y[3] = y[0];
TPolyLine *pl = new TPolyLine(4,x,y);
pl->SetUniqueID(i);
ci = ncolors*r.Rndm();
c = gROOT->GetColor(TColor::GetColorPalette(ci));
c->SetAlpha(r.Rndm());
pl->SetFillColor(ci);
pl->Draw("f");
}
c1->AddExec("ex","TriangleClicked()");
}
void TriangleClicked() {
//this action function is called whenever you move the mouse
//it just prints the id of the picked triangle
//you can add graphics actions instead
int event = gPad->GetEvent();
if (event != 11) return; //may be comment this line
TObject *select = gPad->GetSelected();
if (!select) return;
if (select->InheritsFrom(TPolyLine::Class())) {
TPolyLine *pl = (TPolyLine*)select;
printf("You have clicked triangle %d, color=%d\n",
pl->GetUniqueID(),pl->GetFillColor());
}
}
Author
Rene Brun

Definition in file triangles.C.