78 const double zPlane[],
79 const double rInner[],
80 const double rOuter[]);
90 const double zPlane[],
91 const double rInner[],
92 const double rOuter[]);
111 std::ostream&
StreamInfo(std::ostream& os)
const;
118 bool aAccurate =
false)
const;
120 bool aAccurate =
false)
const;
150 double fRmin2,
double fRmax2,
151 double zOne,
double zTwo,
152 double& totArea)
const;
155 double zOne,
double zTwo,
156 double& totArea)
const;
159 double fRMin2,
double fRMax2,
160 double zOne,
double zTwo,
161 double& totArea)
const;
164 double fRMin2,
double fRMax2,
228 int numPlanes = (int)numCorner / 2;
232 fOriginalParameters->
fZValues.resize(numPlanes);
233 fOriginalParameters->
Rmin.resize(numPlanes);
234 fOriginalParameters->
Rmax.resize(numPlanes);
236 for (
int j = 0; j < numPlanes; j++)
238 fOriginalParameters->
fZValues[j] = corners[numPlanes + j].
z;
239 fOriginalParameters->
Rmax[j] = corners[numPlanes + j].
r;
240 fOriginalParameters->
Rmin[j] = corners[numPlanes - 1 - j].
r;
330 if (section < 0) section = 0;
331 else if (section > fMaxSection) section =
fMaxSection;
double DistanceToIn(const UVector3 &p, const UVector3 &v, double aPstep=UUtils::kInfinity) const
std::vector< double > Rmin
UPolyconeSideRZ GetCorner(int index) const
std::vector< double > fZValues
UVector3 GetPointOnTubs(double fRMin, double fRMax, double zOne, double zTwo, double &totArea) const
void SetOriginalParameters(UPolyconeHistorical *pars)
bool NormalSection(int index, const UVector3 &p, UVector3 &n) const
int GetSection(double z) const
UPolyconeHistorical * GetOriginalParameters() const
void CopyStuff(const UPolycone &source)
std::vector< UPolyconeSection > fSections
UVector3 GetPointOnCut(double fRMin1, double fRMax1, double fRMin2, double fRMax2, double zOne, double zTwo, double &totArea) const
double SafetyFromOutsideSection(int index, const double rho, const UVector3 &p) const
std::ostream & StreamInfo(std::ostream &os) const
UPolyconeHistorical & operator=(const UPolyconeHistorical &right)
double SafetyFromInsideR(const UVector3 &p, const double rho, bool) const
virtual bool Normal(const UVector3 &aPoint, UVector3 &aNormal) const =0
double SafetyFromOutsideR(const UVector3 &p, const double rho, bool) const
VUSolid::EnumInside Inside(const UVector3 &p) const
void GetParametersList(int, double *) const
std::vector< double > Rmax
bool Normal(const UVector3 &aPoint, UVector3 &aNormal) const
static int BinarySearch(const std::vector< T > &vec, T value)
static const double kInfinity
double SafetyFromOutsideSection(int index, const UVector3 &p) const
UVector3 GetPointOnSurface() const
void Init(double phiStart, double phiTotal, int numZPlanes, const double zPlane[], const double rInner[], const double rOuter[])
double SafetyFromOutsideR(const UVector3 &p, const double rho, bool precise=false) const
UPolyconeHistorical * fOriginalParameters
UPolyconeSideRZ * corners
UGeometryType GetEntityType() const
void SetOriginalParameters()
VUSolid::EnumInside InsideSection(int index, const UVector3 &p) const
virtual double SafetyFromOutside(const UVector3 &aPoint, bool aAccurate=false) const =0
double SafetyFromOutside(const UVector3 &aPoint, bool aAccurate=false) const
double GetStartPhi() const
double SafetyFromInside(const UVector3 &aPoint, bool aAccurate=false) const
std::string UGeometryType
UVector3 GetPointOnRing(double fRMin, double fRMax, double fRMin2, double fRMax2, double zOne) const
UVector3 GetPointOnCone(double fRmin1, double fRmax1, double fRmin2, double fRmax2, double zOne, double zTwo, double &totArea) const
UPolycone & operator=(const UPolycone &source)
int GetNumRZCorner() const
double SafetyFromInsideSection(int index, const double rho, const UVector3 &p) const
std::vector< double > fZs
UEnclosingCylinder * enclosingCylinder
void Extent(UVector3 &aMin, UVector3 &aMax) const
double SafetyFromInsideR(const UVector3 &p, const double rho, bool precise=false) const
double DistanceToOut(const UVector3 &aPoint, const UVector3 &aDirection, UVector3 &aNormalVector, bool &aConvex, double aPstep=UUtils::kInfinity) const
UPolycone(const std::string &name)
void ComputeBBox(UBBox *, bool)