12 #ifndef ROOT_TGLParametric
13 #define ROOT_TGLParametric
33 typedef void (*ParametricEquation_t)(TGLVertex3 &, Double_t u, Double_t v);
35 class TGLParametricEquation :
public TNamed {
37 typedef std::unique_ptr<TF2> Ptr_t;
43 ParametricEquation_t fEquation;
51 typedef std::unique_ptr<TGLHistPainter> Painter_t;
57 TGLParametricEquation(
const TString &name,
const TString &xEquation,
58 const TString &yEquation,
const TString &zEquation,
59 Double_t uMin, Double_t uMax,
60 Double_t vMin, Double_t vMax);
61 TGLParametricEquation(
const TString &name, ParametricEquation_t equation,
62 Double_t uMin, Double_t uMax, Double_t vMin, Double_t vMax);
64 Rgl::Range_t GetURange()
const;
65 Rgl::Range_t GetVRange()
const;
67 Bool_t IsConstrained()
const;
68 void SetConstrained(Bool_t c);
70 Bool_t IsModified()
const;
71 void SetModified(Bool_t m);
73 void EvalVertex(TGLVertex3 &newVertex, Double_t u, Double_t v)
const;
75 Int_t DistancetoPrimitive(Int_t px, Int_t py);
76 void ExecuteEvent(Int_t event, Int_t px, Int_t py);
77 char *GetObjectInfo(Int_t px, Int_t py)
const;
78 void Paint(Option_t *option);
82 TGLParametricEquation(
const TGLParametricEquation &);
83 TGLParametricEquation &operator = (
const TGLParametricEquation &);
85 ClassDef(TGLParametricEquation, 0)
88 class TGLParametricPlot :
public TGLPlotPainter {
96 enum EMeshSize {kLow = 30, kHigh = 150};
99 TGL2DArray<Vertex_t> fMesh;
104 TGLParametricEquation *fEquation;
106 TAxis fCartesianXAxis;
107 TAxis fCartesianYAxis;
108 TAxis fCartesianZAxis;
110 TGLPlotCoordinates fCartesianCoord;
113 TGLParametricPlot(TGLParametricEquation *equation, TGLPlotCamera *camera);
115 Bool_t InitGeometry();
116 void StartPan(Int_t px, Int_t py);
117 void Pan(Int_t px, Int_t py);
118 char *GetPlotInfo(Int_t px, Int_t py);
119 void AddOption(
const TString &option);
120 void ProcessEvent(Int_t event, Int_t px, Int_t py);
124 void DeInitGL()
const;
126 void DrawPlot()
const;
130 void DrawSectionXOZ()
const;
131 void DrawSectionYOZ()
const;
132 void DrawSectionXOY()
const;
134 void SetSurfaceColor()
const;
136 TGLParametricPlot(
const TGLParametricPlot &);
137 TGLParametricPlot &operator = (
const TGLParametricPlot &);
139 ClassDef(TGLParametricPlot, 0)