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