Paul Nord wrote:
>
> Forgive a new user if this is a silly question...
> How do I make it redraw a 3D object?
>
> I'd like to create several buttons for "standard" detector views. These
> buttons would then bring the rotation of the display to the end view, the top
> view, or the size view.
>
> I can c1->GetView()->SetLatitude(0);
> But then c1->Draw(); doesn't change anything. However c1->x3d(); Will then
> view with the new rotation setting. And if you then quit x3d, the canvas will
> display in the new rotation.
>
> Thanks,
> Paul Nord
I suggest you look into the ATLFast example at URL:
http://root.cern.ch/root/Atlfast.html
You can download the source code and look in the class ATLFDisplay.
http://root.cern.ch/root/html/atlfast/src/ATLFDisplay.cxx.html
An example of event with buttons producing a front/top/side/all view
is available at
http://root.cern.ch/Pictures.html
The function below is extracted from ATLFDisplay. It is called
to set the viewing angles:
void ATLFDisplay::DrawView(Float_t theta, Float_t phi)
{
// Draw a view of ATLAS
gPad->SetFillColor(1);
// Display ATLAS outline
gPad->Clear();
Int_t iret;
TView *view = new TView(1);
view->SetRange(-m_Rin, -m_Rin, -m_Zin, m_Rin, m_Rin, m_Zin);
m_Nodin->Draw("same");
// add itself to the list
AppendPad();
//Loop on all makers to add their products to the pad
TIter next(gATLFast->Makers());
ATLFMaker *maker;
while ((maker = (ATLFMaker*)next())) {
maker->Draw();
}
view->SetView(phi, theta, 0, iret);
}
Rene Brun
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:33 MET