Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
glparametrics2.C File Reference

Detailed Description

Show rendering of parametric surfaces.

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):
    • Call gStyle->SetCanvasPreferGL(kTRUE)
    • Or create canvas with name, wich contains "gl".
  2. create TGLParametricEquation object.
    "some FORMULA here - x(u, v)",
    "some FORMULA here - y(u, v)",
    "some FORMULA here - z(u, v)",
    uMin, uMax, vMin, vMax);
    A parametric surface is a surface defined by a parametric equation, involving two parameters (u,...
    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'.
void klein_bottle(TGLVertex3 &dst, Double_t u, Double_t v)
{
using namespace TMath;
const Double_t r = 4. * (1. - Cos(u) / 2.);
if (u < Pi()) {
dst.X() = 6 * Cos(u) * (1. + Sin(u)) + r * Cos(u) * Cos(v);
dst.Y() = 16 * Sin(u) + r * Sin(u) * Cos(v);
} else {
dst.X() = 6 * Cos(u) * (1. + Sin(u)) + r * Cos(v + Pi());
dst.Y() = 16 * Sin(u);
}
dst.Z() = r * Sin(v);
}
void glparametrics2()
{
gStyle->SetCanvasPreferGL(kTRUE);
TCanvas *c = new TCanvas("canvas", "Parametric surfaces with gl", 100, 10, 700, 700);
c->Divide(2, 2);
c->cd(1);
new TGLParametricEquation("Shell", "1.2 ^ v * sin(u) ^ 2 * sin(v)", "1.2 ^ v * sin(u) * cos(u)",
"1.2 ^ v * sin(u) ^ 2 * cos(v)", 0., TMath::Pi(), // 0 <= u <= pi
-TMath::Pi() / 4., 5 * TMath::Pi() / 2.); // -pi/4 <= v <= 5*pi/2
p1->Draw("");
c->cd(2);
new TGLParametricEquation("Limpet torus", "cos(u) / (sqrt(2) + sin(v))", "sin(u) / (sqrt(2) + sin(v))",
"1. / (sqrt(2) + cos(v))", -TMath::Pi(), TMath::Pi(), -TMath::Pi(), TMath::Pi());
p2->Draw();
c->cd(3);
new TGLParametricEquation("Klein bottle", klein_bottle, 0., TMath::TwoPi(), 0., TMath::TwoPi());
p3->Draw();
c->cd(4);
TGLParametricEquation *p4 = new TGLParametricEquation("Helicoid", "v * cos(u)", "v * sin(u)", "u", -3., 3., -3., 3.);
p4->Draw();
}
ROOT::R::TRInterface & r
Definition Object.C:4
#define c(i)
Definition RSha256.hxx:101
double Double_t
Double 8 bytes.
Definition RtypesCore.h:73
constexpr Bool_t kTRUE
Definition RtypesCore.h:107
externTStyle * gStyle
Definition TStyle.h:442
The Canvas class.
Definition TCanvas.h:23
3 component (x/y/z) vertex class.
Definition TGLUtil.h:84
Double_t X() const
Definition TGLUtil.h:119
Double_t Z() const
Definition TGLUtil.h:123
Double_t Y() const
Definition TGLUtil.h:121
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
Definition TObject.cxx:293
TMath.
Definition TMathBase.h:35
Double_t Cos(Double_t)
Returns the cosine of an angle of x radians.
Definition TMath.h:605
constexpr Double_t Pi()
Definition TMath.h:40
Double_t Sin(Double_t)
Returns the sine of an angle of x radians.
Definition TMath.h:599
constexpr Double_t TwoPi()
Definition TMath.h:47
Author
Timur Pocheptsov

Definition in file glparametrics2.C.