oblate_prolate

// Show rendering of parametric surfaces.
// Author: Timur Pocheptsov
void oblate_prolate()
{
   // A parametric surface is defined by three functions:
   // S(u, v) : {x(u, v), y(u, v), z(u, v)}.
   // To create parametric surface and draw it one has to:
   //  1. Create canvas, which support OpenGL drawing (two ways):
   //     a. Call gStyle->SetCanvasPreferGL(kTRUE)
   //     b. Or create canvas with name, wich contains "gl".
   //  2. create TGLParametricEquation object.
   //     TGLParametricEquation *eq = new TGLParametricEquation("name",
   //     "some FORMULA here - x(u, v)",
   //     "some FORMULA here - y(u, v)",
   //     "some FORMULA here - z(u, v)",
   //     uMin, uMax, vMin, vMax);
   //     where FORMULA is the same string (mathematical expression),
   //     as in TF2, but you should use 'u' (or 'U') instead of 'x'
   //     and 'v' (or 'V') instead of 'y'.
   //  3. Call equation->Draw();
   //     Parametric surfaces support 21 color "schemes", you can change
   //     the color:
   //     -place mouse cursor above surface (surface is selected in pad)
   //     -press 's' or 'S'.
   gStyle->SetCanvasPreferGL(kTRUE);
   TCanvas *c = new TCanvas("canvas","Parametric surfaces with gl", 100, 10,
                            700, 700);
   c->SetFillColor(42);
   gStyle->SetFrameFillColor(42);
   
   TGLParametricEquation *p3 = new TGLParametricEquation("ob_pr",
                                        "(1+0.6*sqrt(5/(16*pi))*(3*cos(u)*cos(u)-1))*sin(u)*cos(v)",
                                        "(1+0.6*sqrt(5/(16*pi))*(3*cos(u)*cos(u)-1))*sin(u)*sin(v)",
                                        "(1+0.6*sqrt(5/(16*pi))*(3*cos(u)*cos(u)-1))*cos(u)",
                                        0, TMath::Pi(), 0, TMath::TwoPi());
   p3->SetConstrained(1);
      p3->Draw();
      
//   TEveManager::Create();
//   TEvePlot3D *x = new TEvePlot3D("test");
//   x->SetPlot(p3,"");
//  gEve->AddElement(x);
//  TEveArrow *ozz = new TEveArrow(1., 0., 0., 0, 0., 0.);
//  ozz->SetMainColor(kRed);
//  gEve->AddElement(ozz);
//  TEveArrow *zoz = new TEveArrow(0., 1., 0., 0, 0., 0.);
//  zoz->SetMainColor(kGreen);
//  gEve->AddElement(zoz);
//  TEveArrow *zzo = new TEveArrow(0., 0., 1., 0, 0., 0.);
//  zzo->SetMainColor(kBlue);
//  x->RefMainTrans().Scale(0.8, 0.8, 1.2);
//  gEve->AddElement(zzo);
//  gEve->Redraw3D(kTRUE);
//  gEve->GetDefaultGLViewer()->RequestDraw();
}