|
|
|
@ -69,6 +69,14 @@ typedef struct Vec3 // Vector or Position |
|
|
|
return (double)x * x + (double)y * y + (double)z * z; |
|
|
|
} |
|
|
|
|
|
|
|
double longestElement() const |
|
|
|
{ |
|
|
|
double longest = fabs(x); |
|
|
|
if (fabs(y) > longest) longest = fabs(y); |
|
|
|
if (fabs(z) > longest) longest = fabs(z); |
|
|
|
return longest; |
|
|
|
} |
|
|
|
|
|
|
|
Vec3 normalized() const |
|
|
|
{ |
|
|
|
double invMag = 1.0 / magnitude(); |
|
|
|
@ -138,15 +146,15 @@ template<> struct std::hash<Vec3> |
|
|
|
static bool operator==(const Vec3& lhs, const Vec3& rhs) |
|
|
|
{ |
|
|
|
return |
|
|
|
fabs(rhs.x - lhs.x) < 0.001 && |
|
|
|
fabs(rhs.y - lhs.y) < 0.001 && |
|
|
|
fabs(rhs.z - lhs.z) < 0.001; |
|
|
|
fabs(rhs.x - lhs.x) < 0.01 && |
|
|
|
fabs(rhs.y - lhs.y) < 0.01 && |
|
|
|
fabs(rhs.z - lhs.z) < 0.01; |
|
|
|
} |
|
|
|
|
|
|
|
static bool operator<(const Vec3& lhs, const Vec3& rhs) |
|
|
|
{ |
|
|
|
if (fabs(rhs.x - lhs.x) < 0.001) |
|
|
|
if (fabs(rhs.y - lhs.y) < 0.001) |
|
|
|
if (fabs(rhs.x - lhs.x) < 0.01) |
|
|
|
if (fabs(rhs.y - lhs.y) < 0.01) |
|
|
|
return lhs.z < rhs.z; |
|
|
|
else |
|
|
|
return lhs.y < rhs.y; |
|
|
|
|