13 SolidTube(
const double cx,
const double cy,
const double cz,
14 const double rmin,
const double rmax,
const double lz);
16 SolidTube(
const double cx,
const double cy,
const double cz,
const double r,
19 SolidTube(
const double cx,
const double cy,
const double cz,
20 const double rmin,
const double rmax,
const double lz,
21 const double dx,
const double dy,
const double dz);
23 SolidTube(
const double cx,
const double cy,
const double cz,
const double r,
24 const double lz,
const double dx,
const double dy,
const double dz);
28 bool IsInside(
const double x,
const double y,
const double z)
const override;
29 bool GetBoundingBox(
double& xmin,
double& ymin,
double& zmin,
double& xmax,
30 double& ymax,
double& zmax)
const override;
31 bool IsTube()
const override {
return true; }
59 void SetToplid(
const bool toplid) { m_toplid = toplid; }
61 void SetBottomlid(
const bool bottomlid) { m_bottomlid = bottomlid; }
67 bool SolidPanels(std::vector<Panel>& panels)
override;
72 double m_rMin, m_rMax;
82 bool m_average =
false;
86 bool m_bottomlid =
true;
89 std::array<double, 3> m_dis{{-1.,-1.,-1.}};
bool SolidPanels(std::vector< Panel > &panels) override
Retrieve the surface panels of the solid.
void SetInnerRadius(const double rmin)
void SetToplid(const bool toplid)
Request the cylinder to be closed with a (polygonal) lid at +z.
unsigned int GetSectors() const
double GetDiscretisationLevel(const Panel &panel) override
Retrieve the discretization level of a panel.
void SetOuterRadius(const double rmax)
bool IsTube() const override
Return true if the solid is a tube.
void SetBottomlid(const bool bottomlid)
Request the cylinder to be closed with a (polygonal) lid at -z.
void SetSectors(const unsigned int n)
double GetHalfLengthZ() const override
Return the half-length along z.
void SetHalfLength(const double lz)
void SetAverageRadius(const bool average)
void SetRadius(const double r)
double GetRotation() const
double GetOuterRadius() const override
Return the outer radius.
double GetInnerRadius() const override
Return the inner radius.
bool IsInside(const double x, const double y, const double z) const override
Check whether a given point is inside the solid.
void SetRotation(const double angle)
double GetRadius() const override
Return the radius.
bool GetBoundingBox(double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) const override
Return the bounding box of the solid.
Abstract base class for solids.