library: libRGL
#include "TGLBoundingBox.h"

TGLBoundingBox


class description - header file - source file - inheritance tree (.pdf)

class TGLBoundingBox

Inheritance Chart:
TGLBoundingBox
    private:
Double_t Max(UInt_t index) const Double_t Min(UInt_t index) const void UpdateCache() Bool_t ValidIndex(UInt_t index) const public:
TGLBoundingBox() TGLBoundingBox(const TGLVertex3* vertex) TGLBoundingBox(const Double_t** vertex) TGLBoundingBox(const TGLVertex3& lowVertex, const TGLVertex3& highVertex) TGLBoundingBox(const TGLBoundingBox& other) virtual ~TGLBoundingBox() const TGLVector3& Axis(UInt_t i, Bool_t normalised = kTRUE) const TGLVertex3 Center() const static TClass* Class() void Draw(Bool_t solid = kFALSE) const void Dump() const TGLVector3 Extents() const const vector<UInt_t>& FaceVertices(TGLBoundingBox::EFace face) const virtual TClass* IsA() const Bool_t IsEmpty() const TGLBoundingBox& operator=(const TGLBoundingBox& other) const TGLVertex3& operator[](UInt_t index) const EOverlap Overlap(const TGLPlane& plane) const EOverlap Overlap(const TGLBoundingBox& box) const void PlaneSet(TGLPlaneSet_t& planeSet) const void Scale(Double_t factor) void Scale(Double_t xFactor, Double_t yFactor, Double_t zFactor) void Set(const TGLVertex3* vertex) void Set(const Double_t** vertex) void Set(const TGLBoundingBox& other) void SetAligned(const TGLVertex3& lowVertex, const TGLVertex3& highVertex) void SetAligned(UInt_t nbPnts, const Double_t* pnts) void SetEmpty() virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) void Transform(const TGLMatrix& matrix) void Translate(const TGLVector3& offset) const TGLVertex3& Vertex(UInt_t index) const const vector<TGLVertex3>& Vertices() const Double_t Volume() const Double_t XMax() const Double_t XMin() const Double_t YMax() const Double_t YMin() const Double_t ZMax() const Double_t ZMin() const

Data Members

    private:
vector<TGLVertex3> fVertex ! the 8 bounding box vertices Double_t fVolume ! box volume - cached for speed TGLVector3 fAxes[3] ! box axes in global frame - cached for speed TGLVector3 fAxesNorm[3] ! normalised box axes in global frame - cached for speed public:
static const TGLBoundingBox::EFace kFaceLowX static const TGLBoundingBox::EFace kFaceHighX static const TGLBoundingBox::EFace kFaceLowY static const TGLBoundingBox::EFace kFaceHighY static const TGLBoundingBox::EFace kFaceLowZ static const TGLBoundingBox::EFace kFaceHighZ static const TGLBoundingBox::EFace kFaceCount

Class Description

                                                                      
 TGLBoundingBox                                                       
                                                                      
 Concrete class describing an orientated (free) or axis aligned box   
 of 8 verticies. Supports methods for setting aligned or orientated   
 boxes, find volume, axes, extents, centers, face planes etc.         
 Also tests for overlap testing of planes and other bounding boxes,   
 with fast sphere approximation.                                      

TGLBoundingBox()
 Construct an empty bounding box
TGLBoundingBox(const TGLVertex3 vertex[8])
 Construct a bounding box from provided 8 vertices
TGLBoundingBox(const Double_t vertex[8][3])
 Construct a bounding box from provided 8 vertices
TGLBoundingBox(const TGLVertex3 & lowVertex, const TGLVertex3 & highVertex)
 Construct an global axis ALIGNED bounding box from provided low/high vertex pair
TGLBoundingBox(const TGLBoundingBox & other)
 Construct a bounding box as copy of existing one
~TGLBoundingBox()
 Destroy bounding box
void UpdateCache()
 Update the internally cached volume and axes vectors - these are retained
 for efficiency - many more reads than modifications
void Set(const TGLVertex3 vertex[8])
 Set a bounding box from provided 8 vertices
void Set(const Double_t vertex[8][3])
 Set a bounding box from provided 8 vertices
void Set(const TGLBoundingBox & other)
 Set a bounding box from vertices of other
void SetEmpty()
 Set bounding box empty - all vertices at (0,0,0)
void SetAligned(const TGLVertex3 & lowVertex, const TGLVertex3 & highVertex)
 Set ALIGNED box from two low/high vertices. Box axes are aligned with
 global frame axes that vertices are specified in.
void SetAligned(UInt_t nbPnts, const Double_t * pnts)
 Set ALIGNED box from one or more points. Box axes are aligned with
 global frame axes that points are specified in.
void Scale(Double_t factor)
 Isotropically scale bounding box along it's LOCAL axes, preserving center
void Scale(Double_t xFactor, Double_t yFactor, Double_t zFactor)
 Asymetrically scale box along it's LOCAL x,y,z axes, preserving center
void Translate(const TGLVector3 & offset)
 Translate all vertices by offset
void Transform(const TGLMatrix & matrix)
 Transform all vertices with matrix
const std::vector<UInt_t> & FaceVertices(EFace face)
return a vector of face vertices
    y
    |
    |
    |________x
   /  3-------2
  /  /|      /|
 z  7-------6 |
    | 0-----|-1
    |/      |
    4-------5

void PlaneSet(TGLPlaneSet_t & planeSet)
 Fill out supplied plane set vector with TGLPlane objects
 representing six faces of box
EOverlap Overlap(const TGLPlane & plane)
 Find overlap (Inside, Outside, Partial) of plane c.f. bounding box
EOverlap Overlap(const TGLBoundingBox & other)
 Find overlap (Inside, Outside, Partial) of other bounding box c.f. us
void Draw(Bool_t solid)
 Draw the bounding box as either wireframe (default) of solid using current GL color
Double_t Min(UInt_t index)
 Find minimum vertex value for axis of index X(0), Y(1), Z(2)
Double_t Max(UInt_t index)
 Find maximum vertex value for axis of index X(0), Y(1), Z(2)
void Dump()
 Output to std::cout the vertices, center and volume of box
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
Bool_t ValidIndex(UInt_t index)
const TGLVertex3 & Vertex(UInt_t index)
Double_t XMin()
Double_t XMax()
Double_t YMin()
Double_t YMax()
Double_t ZMin()
Double_t ZMax()
const std::vector<TGLVertex3> & Vertices()
 Multiple vertices accessors
TGLVertex3 Center()
 Other properties
TGLVector3 Extents()
const TGLVector3 & Axis(UInt_t i, Bool_t normalised = kTRUE)
Bool_t IsEmpty()
Double_t Volume()

Author: Richard Maunder 25/05/2005
Last update: root/gl:$Name: $:$Id: TGLBoundingBox.cxx,v 1.19 2006/05/26 09:12:37 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.