diff --git a/Vector2.cpp b/Vector2.cpp index b373299..c2a74c0 100644 --- a/Vector2.cpp +++ b/Vector2.cpp @@ -140,7 +140,3 @@ Vector2 Vector2::Lerp(Vector2 from, Vector2 to, float f) { Vector2 v = from + (to - from) * f; return v; } - -float Vector2::ToFactor(Vector2 a, Vector2 b) { - return (1 - Vector2::Dot(a, b)) / 2; -} diff --git a/Vector2.h b/Vector2.h index 1c4e329..c6877c4 100644 --- a/Vector2.h +++ b/Vector2.h @@ -6,22 +6,22 @@ #define VECTOR2_H extern "C" { - /// - /// 2-dimensional Vector representation - /// - /// This is a C-style implementation - /// This uses the right-handed coordinate system. - typedef struct Vec2 { - /// - /// The right axis of the vector - /// - float x; - /// - /// The upward/forward axis of the vector - /// - float y; +/// +/// 2-dimensional Vector representation +/// +/// This is a C-style implementation +/// This uses the right-handed coordinate system. +typedef struct Vec2 { + /// + /// The right axis of the vector + /// + float x; + /// + /// The upward/forward axis of the vector + /// + float y; - } Vec2; +} Vec2; } /// @@ -30,207 +30,205 @@ extern "C" { /// This uses the right-handed coordinate system. struct Vector2 : Vec2 { public: - /// - /// Create a new 2-dimensinal zero vector - /// - Vector2(); - /// - /// Create a new 2-dimensional vector - /// - /// x axis value - /// y axis value - Vector2(float x, float y); - /// - /// Create a vector from C-style Vec2 - /// - /// The C-style Vec - Vector2(Vec2 v); + /// + /// Create a new 2-dimensinal zero vector + /// + Vector2(); + /// + /// Create a new 2-dimensional vector + /// + /// x axis value + /// y axis value + Vector2(float x, float y); + /// + /// Create a vector from C-style Vec2 + /// + /// The C-style Vec + Vector2(Vec2 v); - ~Vector2(); + ~Vector2(); - /// - /// A vector with zero for all axis - /// - const static Vector2 zero; - /// - /// A vector with values (1, 1) - /// - const static Vector2 one; - /// - /// A vector with values (1, 0) - /// -/// - const static Vector2 right; - /// - /// A vector3 with values (-1, 0) - /// - const static Vector2 left; - /// - /// A vector with values (0, 1) - /// - const static Vector2 up; - /// - /// A vector with values (0, -1) - /// - const static Vector2 down; - /// - /// A vector with values (0, 1) - /// - const static Vector2 forward; - /// - /// A vector with values (0, -1) - /// - const static Vector2 back; + /// + /// A vector with zero for all axis + /// + const static Vector2 zero; + /// + /// A vector with values (1, 1) + /// + const static Vector2 one; + /// + /// A vector with values (1, 0) + /// + /// + const static Vector2 right; + /// + /// A vector3 with values (-1, 0) + /// + const static Vector2 left; + /// + /// A vector with values (0, 1) + /// + const static Vector2 up; + /// + /// A vector with values (0, -1) + /// + const static Vector2 down; + /// + /// A vector with values (0, 1) + /// + const static Vector2 forward; + /// + /// A vector with values (0, -1) + /// + const static Vector2 back; - /// - /// The length of a vector - /// - /// The vector for which you need the length - /// The length of the given vector - static float Magnitude(const Vector2& vector); - /// - /// The length of this vector - /// - /// The length of this vector - float magnitude() const; - /// - /// The squared length of a vector - /// - /// The vector for which you need the squared - /// length The squatred length The squared length - /// is computationally simpler than the real length. Think of Pythagoras A^2 + - /// B^2 = C^2. This leaves out the calculation of the squared root of C. - static float SqrMagnitude(const Vector2& vector); - /// - /// The squared length of this vector - /// - /// The squared length - /// The squared length is computationally simpler than the real length. - /// Think of Pythagoras A^2 + B^2 = C^2. - /// This leaves out the calculation of the squared root of C. - float sqrMagnitude() const; - /// - /// Connvert a vector to a length of 1 - /// - /// The vector to convert - /// The vector with length 1 - static Vector2 Normalize(Vector2 vector); - /// - /// Convert the vector to a length of a - /// - /// The vector with length 1 - Vector2 normalized() const; + /// + /// The length of a vector + /// + /// The vector for which you need the length + /// The length of the given vector + static float Magnitude(const Vector2 &vector); + /// + /// The length of this vector + /// + /// The length of this vector + float magnitude() const; + /// + /// The squared length of a vector + /// + /// The vector for which you need the squared + /// length The squatred length The squared length + /// is computationally simpler than the real length. Think of Pythagoras A^2 + + /// B^2 = C^2. This leaves out the calculation of the squared root of C. + static float SqrMagnitude(const Vector2 &vector); + /// + /// The squared length of this vector + /// + /// The squared length + /// The squared length is computationally simpler than the real length. + /// Think of Pythagoras A^2 + B^2 = C^2. + /// This leaves out the calculation of the squared root of C. + float sqrMagnitude() const; + /// + /// Connvert a vector to a length of 1 + /// + /// The vector to convert + /// The vector with length 1 + static Vector2 Normalize(Vector2 vector); + /// + /// Convert the vector to a length of a + /// + /// The vector with length 1 + Vector2 normalized() const; - /// - /// Negate the vector - /// - /// The negated vector - /// This will result in a vector pointing in the opposite direction - Vector2 operator-(); - /// - /// Subtract a vector from this vector - /// - /// The vector to subtract from this vector - /// The result of the subtraction - Vector2 operator-(const Vector2& vector) const; + /// + /// Negate the vector + /// + /// The negated vector + /// This will result in a vector pointing in the opposite direction + Vector2 operator-(); + /// + /// Subtract a vector from this vector + /// + /// The vector to subtract from this vector + /// The result of the subtraction + Vector2 operator-(const Vector2 &vector) const; - /// - /// Add another vector to this vector - /// - /// The vector to add - /// The result of adding the vector - Vector2 operator+(const Vector2& vector2) const; + /// + /// Add another vector to this vector + /// + /// The vector to add + /// The result of adding the vector + Vector2 operator+(const Vector2 &vector2) const; - /// - /// Scale a vector using another vector - /// - /// The vector to scale - /// A vector with scaling factors - /// The scaled vector - /// Each component of the vector v1 will be multiplied with the - /// component from the scaling vector v2. - static Vector2 Scale(const Vector2& vector1, const Vector2& vector2); - /// - /// Scale a vector uniformly up - /// - /// The scaling factor - /// The scaled vector - /// Each component of the vector will be multipled with the same factor. - Vector2 operator*(float factor) const; - /// - /// Scale a vector uniformy down - /// - /// The scaling factor - /// The scaled vector - /// Each componet of the vector will be divided by the same factor. - Vector2 operator/(const float& factor); + /// + /// Scale a vector using another vector + /// + /// The vector to scale + /// A vector with scaling factors + /// The scaled vector + /// Each component of the vector v1 will be multiplied with the + /// component from the scaling vector v2. + static Vector2 Scale(const Vector2 &vector1, const Vector2 &vector2); + /// + /// Scale a vector uniformly up + /// + /// The scaling factor + /// The scaled vector + /// Each component of the vector will be multipled with the same factor. + Vector2 operator*(float factor) const; + /// + /// Scale a vector uniformy down + /// + /// The scaling factor + /// The scaled vector + /// Each componet of the vector will be divided by the same factor. + Vector2 operator/(const float &factor); - /// - /// The dot product of two vectors - /// - /// The first vector - /// The second vector - /// The dot product of the two vectors - static float Dot(const Vector2& vector1, const Vector2& vector2); + /// + /// The dot product of two vectors + /// + /// The first vector + /// The second vector + /// The dot product of the two vectors + static float Dot(const Vector2 &vector1, const Vector2 &vector2); - /// - /// Check is this vector is equal to the given vector - /// - /// The vector to check against - /// True if it is identical to the given vector - /// Note this uses float comparison to check equality which - /// may have strange effects. Equality on float should be avoided. - bool operator==(const Vector2& vector); + /// + /// Check is this vector is equal to the given vector + /// + /// The vector to check against + /// True if it is identical to the given vector + /// Note this uses float comparison to check equality which + /// may have strange effects. Equality on float should be avoided. + bool operator==(const Vector2 &vector); - /// - /// The distance between two vectors - /// - /// The first vector - /// The second vectors - /// The distance between the two vectors - static float Distance(const Vector2& vector1, const Vector2& vector2); + /// + /// The distance between two vectors + /// + /// The first vector + /// The second vectors + /// The distance between the two vectors + static float Distance(const Vector2 &vector1, const Vector2 &vector2); - /// - /// Calculate the angle between two vectors - /// - /// The first vector - /// The second vector - /// The angle - /// This reterns an unsigned angle which is the shortest distance - /// between the two vectors. Use Vector3::SignedAngle if a - /// signed angle is needed. - static float Angle(Vector2 vector1, Vector2 vector2); + /// + /// Calculate the angle between two vectors + /// + /// The first vector + /// The second vector + /// The angle + /// This reterns an unsigned angle which is the shortest distance + /// between the two vectors. Use Vector3::SignedAngle if a + /// signed angle is needed. + static float Angle(Vector2 vector1, Vector2 vector2); - /// - /// Calculate the angle between two vectors rotation around an axis. - /// - /// The starting vector - /// The ending vector - /// The axis to rotate around - /// The signed angle - static float SignedAngle(Vector2 from, Vector2 to); + /// + /// Calculate the angle between two vectors rotation around an axis. + /// + /// The starting vector + /// The ending vector + /// The axis to rotate around + /// The signed angle + static float SignedAngle(Vector2 from, Vector2 to); - /// - /// Rotate the vector - /// - /// The vector to rotate - /// Angle in radias to rotate - /// The rotated vector - static Vector2 Rotate(Vector2 v, float angle); + /// + /// Rotate the vector + /// + /// The vector to rotate + /// Angle in radias to rotate + /// The rotated vector + static Vector2 Rotate(Vector2 v, float angle); - /// - /// Lerp between two vectors - /// - /// The from vector - /// The to vector - /// The interpolation distance (0..1) - /// The lerped vector - /// The factor f is unclamped. Value 0 matches the *from* vector, Value 1 - /// matches the *to* vector Value -1 is *from* vector minus the difference - /// between *from* and *to* etc. - static Vector2 Lerp(Vector2 from, Vector2 to, float f); - - static float ToFactor(Vector2 a, Vector2 b); + /// + /// Lerp between two vectors + /// + /// The from vector + /// The to vector + /// The interpolation distance (0..1) + /// The lerped vector + /// The factor f is unclamped. Value 0 matches the *from* vector, Value 1 + /// matches the *to* vector Value -1 is *from* vector minus the difference + /// between *from* and *to* etc. + static Vector2 Lerp(Vector2 from, Vector2 to, float f); }; #endif \ No newline at end of file diff --git a/test/Vector2_test.cc b/test/Vector2_test.cc index 83c52ce..9303bb0 100644 --- a/test/Vector2_test.cc +++ b/test/Vector2_test.cc @@ -460,6 +460,4 @@ TEST(Vector2, Lerp) { EXPECT_FLOAT_EQ(Vector2::Distance(r, Vector2(-2.0, -1.0f)), 0); } -TEST(Vector2, DISABLED_ToFactor) {} - #endif \ No newline at end of file