43 #ifndef USOLIDS_UGenericTrap_HH
44 #define USOLIDS_UGenericTrap_HH
46 #ifndef USOLIDS_VUSolid
50 #ifndef USOLIDS_UUtils
67 const std::vector<UVector2>& vertices);
79 inline const std::vector<UVector2>&
GetVertices()
const;
90 bool aAccurate =
false)
const;
92 bool aAccurate =
false)
const;
113 std::ostream&
StreamInfo(std::ostream& os)
const;
126 void Initialise(
const std::vector<UVector2>& vertices);
136 bool CheckOrder(
const std::vector<UVector2>& vertices)
const;
150 int ind1,
int ind2,
int ind3)
const;
152 int ind1,
int ind2,
int ind3)
const;
162 const UVector3& v,
const int ipl)
const ;
164 const UVector3& v,
const int ipl)
const;
166 const int ipl)
const;
VUFacet * MakeDownFacet(const std::vector< UVector3 > &fromVertices, int ind1, int ind2, int ind3) const
void ComputeBBox(UBBox *, bool)
bool IsSameLineSegment(const UVector2 &p, const UVector2 &l1, const UVector2 &l2) const
double DistanceToOut(const UVector3 &aPoint, const UVector3 &aDirection, UVector3 &aNormalVector, bool &aConvex, double aPstep=UUtils::kInfinity) const
void SetZHalfLength(double)
std::ostream & StreamInfo(std::ostream &os) const
double SafetyFromInside(const UVector3 &aPoint, bool aAccurate=false) const
double DistToPlane(const UVector3 &p, const UVector3 &v, const int ipl) const
void SetVisSubdivisions(int subdiv)
void Extent(UVector3 &aMin, UVector3 &aMax) const
bool CheckOrder(const std::vector< UVector2 > &vertices) const
static const int fgkNofVertices
EnumInside InsidePolygone(const UVector3 &p, const UVector2 *poly) const
void SetTwistAngle(int index, double twist)
bool Normal(const UVector3 &aPoint, UVector3 &aNormal) const
void Initialise(const std::vector< UVector2 > &vertices)
UTessellatedSolid * fTessellatedSolid
double DistToTriangle(const UVector3 &p, const UVector3 &v, const int ipl) const
double SafetyToFace(const UVector3 &p, const int iseg) const
UGenericTrap & operator=(const UGenericTrap &rhs)
int GetNofVertices() const
std::vector< UVector2 > fVertices
static const double kInfinity
double SafetyFromOutside(const UVector3 &aPoint, bool aAccurate=false) const
int GetVisSubdivisions() const
void ReorderVertices(std::vector< UVector3 > &vertices) const
bool IsSegCrossing(const UVector2 &a, const UVector2 &b, const UVector2 &c, const UVector2 &d) const
double DistanceToIn(const UVector3 &aPoint, const UVector3 &aDirection, double aPstep=UUtils::kInfinity) const
UVector3 NormalToPlane(const UVector3 &p, const int ipl) const
VUFacet * MakeUpFacet(const std::vector< UVector3 > &fromVertices, int ind1, int ind2, int ind3) const
bool IsSameLine(const UVector2 &p, const UVector2 &l1, const UVector2 &l2) const
static const double fgkTolerance
const std::vector< UVector2 > & GetVertices() const
UGeometryType GetEntityType() const
EnumInside Inside(const UVector3 &aPoint) const
UVector3 GetMaximumBBox() const
void GetParametersList(int, double *) const
double GetTwistAngle(int index) const
std::string UGeometryType
UTessellatedSolid * CreateTessellatedSolid() const
VUFacet * MakeSideFacet(const UVector3 &downVertex0, const UVector3 &downVertex1, const UVector3 &upVertex1, const UVector3 &upVertex0) const
UVector2 GetVertex(int index) const
double GetFaceSurfaceArea(const UVector3 &p0, const UVector3 &p1, const UVector3 &p2, const UVector3 &p3) const
UVector3 GetPointOnSurface() const
UVector3 GetMinimumBBox() const
bool IsSegCrossingZ(const UVector2 &a, const UVector2 &b, const UVector2 &c, const UVector2 &d) const
double GetZHalfLength() const