Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VisExtent.hh
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 // $Id: G4VisExtent.hh 66376 2012-12-18 09:42:59Z gcosmo $
28 //
29 //
30 // A.Walkden 28/11/95
31 
32 // Class Description:
33 // G4VisExtent defines a bounding box in a visualisable object's local
34 // coordinate system which includes the object.
35 // WARNING: it also attempts to support the concept of a bounding
36 // sphere. (This is used extensively in the G4 Visualisation System
37 // to calculate camera parameters, etc.) Be aware that this involves
38 // loss of information. Given a bounding box, one can calculate the
39 // bounding sphere; inverting this will produce a cube which *might*
40 // *not* include the object. E.g., a long thin object of length l
41 // will have a bounding sphere of diameter l; the corresponding cube
42 // will have side l/std::sqrt(3) so that the bounding sphere diameter is
43 // still l. Thus the long thin object will stick out of the cube.
44 // So, if you once use the concept of bounding sphere you must stick
45 // with it and abandon the concept of bounding box.
46 // Class Description - End:
47 
48 #ifndef G4VISEXTENT_HH
49 #define G4VISEXTENT_HH
50 
51 #include "globals.hh"
52 #include "G4Point3D.hh"
53 
55 {
56 public: // With description
57 
58  G4VisExtent (G4double xmin = 0., G4double xmax = 0.,
59  G4double ymin = 0., G4double ymax = 0.,
60  G4double zmin = 0., G4double zmax = 0.);
61  G4VisExtent (const G4Point3D& centre, G4double radius);
62  ~G4VisExtent ();
63  G4bool operator != (const G4VisExtent& e) const;
64  G4double GetXmin () const;
65  G4double GetXmax () const;
66  G4double GetYmin () const;
67  G4double GetYmax () const;
68  G4double GetZmin () const;
69  G4double GetZmax () const;
70  const G4Point3D& GetExtentCentre () const;
71  const G4Point3D& GetExtentCenter () const;
72  G4double GetExtentRadius () const;
73  void SetXmin (G4double xmin);
74  void SetXmax (G4double xmax);
75  void SetYmin (G4double ymin);
76  void SetYmax (G4double ymax);
77  void SetZmin (G4double zmin);
78  void SetZmax (G4double zmax);
79  friend std::ostream& operator << (std::ostream& os, const G4VisExtent& e);
80  static const G4VisExtent NullExtent;
81 
82 private:
83  G4double fXmin, fXmax, fYmin, fYmax, fZmin, fZmax;
84  mutable G4bool fRadiusCached, fCentreCached;
85  mutable G4double fRadius;
86  mutable G4Point3D fCentre;
87 };
88 
89 inline G4double G4VisExtent::GetXmin () const { return fXmin; }
90 inline G4double G4VisExtent::GetXmax () const { return fXmax; }
91 inline G4double G4VisExtent::GetYmin () const { return fYmin; }
92 inline G4double G4VisExtent::GetYmax () const { return fYmax; }
93 inline G4double G4VisExtent::GetZmin () const { return fZmin; }
94 inline G4double G4VisExtent::GetZmax () const { return fZmax; }
95 
96 inline const G4Point3D& G4VisExtent::GetExtentCenter () const {
97  return GetExtentCentre ();
98 }
99 
100 inline void G4VisExtent::SetXmin (G4double xmin)
101 {fXmin = xmin; fRadiusCached = false; fCentreCached = false;}
102 inline void G4VisExtent::SetXmax (G4double xmax)
103 {fXmax = xmax; fRadiusCached = false; fCentreCached = false;}
104 inline void G4VisExtent::SetYmin (G4double ymin)
105 {fYmin = ymin; fRadiusCached = false; fCentreCached = false;}
106 inline void G4VisExtent::SetYmax (G4double ymax)
107 {fYmax = ymax; fRadiusCached = false; fCentreCached = false;}
108 inline void G4VisExtent::SetZmin (G4double zmin)
109 {fZmin = zmin; fRadiusCached = false; fCentreCached = false;}
110 inline void G4VisExtent::SetZmax (G4double zmax)
111 {fZmax = zmax; fRadiusCached = false; fCentreCached = false;}
112 
113 #endif
static const G4VisExtent NullExtent
Definition: G4VisExtent.hh:80
G4double GetXmin() const
Definition: G4VisExtent.hh:89
G4double GetXmax() const
Definition: G4VisExtent.hh:90
void SetXmax(G4double xmax)
Definition: G4VisExtent.hh:102
const G4Point3D & GetExtentCentre() const
Definition: G4VisExtent.cc:63
friend std::ostream & operator<<(std::ostream &os, const G4VisExtent &e)
Definition: G4VisExtent.cc:83
void SetYmax(G4double ymax)
Definition: G4VisExtent.hh:106
G4bool operator!=(const G4VisExtent &e) const
Definition: G4VisExtent.cc:91
G4double GetExtentRadius() const
Definition: G4VisExtent.cc:73
G4double GetYmax() const
Definition: G4VisExtent.hh:92
bool G4bool
Definition: G4Types.hh:79
G4double GetZmax() const
Definition: G4VisExtent.hh:94
void SetZmin(G4double zmin)
Definition: G4VisExtent.hh:108
G4double GetZmin() const
Definition: G4VisExtent.hh:93
G4double GetYmin() const
Definition: G4VisExtent.hh:91
void SetZmax(G4double zmax)
Definition: G4VisExtent.hh:110
void SetXmin(G4double xmin)
Definition: G4VisExtent.hh:100
double G4double
Definition: G4Types.hh:76
void SetYmin(G4double ymin)
Definition: G4VisExtent.hh:104
const G4Point3D & GetExtentCenter() const
Definition: G4VisExtent.hh:96
G4VisExtent(G4double xmin=0., G4double xmax=0., G4double ymin=0., G4double ymax=0., G4double zmin=0., G4double zmax=0.)
Definition: G4VisExtent.cc:40