Rename vector3::operator== to ExactlyEqual and remove operator!=

You shouldn't be doing exact comparisons on (vector) floating point
types anyway.
master
John Bartholomew 2011-08-16 07:35:02 +01:00
parent 6307c1df7a
commit ca9a9ad205
3 changed files with 10 additions and 7 deletions

View File

@ -62,8 +62,8 @@ public:
inline operator vector3f () const { return v; }
inline vector3f to_vector3f() const { return v; }
inline bool operator==(const pi_vector &a) const { return v == a.to_vector3f(); }
inline bool operator!=(const pi_vector &a) const { return v != a.to_vector3f(); }
//inline bool operator==(const pi_vector &a) const { return v == a.to_vector3f(); }
//inline bool operator!=(const pi_vector &a) const { return v != a.to_vector3f(); }
inline pi_vector operator+(const pi_vector &a) const { return v + a.to_vector3f(); }
inline pi_vector operator-(const pi_vector &a) const { return v - a.to_vector3f(); }
@ -84,8 +84,8 @@ private:
OOLUA_CLASS_NO_BASES(pi_vector)
OOLUA_TYPEDEFS
Equal_op,
Not_equal_op,
//Equal_op,
//Not_equal_op,
Add_op,
Sub_op
OOLUA_END_TYPES

View File

@ -41,7 +41,7 @@ GeomTree::GeomTree(int numVerts, int numTris, float *vertices, int *indices, uns
vector3d v = vector3d(&m_vertices[3*i]);
for (int j=i+1; j<numVerts; j++) {
vector3d v2 = vector3d(&m_vertices[3*j]);
if (v2 == v) {
if (v2.ExactlyEqual(v)) {
for (int k=0; k<numTris*3; k++) {
if ((indices[k] == j) && (triflags[k/3] < 0x8000)) indices[k] = i;
}

View File

@ -34,8 +34,11 @@ public:
vector3 &operator/=(const double a) { const T inva = T(1.0/a); x*=inva; y*=inva; z*=inva; return *this; }
vector3 operator-(const vector3 &a) const { return vector3(x-a.x, y-a.y, z-a.z); }
vector3 operator-() const { return vector3(-x, -y, -z); }
bool operator==(const vector3 &a) const { return ((a.x==x)&&(a.y==y)&&(a.z==z)); }
bool operator!=(const vector3 &a) const { return ((a.x!=x)||(a.y!=y)||(a.z!=z)); }
#pragma GCC diagnostic ignored "-Wfloat-equal"
bool ExactlyEqual(const vector3 &a) const { return ((a.x==x)&&(a.y==y)&&(a.z==z)); }
//bool operator!=(const vector3 &a) const { return ((a.x!=x)||(a.y!=y)||(a.z!=z)); }
#pragma GCC diagnostic warning "-Wfloat-equal"
friend vector3 operator*(const vector3 &a, const float scalar) { return vector3(T(a.x*scalar), T(a.y*scalar), T(a.z*scalar)); }
friend vector3 operator*(const vector3 &a, const double scalar) { return vector3(T(a.x*scalar), T(a.y*scalar), T(a.z*scalar)); }