Logo ROOT   6.16/01
Reference Guide
TEveArrowGL.cxx
Go to the documentation of this file.
1// @(#)root/eve:$Id$
2// Author: Matevz Tadel 2007
3
4/*************************************************************************
5 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#include "TEveArrowGL.h"
13#include "TEveArrow.h"
14
15#include "TGLRnrCtx.h"
16#include "TGLIncludes.h"
17#include "TGLUtil.h"
18#include "TGLQuadric.h"
19
20/** \class TEveArrowGL
21\ingroup TEve
22OpenGL renderer class for TEveArrow.
23*/
24
26
27////////////////////////////////////////////////////////////////////////////////
28/// Constructor.
29
31 TGLObject(), fM(0)
32{
33}
34
35/******************************************************************************/
36
37////////////////////////////////////////////////////////////////////////////////
38/// Set model object.
39
41{
42 fM = SetModelDynCast<TEveArrow>(obj);
43 return kTRUE;
44}
45
46////////////////////////////////////////////////////////////////////////////////
47/// Set bounding box.
48
50{
51 // !! This ok if master sub-classed from TAttBBox
52 SetAxisAlignedBBox(((TEveArrow*)fExternalObj)->AssertBBox());
53}
54
55/******************************************************************************/
56
57////////////////////////////////////////////////////////////////////////////////
58/// Render with OpenGL.
59
60void TEveArrowGL::DirectDraw(TGLRnrCtx& /*rnrCtx*/) const
61{
62 static TGLQuadric quad;
63
64 glPushMatrix();
65
68 TGLMatrix local(uo, uv);
69 glMultMatrixd(local.CArr());
70 Float_t size = fM->fVector.Mag();
71
72 // Line (tube) component
73 Float_t r = size*fM->fTubeR;
74 Float_t h = size*fM->fConeL;
75 gluCylinder(quad.Get(), r, r, size - h, fM->fDrawQuality, 1);
76 gluQuadricOrientation(quad.Get(), (GLenum)GLU_INSIDE);
77 gluDisk(quad.Get(), 0.0, r, fM->fDrawQuality, 1);
78
79 // Arrow cone
80 r = size*fM->fConeR;
81 glTranslated(0.0, 0.0, size - h);
82 gluDisk(quad.Get(), 0.0, r, fM->fDrawQuality, 1);
83 gluQuadricOrientation(quad.Get(), (GLenum)GLU_OUTSIDE);
84 gluCylinder(quad.Get(), r, 0., h , fM->fDrawQuality, 1);
85
86 glPopMatrix();
87}
ROOT::R::TRInterface & r
Definition: Object.C:4
#define h(i)
Definition: RSha256.hxx:106
bool Bool_t
Definition: RtypesCore.h:59
float Float_t
Definition: RtypesCore.h:53
const Bool_t kTRUE
Definition: RtypesCore.h:87
const char Option_t
Definition: RtypesCore.h:62
#define ClassImp(name)
Definition: Rtypes.h:363
OpenGL renderer class for TEveArrow.
Definition: TEveArrowGL.h:22
virtual Bool_t SetModel(TObject *obj, const Option_t *opt=0)
Set model object.
Definition: TEveArrowGL.cxx:40
TEveArrow * fM
Definition: TEveArrowGL.h:28
virtual void SetBBox()
Set bounding box.
Definition: TEveArrowGL.cxx:49
virtual void DirectDraw(TGLRnrCtx &rnrCtx) const
Render with OpenGL.
Definition: TEveArrowGL.cxx:60
TEveArrowGL()
Constructor.
Definition: TEveArrowGL.cxx:30
Class used for display of a thick arrow.
Definition: TEveArrow.h:25
Float_t fConeR
Definition: TEveArrow.h:37
TEveVector fOrigin
Definition: TEveArrow.h:40
Float_t fTubeR
Definition: TEveArrow.h:36
TEveVector fVector
Definition: TEveArrow.h:41
Float_t fConeL
Definition: TEveArrow.h:38
Int_t fDrawQuality
Definition: TEveArrow.h:43
TT Mag() const
Definition: TEveVector.h:95
TObject * fExternalObj
first replica
16 component (4x4) transform matrix - column MAJOR as per GL.
Definition: TGLUtil.h:597
const Double_t * CArr() const
Definition: TGLUtil.h:663
Base-class for direct OpenGL renderers.
Definition: TGLObject.h:22
void SetAxisAlignedBBox(Float_t xmin, Float_t xmax, Float_t ymin, Float_t ymax, Float_t zmin, Float_t zmax)
Set axis-aligned bounding-box.
Definition: TGLObject.cxx:86
Wrapper class for GLU quadric shape drawing object.
Definition: TGLQuadric.h:28
GLUquadric * Get()
Get the internal raw GLU quadric object. Created on first call.
Definition: TGLQuadric.cxx:44
The TGLRnrCtx class aggregates data for a given redering context as needed by various parts of the RO...
Definition: TGLRnrCtx.h:41
3 component (x/y/z) vector class.
Definition: TGLUtil.h:247
3 component (x/y/z) vertex class.
Definition: TGLUtil.h:83
Mother of all ROOT objects.
Definition: TObject.h:37