33 void klein_bottle(TGLVertex3 &dst, Double_t u, Double_t v)
35 using namespace TMath;
37 const Double_t r = 4. * (1. - Cos(u) / 2.);
39 dst.X() = 6 * Cos(u) * (1. + Sin(u)) + r * Cos(u) * Cos(v);
40 dst.Y() = 16 * Sin(u) + r * Sin(u) * Cos(v);
42 dst.X() = 6 * Cos(u) * (1. + Sin(u)) + r * Cos(v + Pi());
43 dst.Y() = 16 * Sin(u);
50 gStyle->SetCanvasPreferGL(kTRUE);
51 TCanvas *c =
new TCanvas(
"canvas",
"Parametric surfaces with gl", 100, 10, 700, 700);
55 TGLParametricEquation *p1 =
new TGLParametricEquation(
"Shell",
56 "1.2 ^ v * sin(u) ^ 2 * sin(v)",
57 "1.2 ^ v * sin(u) * cos(u)",
58 "1.2 ^ v * sin(u) ^ 2 * cos(v)",
60 -TMath::Pi() / 4., 5 * TMath::Pi() / 2.);
64 TGLParametricEquation *p2 =
new TGLParametricEquation(
"Limpet torus",
65 "cos(u) / (sqrt(2) + sin(v))",
66 "sin(u) / (sqrt(2) + sin(v))",
67 "1. / (sqrt(2) + cos(v))",
68 -TMath::Pi(), TMath::Pi(),
69 -TMath::Pi(), TMath::Pi());
73 TGLParametricEquation *p3 =
new TGLParametricEquation(
"Klein bottle",
80 TGLParametricEquation *p4 =
new TGLParametricEquation(
"Helicoid",