Geant4-11
Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes
G4BoundingSphereScene Class Reference

#include <G4BoundingSphereScene.hh>

Inheritance diagram for G4BoundingSphereScene:
G4PseudoScene G4VGraphicsScene

Public Member Functions

void AccrueBoundingSphere (const G4Point3D &centre, G4double radius)
 
void AddCompound (const G4Mesh &)
 
void AddCompound (const G4THitsMap< G4double > &)
 
void AddCompound (const G4THitsMap< G4StatDouble > &)
 
void AddCompound (const G4VDigi &)
 
void AddCompound (const G4VHit &)
 
void AddCompound (const G4VTrajectory &)
 
void AddPrimitive (const G4Circle &)
 
void AddPrimitive (const G4Plotter &)
 
void AddPrimitive (const G4Polyhedron &)
 
void AddPrimitive (const G4Polyline &)
 
void AddPrimitive (const G4Polymarker &)
 
void AddPrimitive (const G4Square &)
 
void AddPrimitive (const G4Text &)
 
void AddSolid (const G4Box &solid)
 
void AddSolid (const G4Cons &solid)
 
void AddSolid (const G4Ellipsoid &solid)
 
void AddSolid (const G4Orb &solid)
 
void AddSolid (const G4Para &solid)
 
void AddSolid (const G4Polycone &solid)
 
void AddSolid (const G4Polyhedra &solid)
 
void AddSolid (const G4Sphere &solid)
 
void AddSolid (const G4TessellatedSolid &solid)
 
void AddSolid (const G4Torus &solid)
 
void AddSolid (const G4Trap &solid)
 
void AddSolid (const G4Trd &solid)
 
void AddSolid (const G4Tubs &solid)
 
void AddSolid (const G4VSolid &solid)
 
void BeginPrimitives (const G4Transform3D &)
 
void BeginPrimitives2D (const G4Transform3D &)
 
void EndPrimitives ()
 
void EndPrimitives2D ()
 
 G4BoundingSphereScene (G4VModel *pModel=0)
 
G4VisExtent GetBoundingSphereExtent ()
 
const G4Point3DGetCentre () const
 
virtual const G4VisExtentGetExtent () const
 
G4double GetRadius () const
 
void PostAddSolid ()
 
void PreAddSolid (const G4Transform3D &objectTransformation, const G4VisAttributes &)
 
void ResetBoundingSphere ()
 
void SetCentre (const G4Point3D &centre)
 
virtual ~G4BoundingSphereScene ()
 

Protected Attributes

const G4Transform3DfpCurrentObjectTransformation
 

Private Member Functions

void ProcessVolume (const G4VSolid &solid)
 

Private Attributes

G4Point3D fCentre
 
G4VModelfpModel
 
G4double fRadius
 

Detailed Description

Definition at line 40 of file G4BoundingSphereScene.hh.

Constructor & Destructor Documentation

◆ G4BoundingSphereScene()

G4BoundingSphereScene::G4BoundingSphereScene ( G4VModel pModel = 0)

Definition at line 38 of file G4BoundingSphereScene.cc.

39:fpModel(pModel)
40,fRadius(-1.)
41{}

◆ ~G4BoundingSphereScene()

G4BoundingSphereScene::~G4BoundingSphereScene ( )
virtual

Definition at line 43 of file G4BoundingSphereScene.cc.

43{}

Member Function Documentation

◆ AccrueBoundingSphere()

void G4BoundingSphereScene::AccrueBoundingSphere ( const G4Point3D centre,
G4double  radius 
)

Definition at line 70 of file G4BoundingSphereScene.cc.

72 {
73
74 if (fRadius < 0 ) { // First time.
75 fCentre = newCentre;
76 fRadius = newRadius;
77 }
78 else {
79 G4Vector3D join = newCentre - fCentre;
80 if (join == G4Vector3D (0., 0., 0.)) { // Centres coincide.
81 if (fRadius < newRadius) fRadius = newRadius;
82 }
83 else if (join.mag () + newRadius <= fRadius) { // Inside accrued sphere.
84 // Do nothing.
85 }
86 else {
87 G4Vector3D unitJoin = join.unit ();
88 G4Point3D oldExtremity1 = fCentre - fRadius * unitJoin;
89 G4Point3D newExtremity1 = newCentre - newRadius * unitJoin;
90 G4Point3D oldExtremity2 = fCentre + fRadius * unitJoin;
91 G4Point3D newExtremity2 = newCentre + newRadius * unitJoin;
92 G4Point3D extremity1;
93 if (oldExtremity1 * unitJoin < newExtremity1 * unitJoin) {
94 extremity1 = oldExtremity1;
95 }
96 else {
97 extremity1 = newExtremity1;
98 }
99 G4Point3D extremity2;
100 if (oldExtremity2 * unitJoin > newExtremity2 * unitJoin) {
101 extremity2 = oldExtremity2;
102 }
103 else {
104 extremity2 = newExtremity2;
105 }
106 fCentre = 0.5 * (extremity2 + extremity1);
107 fRadius = 0.5 * (extremity2 - extremity1).mag ();
108 }
109 }
110}
BasicVector3D< T > unit() const

References fCentre, fRadius, HepGeom::BasicVector3D< T >::mag(), and HepGeom::BasicVector3D< T >::unit().

Referenced by ProcessVolume().

◆ AddCompound() [1/6]

void G4PseudoScene::AddCompound ( const G4Mesh )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 83 of file G4PseudoScene.hh.

83{}

◆ AddCompound() [2/6]

void G4PseudoScene::AddCompound ( const G4THitsMap< G4double > &  )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 81 of file G4PseudoScene.hh.

81{}

◆ AddCompound() [3/6]

void G4PseudoScene::AddCompound ( const G4THitsMap< G4StatDouble > &  )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 82 of file G4PseudoScene.hh.

82{}

◆ AddCompound() [4/6]

void G4PseudoScene::AddCompound ( const G4VDigi )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 80 of file G4PseudoScene.hh.

80{}

◆ AddCompound() [5/6]

void G4PseudoScene::AddCompound ( const G4VHit )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 79 of file G4PseudoScene.hh.

79{}

◆ AddCompound() [6/6]

void G4PseudoScene::AddCompound ( const G4VTrajectory )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 78 of file G4PseudoScene.hh.

78{}

◆ AddPrimitive() [1/7]

void G4PseudoScene::AddPrimitive ( const G4Circle )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 91 of file G4PseudoScene.hh.

91{}

◆ AddPrimitive() [2/7]

void G4PseudoScene::AddPrimitive ( const G4Plotter )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 96 of file G4PseudoScene.hh.

96{}

◆ AddPrimitive() [3/7]

void G4PseudoScene::AddPrimitive ( const G4Polyhedron )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 94 of file G4PseudoScene.hh.

94{}

◆ AddPrimitive() [4/7]

void G4PseudoScene::AddPrimitive ( const G4Polyline )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 89 of file G4PseudoScene.hh.

89{}

◆ AddPrimitive() [5/7]

void G4PseudoScene::AddPrimitive ( const G4Polymarker )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 93 of file G4PseudoScene.hh.

93{}

◆ AddPrimitive() [6/7]

void G4PseudoScene::AddPrimitive ( const G4Square )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 92 of file G4PseudoScene.hh.

92{}

◆ AddPrimitive() [7/7]

void G4PseudoScene::AddPrimitive ( const G4Text )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 90 of file G4PseudoScene.hh.

90{}

◆ AddSolid() [1/14]

void G4PseudoScene::AddSolid ( const G4Box solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 61 of file G4PseudoScene.hh.

61{ProcessVolume (solid);}
virtual void ProcessVolume(const G4VSolid &)

References G4PseudoScene::ProcessVolume().

Referenced by G4OpenGLSceneHandler::AddCompound(), G4Qt3DSceneHandler::AddCompound(), and G4VtkSceneHandler::AddCompound().

◆ AddSolid() [2/14]

void G4PseudoScene::AddSolid ( const G4Cons solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 62 of file G4PseudoScene.hh.

62{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [3/14]

void G4PseudoScene::AddSolid ( const G4Ellipsoid solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 71 of file G4PseudoScene.hh.

71{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [4/14]

void G4PseudoScene::AddSolid ( const G4Orb solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 63 of file G4PseudoScene.hh.

63{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [5/14]

void G4PseudoScene::AddSolid ( const G4Para solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 64 of file G4PseudoScene.hh.

64{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [6/14]

void G4PseudoScene::AddSolid ( const G4Polycone solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 72 of file G4PseudoScene.hh.

72{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [7/14]

void G4PseudoScene::AddSolid ( const G4Polyhedra solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 73 of file G4PseudoScene.hh.

73{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [8/14]

void G4PseudoScene::AddSolid ( const G4Sphere solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 65 of file G4PseudoScene.hh.

65{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [9/14]

void G4PseudoScene::AddSolid ( const G4TessellatedSolid solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 74 of file G4PseudoScene.hh.

74{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [10/14]

void G4PseudoScene::AddSolid ( const G4Torus solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 66 of file G4PseudoScene.hh.

66{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [11/14]

void G4PseudoScene::AddSolid ( const G4Trap solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 67 of file G4PseudoScene.hh.

67{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [12/14]

void G4PseudoScene::AddSolid ( const G4Trd solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 68 of file G4PseudoScene.hh.

68{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [13/14]

void G4PseudoScene::AddSolid ( const G4Tubs solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 69 of file G4PseudoScene.hh.

69{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ AddSolid() [14/14]

void G4PseudoScene::AddSolid ( const G4VSolid solid)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 76 of file G4PseudoScene.hh.

76{ProcessVolume (solid);}

References G4PseudoScene::ProcessVolume().

◆ BeginPrimitives()

void G4PseudoScene::BeginPrimitives ( const G4Transform3D )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 85 of file G4PseudoScene.hh.

85{}

◆ BeginPrimitives2D()

void G4PseudoScene::BeginPrimitives2D ( const G4Transform3D )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 87 of file G4PseudoScene.hh.

87{}

◆ EndPrimitives()

void G4PseudoScene::EndPrimitives ( )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 86 of file G4PseudoScene.hh.

86{}

◆ EndPrimitives2D()

void G4PseudoScene::EndPrimitives2D ( )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 88 of file G4PseudoScene.hh.

88{}

◆ GetBoundingSphereExtent()

G4VisExtent G4BoundingSphereScene::GetBoundingSphereExtent ( )

Definition at line 45 of file G4BoundingSphereScene.cc.

45 {
46 return G4VisExtent (fCentre, fRadius);
47}

References fCentre, and fRadius.

◆ GetCentre()

const G4Point3D & G4BoundingSphereScene::GetCentre ( ) const
inline

Definition at line 50 of file G4BoundingSphereScene.hh.

50{return fCentre;}

References fCentre.

◆ GetExtent()

const G4VisExtent & G4VGraphicsScene::GetExtent ( ) const
virtualinherited

Reimplemented in G4VSceneHandler, and G4BoundingExtentScene.

Definition at line 37 of file G4VGraphicsScene.cc.

38{
39 static const G4VisExtent defaultExtent = G4VisExtent();
40 return defaultExtent;
41}

Referenced by G4VFieldModel::DescribeYourselfTo().

◆ GetRadius()

G4double G4BoundingSphereScene::GetRadius ( ) const
inline

Definition at line 52 of file G4BoundingSphereScene.hh.

52{return fRadius;}

References fRadius.

◆ PostAddSolid()

void G4PseudoScene::PostAddSolid ( )
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 59 of file G4PseudoScene.hh.

59{}

◆ PreAddSolid()

void G4PseudoScene::PreAddSolid ( const G4Transform3D objectTransformation,
const G4VisAttributes  
)
inlinevirtualinherited

Implements G4VGraphicsScene.

Definition at line 56 of file G4PseudoScene.hh.

58 {fpCurrentObjectTransformation = &objectTransformation;}
const G4Transform3D * fpCurrentObjectTransformation

References G4PseudoScene::fpCurrentObjectTransformation.

◆ ProcessVolume()

void G4BoundingSphereScene::ProcessVolume ( const G4VSolid solid)
privatevirtual

Reimplemented from G4PseudoScene.

Definition at line 49 of file G4BoundingSphereScene.cc.

50{
51 const G4VisExtent& newExtent = solid.GetExtent ();
52 G4Point3D newCentre = newExtent.GetExtentCentre ();
54 newCentre.transform (*fpCurrentObjectTransformation);
55 }
56 const G4double newRadius = newExtent.GetExtentRadius ();
57 AccrueBoundingSphere (newCentre, newRadius);
58
59 // Curtail descent - can assume daughters are contained within mother...
61 if (pPVM) pPVM->CurtailDescent();
62}
double G4double
Definition: G4Types.hh:83
void AccrueBoundingSphere(const G4Point3D &centre, G4double radius)
virtual G4VisExtent GetExtent() const
Definition: G4VSolid.cc:682
G4double GetExtentRadius() const
Definition: G4VisExtent.cc:75
const G4Point3D & GetExtentCentre() const
Definition: G4VisExtent.cc:65

References AccrueBoundingSphere(), G4PhysicalVolumeModel::CurtailDescent(), G4PseudoScene::fpCurrentObjectTransformation, fpModel, G4VSolid::GetExtent(), G4VisExtent::GetExtentCentre(), and G4VisExtent::GetExtentRadius().

◆ ResetBoundingSphere()

void G4BoundingSphereScene::ResetBoundingSphere ( )

Definition at line 64 of file G4BoundingSphereScene.cc.

64 {
65 fCentre = G4Point3D ();
66 fRadius = -1.;
68}
HepGeom::Point3D< G4double > G4Point3D
Definition: G4Point3D.hh:34

References fCentre, G4PseudoScene::fpCurrentObjectTransformation, and fRadius.

◆ SetCentre()

void G4BoundingSphereScene::SetCentre ( const G4Point3D centre)
inline

Definition at line 54 of file G4BoundingSphereScene.hh.

54{fCentre = centre;}

References fCentre.

Field Documentation

◆ fCentre

G4Point3D G4BoundingSphereScene::fCentre
private

◆ fpCurrentObjectTransformation

const G4Transform3D* G4PseudoScene::fpCurrentObjectTransformation
protectedinherited

◆ fpModel

G4VModel* G4BoundingSphereScene::fpModel
private

Definition at line 69 of file G4BoundingSphereScene.hh.

Referenced by ProcessVolume().

◆ fRadius

G4double G4BoundingSphereScene::fRadius
private

The documentation for this class was generated from the following files: