15 SolidTube(
const double cx,
const double cy,
const double cz,
const double r,
18 SolidTube(
const double cx,
const double cy,
const double cz,
const double r,
19 const double lz,
const double dx,
const double dy,
const double dz);
21 SolidTube(
const double cx,
const double cy,
const double cz,
22 const double ri,
const double ro,
const double lz);
25 SolidTube(
const double cx,
const double cy,
const double cz,
26 const double ri,
const double ro,
const double lz,
27 const double dx,
const double dy,
const double dz);
31 bool IsInside(
const double x,
const double y,
const double z,
32 const bool tesselated)
const override;
33 bool GetBoundingBox(
double& xmin,
double& ymin,
double& zmin,
double& xmax,
34 double& ymax,
double& zmax)
const override;
35 bool IsTube()
const override {
return true; }
66 void SetTopLid(
const bool closed) { m_toplid = closed; }
77 bool SolidPanels(std::vector<Panel>& panels)
override;
81 void Cut(
const double x0,
const double y0,
const double z0,
82 const double xn,
const double yn,
const double zn,
83 std::vector<Panel>& panels)
override;
101 bool m_average =
false;
111 std::vector<double> m_xpO;
113 std::vector<double> m_ypO;
115 std::vector<double> m_xpI;
117 std::vector<double> m_ypI;
120 bool m_toplid =
true;
122 bool m_botlid =
true;
125 std::array<double, 3> m_dis{{-1.,-1.,-1.}};
127 void UpdatePolygon();
bool SolidPanels(std::vector< Panel > &panels) override
Retrieve the surface panels of the solid.
void SetBottomLid(const bool closed)
Request the cylinder to be closed with a (polygonal) lid at -z.
unsigned int GetSectors() const
Return the number of sectors.
double GetDiscretisationLevel(const Panel &panel) override
Retrieve the discretisation level of a panel.
bool IsTube() const override
Return true if the solid is a tube.
void SetSectors(const unsigned int n)
SolidTube(const double cx, const double cy, const double cz, const double r, const double lz)
Constructor from centre, outer radius, and half-length.
double GetHalfLengthZ() const override
Retrieve the half-length of the tube.
void SetHalfLength(const double lz)
Set the half-length of the tube.
void SetAverageRadius(const bool average)
void SetRadius(const double r)
Set the outer radius.
double GetRotation() const
Return the current rotation angle.
double GetOuterRadius() const override
Retrieve the outer radius.
void Cut(const double x0, const double y0, const double z0, const double xn, const double yn, const double zn, std::vector< Panel > &panels) override
double GetInnerRadius() const override
Retrieve the inner radius.
void SetRotation(const double angle)
bool GetAverage() const
Return the status of the "average-radius" flag.
bool IsInside(const double x, const double y, const double z, const bool tesselated) const override
void SetTopLid(const bool closed)
Request the cylinder to be closed with a (polygonal) lid at +z.
double GetRadius() const override
Retrieve the outer radius.
bool GetBoundingBox(double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) const override
Return the bounding box of the solid.
void SetDiscretisationLevel(const double dis) override
Set the discretisation level (for all panels).
Solid()=delete
Default constructor.