23 void Arc(
int n,
double a,
double r,
double *px,
double *py);
24 void AddFibonacciBin(TH2Poly *h2pf,
double N);
26 void Fibonacci(
int N=7) {
29 TCanvas *C =
new TCanvas(
"C",
"C", 800, 600);
30 C->SetFrameLineWidth(0);
32 TH2Poly *h2pf =
new TH2Poly();
33 h2pf->SetTitle(Form(
"The first %d Fibonacci numbers",N));
34 h2pf->SetMarkerColor(kRed-2);
41 AddFibonacciBin(h2pf, f1);
43 for (
int i=0; i<=N; i++) {
47 AddFibonacciBin(h2pf, f1);
50 h2pf->Draw(
"A COL L TEXT");
53 void Arc(
int n,
double a,
double r,
double *px,
double *py) {
56 double da = TMath::Pi()/(2*(n-2));
58 for (
int i = 2; i<=n-2; i++) {
60 px[i] = r*TMath::Cos(a) + px[0];
61 py[i] = r*TMath::Sin(a) + py[0];
65 void AddFibonacciBin(TH2Poly *h2pf,
double N) {
73 static int MoveId = 0;
84 double pi2 = TMath::Pi()/2;
99 Arc(NP,3*pi2,(
double)N,px,py);
114 Arc(NP,0.,(
double)N,px,py);
129 Arc(NP,pi2,(
double)N,px,py);
144 Arc(NP,2*pi2,(
double)N,px,py);
148 if (MoveId==0) h2pf->AddBin(X1,Y1,X2,Y2);
149 else h2pf->AddBin(NP, px ,py);
151 h2pf->Fill((X1+X2)/2.5, (Y1+Y2)/2.5, N);
154 if (MoveId==5) MoveId=1;