44 double tolerance = kCarTolerance*kCarTolerance/4.0;
48 else if ((GetCircumcentre()-right.
GetCircumcentre()).Mag2() > tolerance)
50 else if (std::fabs((right.
GetSurfaceNormal()).Dot(GetSurfaceNormal())) < 0.9999999999)
53 bool coincident =
true;
61 coincident = (GetVertex(i)-right.
GetVertex(j)).Mag2() < tolerance;
62 }
while (!coincident && ++j < GetNumberOfVertices());
63 }
while (coincident && ++i < GetNumberOfVertices());
72 int n = GetNumberOfVertices();
73 for (
int i = 0; i <
n; ++i)
74 SetVertex(i, GetVertex(i) + v);
82 os <<
"*********************************************************************" << endl;
83 os <<
"FACET TYPE = " << GetEntityType() << endl;
84 os <<
"ABSOLUTE VECTORS = " << endl;
85 int n = GetNumberOfVertices();
86 for (
int i = 0; i <
n; ++i)
87 os <<
"P[" << i <<
"] = " << GetVertex(i) << endl;
95 os <<
"*********************************************************************" << endl;
103 double displacement = d.
Dot(GetSurfaceNormal());
104 return displacement <= 0.0;
static const double dirTolerance
bool operator==(const VUFacet &right) const
virtual int GetNumberOfVertices() const =0
std::ostream & StreamInfo(std::ostream &os) const
virtual UVector3 GetVertex(int i) const =0
void ApplyTranslation(const UVector3 v)
static double Tolerance()
virtual UVector3 GetSurfaceNormal() const =0
virtual UVector3 GetCircumcentre() const =0
double Dot(const UVector3 &) const
bool IsInside(const UVector3 &p) const
static const double kCarTolerance