Rename vector3::operator== to ExactlyEqual and remove operator!=
You shouldn't be doing exact comparisons on (vector) floating point types anyway.master
parent
6307c1df7a
commit
ca9a9ad205
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)); }
|
||||
|
|
Loading…
Reference in New Issue