130 if (
this == &rhs) {
return *
this; }
160 pMin = std::max( minA, minB );
161 pMax = std::min( maxA, maxB );
219 G4cout <<
"WARNING - Invalid call in "
220 <<
"G4IntersectionSolid::SurfaceNormal(p)" <<
G4endl
221 <<
" Point p is outside !" <<
G4endl;
223 G4cerr <<
"WARNING - Invalid call in "
224 <<
"G4IntersectionSolid::SurfaceNormal(p)" <<
G4endl
225 <<
" Point p is outside !" <<
G4endl;
253 G4cout <<
"WARNING - Invalid call in "
254 <<
"G4IntersectionSolid::SurfaceNormal(p)" <<
G4endl
255 <<
" Point p is out of surface !" <<
G4endl;
257 G4cerr <<
"WARNING - Invalid call in "
258 <<
"G4IntersectionSolid::SurfaceNormal(p)" <<
G4endl
259 <<
" Point p is out of surface !" <<
G4endl;
279 G4cout <<
"WARNING - Invalid call in "
280 <<
"G4IntersectionSolid::DistanceToIn(p,v)" <<
G4endl
281 <<
" Point p is inside !" <<
G4endl;
284 G4cerr <<
"WARNING - Invalid call in "
285 <<
"G4IntersectionSolid::DistanceToIn(p,v)" <<
G4endl
286 <<
" Point p is inside !" <<
G4endl;
299 G4bool doA =
true, doB =
true;
313 if( dA1 == kInfinity )
return kInfinity;
331 if(dB1 == kInfinity)
return kInfinity;
344 if( dB1 < dA2 )
return dB1;
354 if( dA1 < dB2 )
return dA1;
378 G4cout <<
"WARNING - Invalid call in "
379 <<
"G4IntersectionSolid::DistanceToIn(p)" <<
G4endl
380 <<
" Point p is inside !" <<
G4endl;
382 G4cerr <<
"WARNING - Invalid call in "
383 <<
"G4IntersectionSolid::DistanceToIn(p)" <<
G4endl
384 <<
" Point p is inside !" <<
G4endl;
422 G4bool validNormA, validNormB;
436 G4cout <<
"WARNING - Invalid call in "
437 <<
"G4IntersectionSolid::DistanceToOut(p,v)" <<
G4endl
438 <<
" Point p is outside !" <<
G4endl;
441 G4cerr <<
"WARNING - Invalid call in "
442 <<
"G4IntersectionSolid::DistanceToOut(p,v)" <<
G4endl
443 <<
" Point p is outside !" <<
G4endl;
451 G4double dist = std::min(distA,distB) ;
457 *validNorm = validNormA;
462 *validNorm = validNormB;
480 G4cout <<
"WARNING - Invalid call in "
481 <<
"G4IntersectionSolid::DistanceToOut(p)" <<
G4endl
482 <<
" Point p is outside !" <<
G4endl;
484 G4cerr <<
"WARNING - Invalid call in "
485 <<
"G4IntersectionSolid::DistanceToOut(p)" <<
G4endl
486 <<
" Point p is outside !" <<
G4endl;
513 return G4String(
"G4IntersectionSolid");
547 if (
processor.execute(*result)) {
return result; }
G4DLLIMPORT std::ostream G4cerr
G4DLLIMPORT std::ostream G4cout
G4BooleanSolid & operator=(const G4BooleanSolid &rhs)
G4Polyhedron * StackPolyhedron(HepPolyhedronProcessor &, const G4VSolid *) const
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const
G4NURBS * CreateNURBS() const
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
virtual ~G4IntersectionSolid()
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const
G4IntersectionSolid & operator=(const G4IntersectionSolid &rhs)
G4IntersectionSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)
G4GeometryType GetEntityType() const
G4Polyhedron * CreatePolyhedron() const
EInside Inside(const G4ThreeVector &p) const
void DescribeYourselfTo(G4VGraphicsScene &scene) const
void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
virtual void AddSolid(const G4Box &)=0
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
virtual EInside Inside(const G4ThreeVector &p) const =0
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0