Import Geant4 10.1.0 source tree
This commit is contained in:
+68
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * This Software is part of the AIDA Unified Solids Library package *
|
||||
// * See: https://aidasoft.web.cern.ch/USolids *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id:$
|
||||
//
|
||||
// --------------------------------------------------------------------
|
||||
//
|
||||
// UVCSGface
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
// Definition of the virtual base class UVCSGface, one side (or face)
|
||||
// of a CSG-like solid. It should be possible to build a CSG entirely out of
|
||||
// connecting CSG faces.
|
||||
// Each face has an inside and outside surface, the former represents
|
||||
// the inside of the volume, the latter, the outside.
|
||||
//
|
||||
// 19.09.13 Marek Gayer
|
||||
// Created from original implementation in Geant4
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
#ifndef UVCSGface_hh
|
||||
#define UVCSGface_hh
|
||||
|
||||
#include "UTypes.hh"
|
||||
#include "VUSolid.hh"
|
||||
|
||||
class UVoxelLimits;
|
||||
class UAffineTransform;
|
||||
class USolidExtentList;
|
||||
|
||||
class UVCSGface
|
||||
{
|
||||
public: // with description
|
||||
|
||||
UVCSGface() {}
|
||||
virtual ~UVCSGface() {}
|
||||
|
||||
virtual bool Distance(const UVector3& p, const UVector3& v,
|
||||
bool outgoing, double surfTolerance,
|
||||
double& distance, double& distFromSurface,
|
||||
UVector3& normal, bool& allBehind) = 0;
|
||||
|
||||
virtual double Safety(const UVector3& p, bool outgoing) = 0;
|
||||
|
||||
virtual VUSolid::EnumInside Inside(const UVector3& p, double tolerance,
|
||||
double* bestDistance) = 0;
|
||||
|
||||
virtual UVector3 Normal(const UVector3& p,
|
||||
double* bestDistance) = 0;
|
||||
|
||||
virtual double Extent(const UVector3 axis) = 0;
|
||||
|
||||
/* virtual void CalculateExtent( const EAxisType axis,
|
||||
const UVoxelLimits &voxelLimit,
|
||||
const UAffineTransform &tranform,
|
||||
USolidExtentList &extentList ) = 0;*/
|
||||
|
||||
virtual UVCSGface* Clone() = 0;
|
||||
|
||||
virtual double SurfaceArea() = 0;
|
||||
virtual UVector3 GetPointOnFace() = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user