diff --git a/src/core/model/vector.cc b/src/core/model/vector.cc index c6e284bee..d3db45630 100644 --- a/src/core/model/vector.cc +++ b/src/core/model/vector.cc @@ -213,6 +213,12 @@ operator*(double a, const Vector3D& b) return Vector3D(b.x * a, b.y * a, b.z * a); } +double +operator*(const Vector3D& a, const Vector3D& b) +{ + return a.x * b.x + a.y * b.y + a.z * b.z; +} + std::ostream& operator<<(std::ostream& os, const Vector2D& vector) { @@ -292,4 +298,10 @@ operator*(double a, const Vector2D& b) return Vector2D(b.x * a, b.y * a); } +double +operator*(const Vector2D& a, const Vector2D& b) +{ + return a.x * b.x + a.y * b.y; +} + } // namespace ns3 diff --git a/src/core/model/vector.h b/src/core/model/vector.h index 83c06e3d4..ff4483cdc 100644 --- a/src/core/model/vector.h +++ b/src/core/model/vector.h @@ -188,6 +188,14 @@ class Vector3D * \returns The vector \pname{b} scaled by \pname{a}. */ friend Vector3D operator*(double a, const Vector3D& b); + + /** + * Dot product operator. + * \param [in] a lhs vector. + * \param [in] b rhs vector. + * \returns The dot product of \pname{a} and \pname{b}. + */ + friend double operator*(const Vector3D& a, const Vector3D& b); }; /** @@ -333,6 +341,14 @@ class Vector2D * \returns The vector \pname{b} scaled by \pname{a}. */ friend Vector2D operator*(double a, const Vector2D& b); + + /** + * Dot product operator. + * \param [in] a lhs vector. + * \param [in] b rhs vector. + * \returns The dot product of \pname{a} and \pname{b}. + */ + friend double operator*(const Vector2D& a, const Vector2D& b); }; double CalculateDistance(const Vector3D& a, const Vector3D& b);