15#include "TGLIncludes.h" 
   59   p[0][0] = 0;  
p[0][1] = dy; 
p[0][2] = 0;
 
   60   p[1][0] = dx; 
p[1][1] = dy; 
p[1][2] = 0;
 
   61   p[2][0] = dx; 
p[2][1] = 0;  
p[2][2] = 0;
 
   62   p[3][0] = 0;  
p[3][1] = 0;  
p[3][2] = 0;
 
   64   p[4][0] = 0;  
p[4][1] = dy; 
p[4][2] = dz;
 
   65   p[5][0] = dx; 
p[5][1] = dy; 
p[5][2] = dz;
 
   66   p[6][0] = dx; 
p[6][1] = 0;  
p[6][2] = dz;
 
   67   p[7][0] = 0;  
p[7][1] = 0;  
p[7][2] = dz;
 
   78   glVertex3fv(
p[0]);  glVertex3fv(
p[1]);
 
   79   glVertex3fv(
p[2]);  glVertex3fv(
p[3]);
 
   82   glVertex3fv(
p[7]); glVertex3fv(
p[6]);
 
   83   glVertex3fv(
p[5]); glVertex3fv(
p[4]);
 
   86   glVertex3fv(
p[0]); glVertex3fv(
p[4]);
 
   87   glVertex3fv(
p[5]); glVertex3fv(
p[1]);
 
   90   glVertex3fv(
p[3]);  glVertex3fv(
p[2]);
 
   91   glVertex3fv(
p[6]);  glVertex3fv(
p[7]);
 
   94   glVertex3fv(
p[0]);  glVertex3fv(
p[3]);
 
   95   glVertex3fv(
p[7]);  glVertex3fv(
p[4]);
 
   98   glVertex3fv(
p[1]);  glVertex3fv(
p[5]);
 
   99   glVertex3fv(
p[6]);  glVertex3fv(
p[2]);
 
  111      Float_t d = sqrtf(o[0]*o[0] + o[1]*o[1] + o[2]*o[2]);
 
  127   subtract_and_normalize(
p[1], 
p[0], 
e[0]);
 
  128   subtract_and_normalize(
p[3], 
p[0], 
e[1]);
 
  129   subtract_and_normalize(
p[4], 
p[0], 
e[2]);
 
  130   subtract_and_normalize(
p[5], 
p[6], 
e[3]);
 
  131   subtract_and_normalize(
p[7], 
p[6], 
e[4]);
 
  132   subtract_and_normalize(
p[2], 
p[6], 
e[5]);
 
  136   glVertex3fv(
p[0]); glVertex3fv(
p[1]);
 
  137   glVertex3fv(
p[2]); glVertex3fv(
p[3]);
 
  140   glVertex3fv(
p[7]); glVertex3fv(
p[6]);
 
  141   glVertex3fv(
p[5]); glVertex3fv(
p[4]);
 
  144   glVertex3fv(
p[0]); glVertex3fv(
p[4]);
 
  145   glVertex3fv(
p[5]); glVertex3fv(
p[1]);
 
  148   glVertex3fv(
p[3]); glVertex3fv(
p[2]);
 
  149   glVertex3fv(
p[6]); glVertex3fv(
p[7]);
 
  152   glVertex3fv(
p[0]); glVertex3fv(
p[3]);
 
  153   glVertex3fv(
p[7]); glVertex3fv(
p[4]);
 
  156   glVertex3fv(
p[1]); glVertex3fv(
p[5]);
 
  157   glVertex3fv(
p[6]); glVertex3fv(
p[2]);
 
  177      glNewList(
fBoxDL, GL_COMPILE);
 
  194         gluCylinder(quad.
Get(), 0, 1, 1, nt, 1);
 
  199            glTranslatef(0, 0, 1);
 
  200            gluDisk(quad.
Get(), 0, 1, nt, 1);
 
  208         gluCylinder(quad.
Get(), 1, 1, 1, nt, 1);
 
  211         gluDisk(quad.
Get(), 0, 1, nt, 1);
 
  215         glTranslatef(0, 0, 1);
 
  216         gluDisk(quad.
Get(), 0, 1, nt, 1);
 
  266   fM = SetModelDynCast<TEveBoxSet>(obj);
 
  313               glBegin(primitiveType);
 
  317                  AntiFlick(0.5f*(
b.fVertices[0][0] + 
b.fVertices[6][0]),
 
  318                            0.5f*(
b.fVertices[0][1] + 
b.fVertices[6][1]),
 
  319                            0.5f*(
b.fVertices[0][2] + 
b.fVertices[6][2]));
 
  321            if (boxSkip) { 
Int_t s = boxSkip; 
while (s--) bi.
next(); }
 
  328         glEnable(GL_NORMALIZE);
 
  336               glTranslatef(
b.fA, 
b.fB, 
b.fC);
 
  337               glScalef    (
b.fW, 
b.fH, 
b.fD);
 
  340                  AntiFlick(0.5f, 0.5f, 0.5f);
 
  343            if (boxSkip) { 
Int_t s = boxSkip; 
while (s--) bi.
next(); }
 
  356               glTranslatef(
b.fA, 
b.fB, 
b.fC);
 
  360               glTranslatef(-
b.fA, -
b.fB, -
b.fC);
 
  362            if (boxSkip) { 
Int_t s = boxSkip; 
while (s--) bi.
next(); }
 
  369         using namespace TMath;
 
  371         glEnable(GL_NORMALIZE);
 
  380               phi   = ATan2(
b.fDir.fY, 
b.fDir.fX)*RadToDeg();
 
  381               theta = ATan (
b.fDir.fZ / Sqrt(
b.fDir.fX*
b.fDir.fX + 
b.fDir.fY*
b.fDir.fY))*RadToDeg();
 
  383               glTranslatef(
b.fPos.fX, 
b.fPos.fY, 
b.fPos.fZ);
 
  384               glRotatef(phi,        0, 0, 1);
 
  385               glRotatef(90 - theta, 0, 1, 0);
 
  386               glScalef (
b.fR, 
b.fR, 
h);
 
  389                  AntiFlick(0.0f, 0.0f, 0.5f);
 
  392            if (boxSkip) { 
Int_t s = boxSkip; 
while (s--) bi.
next(); }
 
  399         using namespace TMath;
 
  401         glEnable(GL_NORMALIZE);
 
  410               phi   = ATan2(
b.fDir.fY, 
b.fDir.fX)*RadToDeg();
 
  411               theta = ATan (
b.fDir.fZ / Sqrt(
b.fDir.fX*
b.fDir.fX + 
b.fDir.fY*
b.fDir.fY))*RadToDeg();
 
  413               glTranslatef(
b.fPos.fX, 
b.fPos.fY, 
b.fPos.fZ);
 
  414               glRotatef(phi,        0, 0, 1);
 
  415               glRotatef(90 - theta, 0, 1, 0);
 
  416               glRotatef(
b.fAngle,   0, 0, 1);
 
  417               glScalef (
b.fR, 
b.fR2, 
h);
 
  420                  AntiFlick(0.0f, 0.0f, 0.5f);
 
  423            if (boxSkip) { 
Int_t s = boxSkip; 
while (s--) bi.
next(); }
 
  430         using namespace TMath;
 
  432         glEnable(GL_NORMALIZE);
 
  440               glTranslatef(
h.fPos.fX, 
h.fPos.fY, 
h.fPos.fZ);
 
  441               glRotatef(
h.fAngle, 0, 0, 1);
 
  442               glScalef (
h.fR, 
h.fR, 
h.fDepth);
 
  445                  AntiFlick(0.0f, 0.0f, 0.5f);
 
  448            if (boxSkip) { 
Int_t s = boxSkip; 
while (s--) bi.
next(); }
 
  455         throw eH + 
"unsupported box-type.";
 
  481      glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT);
 
  486            glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 
  488            glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 
  494         glDisable(GL_CULL_FACE);
 
winID h TVirtualViewer3D TVirtualGLPainter p
A GL rendering class for TEveBoxSet.
TEveBoxSetGL()
Default constructor.
Bool_t SetModel(TObject *obj, const Option_t *opt=nullptr) override
Set model object.
void MakeDisplayList() const
Create a display-list for rendering a single box, based on the current box-type.
void DLCacheDrop() override
Called when display lists have been destroyed externally and the internal display-list data needs to ...
void RenderBoxAutoNorm(const Float_t p[8][3]) const
Render box, calculate normals on the fly from first three points.
virtual void Render(TGLRnrCtx &rnrCtx)
Interface for direct rendering from classes that include TEveBoxSet as a member.
void RenderBoxes(TGLRnrCtx &rnrCtx) const
GL rendering for all box-types.
void DLCachePurge() override
Called when display-lists need to be returned to the system.
~TEveBoxSetGL() override
Destructor.
Int_t PrimitiveType() const
Return GL primitive used to render the boxes, based on the render-mode specified in the model object.
void MakeOriginBox(Float_t p[8][3], Float_t dx, Float_t dy, Float_t dz) const
Fill array p to represent a box (0,0,0) - (dx,dy,dz).
Bool_t ShouldDLCache(const TGLRnrCtx &rnrCtx) const override
Determines if display-list will be used for rendering.
void DirectDraw(TGLRnrCtx &rnrCtx) const override
Actual rendering code.
void RenderBoxStdNorm(const Float_t p[8][3]) const
Render a box specified by points in array p with standard axis-aligned normals.
Collection of 3D primitives (fixed-size boxes, boxes of different sizes, or arbitrary sexto-epipeds,...
OpenGL renderer class for TEveDigitSet.
const std::set< Int_t > * fHighlightSet
void DrawFrameIfNeeded(TGLRnrCtx &rnrCtx) const
Make a decision if the frame should be drawn.
Bool_t SetupColor(const TEveDigitSet::DigitBase_t &q) const
Set color for rendering of the specified digit.
TEveRGBAPalette * fPalette
TEveRGBAPalette * AssertPalette()
Make sure the TEveRGBAPalette pointer is not null.
ERenderMode_e fRenderMode
Exception class thrown by TEve classes and macros.
virtual void DLCachePurge()
Purge all entries for all LODs for this drawable from the display list cache, returning the reserved ...
virtual Bool_t ShouldDLCache(const TGLRnrCtx &rnrCtx) const
Returns kTRUE if draws should be display list cached kFALSE otherwise.
virtual void DLCacheDrop()
Drop all entries for all LODs for this drawable from the display list cache, WITHOUT returning the re...
void PurgeDLRange(UInt_t base, Int_t size) const
External object is a fake.
Bool_t fDLCache
display-list validity bit-field
Wrapper class for GLU quadric shape drawing object.
GLUquadric * Get()
Get the internal raw GLU quadric object. Created on first call.
The TGLRnrCtx class aggregates data for a given redering context as needed by various parts of the RO...
Bool_t SecSelection() const
Bool_t IsDrawPassOutlineLine() const
static Int_t CheckError(const char *loc)
Check current GL error state, outputting details via ROOT Error method if one.
Mother of all ROOT objects.
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
T * Cross(const T v1[3], const T v2[3], T out[3])
Calculates the Cross Product of two vectors: out = [v1 x v2].
Bool_t next()
Go to next atom.
const std::set< Int_t > * fSelection