40 #ifndef USOLIDS_UExtrudedSolid_HH
41 #define USOLIDS_UExtrudedSolid_HH
70 std::vector<UVector2> polygon,
71 std::vector<ZSection> zsections);
75 std::vector<UVector2> polygon,
88 inline std::vector<UVector2>
GetPolygon()
const;
103 bool aAccurate =
false)
const;
106 return "ExtrudedSolid";
110 std::ostream&
StreamInfo(std::ostream& os)
const;
123 void Initialise(std::vector<UVector2>& polygon,
124 std::vector<ZSection>& zsections);
125 void Initialise(std::vector<UVector2>& polygon,
double dz,
void Initialise(std::vector< UVector2 > &polygon, std::vector< ZSection > &zsections)
std::ostream & StreamInfo(std::ostream &os) const
std::vector< double > fKScales
virtual ~UExtrudedSolid()
bool IsPointInside(UVector2 a, UVector2 b, UVector2 c, UVector2 p) const
double SafetyFromInside(const UVector3 &aPoint, bool aAccurate=false) const
ZSection GetZSection(int index) const
UVector2 ProjectPoint(const UVector3 &point) const
std::vector< std::vector< int > > fTriangles
bool IsSameLineSegment(UVector2 p, UVector2 l1, UVector2 l2) const
VUFacet * MakeUpFacet(int ind1, int ind2, int ind3) const
std::vector< UVector2 > fKOffsets
std::vector< double > fScale0s
UGeometryType fGeometryType
EnumInside Inside(const UVector3 &aPoint) const
UGeometryType GetEntityType() const
std::vector< UVector2 > fPolygon
bool AddGeneralPolygonFacets()
std::vector< UVector2 > GetPolygon() const
double GetAngle(UVector2 p0, UVector2 pa, UVector2 pb) const
std::vector< ZSection > fZSections
static const double kInfinity
std::vector< ZSection > GetZSections() const
std::vector< UVector2 > fOffset0s
VUFacet * MakeDownFacet(int ind1, int ind2, int ind3) const
UVector2 GetVertex(int index) const
ZSection(double z, UVector2 offset, double scale)
int GetNofZSections() const
bool IsSameSide(UVector2 p1, UVector2 p2, UVector2 l1, UVector2 l2) const
std::string UGeometryType
UExtrudedSolid & operator=(const UExtrudedSolid &rhs)
int GetNofVertices() const
bool IsSameLine(UVector2 p, UVector2 l1, UVector2 l2) const
void ComputeProjectionParameters()
double DistanceToOut(const UVector3 &aPoint, const UVector3 &aDirection, UVector3 &aNormalVector, bool &aConvex, double aPstep=UUtils::kInfinity) const