Geant4-11
|
#include <HepPolyhedron.h>
Static Public Member Functions | |
static G4int | GetNumberOfRotationSteps () |
static void | ResetNumberOfRotationSteps () |
static void | SetNumberOfRotationSteps (G4int n) |
Protected Member Functions | |
void | AllocateMemory (G4int Nvert, G4int Nface) |
G4bool | CheckSnip (const std::vector< G4TwoVector > &contour, G4int a, G4int b, G4int c, G4int n, const G4int *V) |
void | CreatePrism () |
G4int | FindNeighbour (G4int iFace, G4int iNode, G4int iOrder) const |
G4Normal3D | FindNodeNormal (G4int iFace, G4int iNode) const |
void | InvertFacets () |
void | RotateAroundZ (G4int nstep, G4double phi, G4double dphi, G4int np1, G4int np2, const G4double *z, G4double *r, G4int nodeVis, G4int edgeVis) |
void | RotateContourAroundZ (G4int nstep, G4double phi, G4double dphi, const std::vector< G4TwoVector > &rz, G4int nodeVis, G4int edgeVis) |
void | RotateEdge (G4int k1, G4int k2, G4double r1, G4double r2, G4int v1, G4int v2, G4int vEdge, G4bool ifWholeCircle, G4int ns, G4int &kface) |
void | SetReferences () |
void | SetSideFacets (G4int ii[4], G4int vv[4], G4int *kk, G4double *r, G4double dphi, G4int ns, G4int &kface) |
G4bool | TriangulatePolygon (const std::vector< G4TwoVector > &polygon, std::vector< G4int > &result) |
Protected Attributes | |
G4int | nface |
G4int | nvert |
G4Facet * | pF |
G4Point3D * | pV |
Static Protected Attributes | |
static G4ThreadLocal G4int | fNumberOfRotationSteps = DEFAULT_NUMBER_OF_STEPS |
Friends | |
std::ostream & | operator<< (std::ostream &, const HepPolyhedron &ph) |
Definition at line 213 of file HepPolyhedron.h.
|
inline |
Definition at line 272 of file HepPolyhedron.h.
HepPolyhedron::HepPolyhedron | ( | const HepPolyhedron & | from | ) |
Definition at line 111 of file HepPolyhedron.cc.
References AllocateMemory(), nface, nvert, pF, and pV.
HepPolyhedron::HepPolyhedron | ( | HepPolyhedron && | from | ) |
Definition at line 125 of file HepPolyhedron.cc.
|
inlinevirtual |
HepPolyhedron HepPolyhedron::add | ( | const HepPolyhedron & | p | ) | const |
Definition at line 2788 of file HepPolyhedron.cc.
References processor.
Definition at line 296 of file HepPolyhedron.cc.
References nface, nvert, pF, and pV.
Referenced by createPolyhedron(), createTwistedTrap(), G4PolyhedronArbitrary::G4PolyhedronArbitrary(), HepPolyhedron(), HepPolyhedronTet::HepPolyhedronTet(), HepPolyhedronTrap::HepPolyhedronTrap(), HepPolyhedronTrd2::HepPolyhedronTrd2(), operator=(), RotateAroundZ(), and RotateContourAroundZ().
|
protected |
Definition at line 985 of file HepPolyhedron.cc.
References kCarTolerance, G4INCL::Math::max(), G4INCL::Math::min(), and CLHEP::detail::n.
Referenced by TriangulatePolygon().
G4int HepPolyhedron::createPolyhedron | ( | G4int | Nnodes, |
G4int | Nfaces, | ||
const G4double | xyz[][3], | ||
const G4int | faces[][4] | ||
) |
Creates user defined polyhedron. This function allows to the user to define arbitrary polyhedron. The faces of the polyhedron should be either triangles or planar quadrilateral. Nodes of a face are defined by indexes pointing to the elements in the xyz array. Numeration of the elements in the array starts from 1 (like in fortran). The indexes can be positive or negative. Negative sign means that the corresponding edge is invisible. The normal of the face should be directed to exterior of the polyhedron.
Nnodes | number of nodes |
Nfaces | number of faces |
xyz | nodes |
faces | faces (quadrilaterals or triangles) |
Definition at line 1737 of file HepPolyhedron.cc.
References AllocateMemory(), nvert, pF, pV, and SetReferences().
Referenced by G4CutTubs::CreatePolyhedron(), G4Tet::CreatePolyhedron(), G4TwistedTubs::CreatePolyhedron(), and G4VTwistedFaceted::CreatePolyhedron().
|
protected |
Definition at line 322 of file HepPolyhedron.cc.
References pF.
Referenced by HepPolyhedronTrap::HepPolyhedronTrap(), and HepPolyhedronTrd2::HepPolyhedronTrd2().
G4int HepPolyhedron::createTwistedTrap | ( | G4double | Dz, |
const G4double | xy1[][2], | ||
const G4double | xy2[][2] | ||
) |
Creates polyhedron for twisted trapezoid. The trapezoid is given by two bases perpendicular to the z-axis.
Dz | half length in z |
xy1 | 1st base (at z = -Dz) |
xy2 | 2nd base (at z = +Dz) |
Definition at line 1668 of file HepPolyhedron.cc.
References AllocateMemory(), pF, and pV.
Definition at line 192 of file HepPolyhedron.cc.
|
protected |
Definition at line 220 of file HepPolyhedron.cc.
References CLHEP::detail::n, and CLHEP::normal().
void HepPolyhedron::GetFacet | ( | G4int | iFace, |
G4int & | n, | ||
G4int * | iNodes, | ||
G4int * | edgeFlags = 0 , |
||
G4int * | iFaces = 0 |
||
) | const |
Definition at line 1444 of file HepPolyhedron.cc.
References CLHEP::detail::n.
Referenced by G4CutTubs::CreatePolyhedron().
void HepPolyhedron::GetFacet | ( | G4int | iFace, |
G4int & | n, | ||
G4Point3D * | nodes, | ||
G4int * | edgeFlags = 0 , |
||
G4Normal3D * | normals = 0 |
||
) | const |
Definition at line 1478 of file HepPolyhedron.cc.
References CLHEP::detail::n, and geant4_check_module_cycles::nodes.
Definition at line 1403 of file HepPolyhedron.cc.
Referenced by G4GMocrenFileSceneHandler::AddSolid(), and G4GMocrenFileSceneHandler::ExtractDetector().
G4bool HepPolyhedron::GetNextEdge | ( | G4Point3D & | p1, |
G4Point3D & | p2, | ||
G4int & | edgeFlag, | ||
G4int & | iface1, | ||
G4int & | iface2 | ||
) | const |
Definition at line 1424 of file HepPolyhedron.cc.
|
inline |
Definition at line 1387 of file HepPolyhedron.cc.
G4bool HepPolyhedron::GetNextEdgeIndices | ( | G4int & | i1, |
G4int & | i2, | ||
G4int & | edgeFlag, | ||
G4int & | iface1, | ||
G4int & | iface2 | ||
) | const |
Definition at line 1334 of file HepPolyhedron.cc.
References G4ThreadLocal.
Referenced by GetNextEdgeIndeces().
G4bool HepPolyhedron::GetNextFacet | ( | G4int & | n, |
G4Point3D * | nodes, | ||
G4int * | edgeFlags = 0 , |
||
G4Normal3D * | normals = 0 |
||
) | const |
Definition at line 1500 of file HepPolyhedron.cc.
References G4ThreadLocal, CLHEP::detail::n, and geant4_check_module_cycles::nodes.
Referenced by G4OpenGLSceneHandler::AddPrimitive(), G4Qt3DSceneHandler::AddPrimitive(), G4ToolsSGSceneHandler::AddPrimitive(), G4VtkSceneHandler::AddPrimitiveTensorGlyph(), and std::hash< G4Polyhedron >::operator()().
G4bool HepPolyhedron::GetNextNormal | ( | G4Normal3D & | normal | ) | const |
Definition at line 1580 of file HepPolyhedron.cc.
References G4ThreadLocal, and CLHEP::normal().
Referenced by G4HepRepFileSceneHandler::AddPrimitive().
G4bool HepPolyhedron::GetNextUnitNormal | ( | G4Normal3D & | normal | ) | const |
Definition at line 1601 of file HepPolyhedron.cc.
References CLHEP::normal().
Referenced by Geant4_SoPolyhedron::computeBBox(), Geant4_SoPolyhedron::generateAlternateRep(), and Geant4_SoPolyhedron::generatePrimitives().
Definition at line 1284 of file HepPolyhedron.cc.
Referenced by G4HepRepFileSceneHandler::AddPrimitive(), Geant4_SoPolyhedron::computeBBox(), Geant4_SoPolyhedron::generateAlternateRep(), and Geant4_SoPolyhedron::generatePrimitives().
G4bool HepPolyhedron::GetNextVertex | ( | G4Point3D & | vertex, |
G4int & | edgeFlag, | ||
G4Normal3D & | normal | ||
) | const |
Definition at line 1302 of file HepPolyhedron.cc.
References G4ThreadLocal, and CLHEP::normal().
Definition at line 1237 of file HepPolyhedron.cc.
References G4ThreadLocal.
Referenced by G4GMocrenFileSceneHandler::AddPrimitive().
|
inline |
Definition at line 294 of file HepPolyhedron.h.
References nface.
Referenced by G4HepRepFileSceneHandler::AddPrimitive(), G4OpenGLSceneHandler::AddPrimitive(), G4Qt3DSceneHandler::AddPrimitive(), G4ToolsSGSceneHandler::AddPrimitive(), G4GMocrenFileSceneHandler::AddPrimitive(), G4OpenInventorSceneHandler::AddPrimitive(), G4VtkSceneHandler::AddPrimitiveTensorGlyph(), Geant4_SoPolyhedron::computeBBox(), G4CutTubs::CreatePolyhedron(), G4PhysicalVolumeModel::DescribeSolid(), Geant4_SoPolyhedron::generateAlternateRep(), and Geant4_SoPolyhedron::generatePrimitives().
G4Normal3D HepPolyhedron::GetNormal | ( | G4int | iFace | ) | const |
Definition at line 1530 of file HepPolyhedron.cc.
|
inline |
|
inline |
Definition at line 290 of file HepPolyhedron.h.
References nvert.
Referenced by G4GMocrenFileSceneHandler::AddSolid(), G4CutTubs::CreatePolyhedron(), and Geant4_SoPolyhedron::generateAlternateRep().
|
static |
Definition at line 248 of file HepPolyhedron.cc.
References fNumberOfRotationSteps.
Referenced by G4TwistedTubs::CreatePolyhedron(), G4VTwistedFaceted::CreatePolyhedron(), G4ArrowModel::G4ArrowModel(), G4ViewParameters::G4ViewParameters(), G4ReflectedSolid::GetPolyhedron(), G4BooleanSolid::GetPolyhedron(), G4DisplacedSolid::GetPolyhedron(), G4MultiUnion::GetPolyhedron(), G4ScaledSolid::GetPolyhedron(), G4CSGSolid::GetPolyhedron(), G4Ellipsoid::GetPolyhedron(), G4EllipticalCone::GetPolyhedron(), G4EllipticalTube::GetPolyhedron(), G4GenericTrap::GetPolyhedron(), G4Hype::GetPolyhedron(), G4Paraboloid::GetPolyhedron(), G4TessellatedSolid::GetPolyhedron(), G4Tet::GetPolyhedron(), G4TwistedTubs::GetPolyhedron(), G4VCSGfaceted::GetPolyhedron(), G4VTwistedFaceted::GetPolyhedron(), HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(), HepPolyhedronHype::HepPolyhedronHype(), HepPolyhedronHyperbolicMirror::HepPolyhedronHyperbolicMirror(), HepPolyhedronParaboloid::HepPolyhedronParaboloid(), HepPolyhedronSphere::HepPolyhedronSphere(), HepPolyhedronTorus::HepPolyhedronTorus(), RotateAroundZ(), and RotateContourAroundZ().
G4double HepPolyhedron::GetSurfaceArea | ( | ) | const |
Definition at line 1617 of file HepPolyhedron.cc.
G4Normal3D HepPolyhedron::GetUnitNormal | ( | G4int | iFace | ) | const |
Definition at line 1555 of file HepPolyhedron.cc.
Definition at line 1264 of file HepPolyhedron.cc.
Referenced by G4GMocrenFileSceneHandler::AddSolid(), and G4CutTubs::CreatePolyhedron().
G4double HepPolyhedron::GetVolume | ( | ) | const |
Definition at line 1639 of file HepPolyhedron.cc.
HepPolyhedron HepPolyhedron::intersect | ( | const HepPolyhedron & | p | ) | const |
|
protected |
Definition at line 1186 of file HepPolyhedron.cc.
References G4Facet::edge, G4Facet::G4Edge::f, nface, pF, and G4Facet::G4Edge::v.
Referenced by G4PolyhedronArbitrary::InvertFacets(), and Transform().
HepPolyhedron & HepPolyhedron::operator= | ( | const HepPolyhedron & | from | ) |
Definition at line 146 of file HepPolyhedron.cc.
References AllocateMemory(), nface, nvert, pF, and pV.
HepPolyhedron & HepPolyhedron::operator= | ( | HepPolyhedron && | from | ) |
Definition at line 164 of file HepPolyhedron.cc.
|
static |
Definition at line 283 of file HepPolyhedron.cc.
References DEFAULT_NUMBER_OF_STEPS, and fNumberOfRotationSteps.
Referenced by G4PhysicalVolumeModel::DescribeSolid(), and G4VSceneHandler::RequestPrimitives().
|
protected |
Definition at line 475 of file HepPolyhedron.cc.
References AllocateMemory(), GetNumberOfRotationSteps(), nface, perMillion, pF, pV, RotateEdge(), SetSideFacets(), spatialTolerance, and twopi.
Referenced by HepPolyhedronCons::HepPolyhedronCons(), HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(), HepPolyhedronEllipticalCone::HepPolyhedronEllipticalCone(), HepPolyhedronHype::HepPolyhedronHype(), HepPolyhedronHyperbolicMirror::HepPolyhedronHyperbolicMirror(), HepPolyhedronParaboloid::HepPolyhedronParaboloid(), HepPolyhedronPgon::HepPolyhedronPgon(), HepPolyhedronSphere::HepPolyhedronSphere(), and HepPolyhedronTorus::HepPolyhedronTorus().
|
protected |
Definition at line 750 of file HepPolyhedron.cc.
References AllocateMemory(), GetNumberOfRotationSteps(), nface, perMillion, pF, pV, RotateEdge(), SetSideFacets(), spatialTolerance, TriangulatePolygon(), and twopi.
Referenced by HepPolyhedronPgon::HepPolyhedronPgon().
|
protected |
Definition at line 342 of file HepPolyhedron.cc.
References pF.
Referenced by RotateAroundZ(), and RotateContourAroundZ().
|
static |
Definition at line 261 of file HepPolyhedron.cc.
References fNumberOfRotationSteps, and CLHEP::detail::n.
Referenced by G4PhysicalVolumeModel::DescribeSolid(), G4ArrowModel::G4ArrowModel(), and G4VSceneHandler::RequestPrimitives().
|
protected |
Definition at line 1037 of file HepPolyhedron.cc.
References G4Facet::edge, G4Facet::G4Edge::f, nface, nvert, pF, and G4Facet::G4Edge::v.
Referenced by createPolyhedron(), HepPolyhedronCons::HepPolyhedronCons(), HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(), HepPolyhedronEllipticalCone::HepPolyhedronEllipticalCone(), HepPolyhedronHype::HepPolyhedronHype(), HepPolyhedronHyperbolicMirror::HepPolyhedronHyperbolicMirror(), HepPolyhedronParaboloid::HepPolyhedronParaboloid(), HepPolyhedronPgon::HepPolyhedronPgon(), HepPolyhedronSphere::HepPolyhedronSphere(), HepPolyhedronTorus::HepPolyhedronTorus(), and G4PolyhedronArbitrary::SetReferences().
|
protected |
Definition at line 404 of file HepPolyhedron.cc.
References perMillion, pF, and pi.
Referenced by RotateAroundZ(), and RotateContourAroundZ().
HepPolyhedron HepPolyhedron::subtract | ( | const HepPolyhedron & | p | ) | const |
HepPolyhedron & HepPolyhedron::Transform | ( | const G4Transform3D & | t | ) |
Definition at line 1212 of file HepPolyhedron.cc.
References HepGeom::BasicVector3D< T >::cross(), InvertFacets(), nvert, and pV.
Referenced by G4GMocrenFileSceneHandler::AddSolid(), G4ReflectedSolid::CreatePolyhedron(), G4DisplacedSolid::CreatePolyhedron(), G4ScaledSolid::CreatePolyhedron(), G4EllipticalTube::CreatePolyhedron(), G4ScoringBox::Draw(), G4ScoringCylinder::Draw(), G4ScoringBox::DrawColumn(), G4ScoringCylinder::DrawColumn(), G4GMocrenFileSceneHandler::ExtractDetector(), G4ArrowModel::G4ArrowModel(), G4ASCIITreeSceneHandler::RequestPrimitives(), and G4VisCommandsTouchable::SetNewValue().
|
protected |
Definition at line 907 of file HepPolyhedron.cc.
References CheckSnip(), and CLHEP::detail::n.
Referenced by RotateContourAroundZ().
|
friend |
Definition at line 96 of file HepPolyhedron.cc.
|
staticprotected |
Definition at line 217 of file HepPolyhedron.h.
Referenced by G4Polyhedron::G4Polyhedron(), GetNumberOfRotationSteps(), ResetNumberOfRotationSteps(), and SetNumberOfRotationSteps().
|
protected |
Definition at line 218 of file HepPolyhedron.h.
Referenced by G4PolyhedronArbitrary::AddFacet(), AllocateMemory(), GetNoFacets(), GetSurfaceArea(), GetVolume(), HepPolyhedron(), InvertFacets(), operator=(), RotateAroundZ(), RotateContourAroundZ(), and SetReferences().
|
protected |
Definition at line 218 of file HepPolyhedron.h.
Referenced by G4PolyhedronArbitrary::AddFacet(), G4PolyhedronArbitrary::AddVertex(), AllocateMemory(), createPolyhedron(), GetNoVerteces(), GetNoVertices(), HepPolyhedron(), HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(), HepPolyhedronEllipticalCone::HepPolyhedronEllipticalCone(), operator=(), SetReferences(), and Transform().
|
protected |
Definition at line 220 of file HepPolyhedron.h.
Referenced by G4PolyhedronArbitrary::AddFacet(), AllocateMemory(), createPolyhedron(), CreatePrism(), createTwistedTrap(), GetSurfaceArea(), GetVolume(), HepPolyhedron(), HepPolyhedronTet::HepPolyhedronTet(), InvertFacets(), operator=(), RotateAroundZ(), RotateContourAroundZ(), RotateEdge(), SetReferences(), SetSideFacets(), and ~HepPolyhedron().
|
protected |
Definition at line 219 of file HepPolyhedron.h.
Referenced by G4PolyhedronArbitrary::AddVertex(), AllocateMemory(), createPolyhedron(), createTwistedTrap(), GetSurfaceArea(), GetVolume(), HepPolyhedron(), HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(), HepPolyhedronEllipticalCone::HepPolyhedronEllipticalCone(), HepPolyhedronTet::HepPolyhedronTet(), HepPolyhedronTrap::HepPolyhedronTrap(), HepPolyhedronTrd2::HepPolyhedronTrd2(), operator=(), RotateAroundZ(), RotateContourAroundZ(), Transform(), and ~HepPolyhedron().