ROOT logo

From $ROOTSYS/tutorials/eve/hierarchical_scene.C

const Int_t Ns = 7;

void add_blobs(TEveElement* p, Float_t rad, Float_t height, Float_t size,
	       Int_t level)
{
  if (level <= 0) return;

  for (Int_t i = 0; i < Ns; ++i)
  {
    TEveGeoShape* x = new TEveGeoShape("SS");
    x->SetShape(new TGeoSphere(0, size));
    Double_t phi = TMath::TwoPi() * i / Ns;
    x->RefMainTrans().SetPos(rad*TMath::Cos(phi),
			     rad*TMath::Sin(phi),
			     height);
    x->SetMainColor(TColor::GetColorPalette
                    (gRandom->Integer(TColor::GetNumberOfColors())));
    p->AddElement(x);

    add_blobs(x, 0.8 * rad, 0.8 * height, 0.8 * size, level - 1);
  }
}

void hierarchical_scene()
{
  TEveManager::Create();

  TColor::SetPalette(1, 0);
  gRandom = new TRandom3(0);

  TEveScene *s = gEve->SpawnNewScene("Hierachical Scene", "OoogaDooga");
  s->SetHierarchical(kTRUE);

  gEve->GetDefaultViewer()->AddScene(s);

  add_blobs(s, 6, 4, 0.5, 4);

  gEve->Redraw3D(kTRUE);
}
 hierarchical_scene.C:1
 hierarchical_scene.C:2
 hierarchical_scene.C:3
 hierarchical_scene.C:4
 hierarchical_scene.C:5
 hierarchical_scene.C:6
 hierarchical_scene.C:7
 hierarchical_scene.C:8
 hierarchical_scene.C:9
 hierarchical_scene.C:10
 hierarchical_scene.C:11
 hierarchical_scene.C:12
 hierarchical_scene.C:13
 hierarchical_scene.C:14
 hierarchical_scene.C:15
 hierarchical_scene.C:16
 hierarchical_scene.C:17
 hierarchical_scene.C:18
 hierarchical_scene.C:19
 hierarchical_scene.C:20
 hierarchical_scene.C:21
 hierarchical_scene.C:22
 hierarchical_scene.C:23
 hierarchical_scene.C:24
 hierarchical_scene.C:25
 hierarchical_scene.C:26
 hierarchical_scene.C:27
 hierarchical_scene.C:28
 hierarchical_scene.C:29
 hierarchical_scene.C:30
 hierarchical_scene.C:31
 hierarchical_scene.C:32
 hierarchical_scene.C:33
 hierarchical_scene.C:34
 hierarchical_scene.C:35
 hierarchical_scene.C:36
 hierarchical_scene.C:37
 hierarchical_scene.C:38
 hierarchical_scene.C:39
 hierarchical_scene.C:40
thumb