public override bool Equals(object obj)
{
if (!(obj is Vector3)) return false;
var vector = (Vector3) obj;
// compare like values for equality withing the difference range
bool xEq = FloatAlmostEqual (x, vector.x);
bool yEq = FloatAlmostEqual (y, vector.y);
bool zEq = FloatAlmostEqual (z, vector.z);
return (xEq && yEq && zEq);
}