core: Add Vector dot product

This commit is contained in:
pagmatt
2024-05-19 17:49:42 +02:00
committed by Tom Henderson
parent 4670d4fd61
commit bf97cbf1d3
2 changed files with 28 additions and 0 deletions

View File

@@ -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

View File

@@ -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);