core: Small extension of Vector class (math operations)
This commit is contained in:
1 parent
0d6945be98
commit
9cb65dfc01
2 files changed
+172
No files matched your search
@@ -47,6 +47,68 @@ Vector3D::Vector3D ()
|
||||
{
|
||||
}
|
||||
|
||||
double
|
||||
Vector3D::GetLength () const
|
||||
{
|
||||
return sqrt (x*x + y*y + z*z);
|
||||
}
|
||||
|
||||
Vector3D&
|
||||
Vector3D::operator += (const Vector3D &v)
|
||||
{
|
||||
x += v.x;
|
||||
y += v.y;
|
||||
z += v.z;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
Vector3D&
|
||||
Vector3D::operator += (double v)
|
||||
{
|
||||
x += v;
|
||||
y += v;
|
||||
z += v;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
Vector3D
|
||||
Vector3D::operator + (const Vector3D &v) const
|
||||
{
|
||||
return Vector3D (x+v.x, y+v.y, z+v.z);
|
||||
}
|
||||
|
||||
Vector3D
|
||||
Vector3D::operator + (double v) const
|
||||
{
|
||||
return Vector3D (x+v, y+v, z+v);
|
||||
}
|
||||
|
||||
Vector3D
|
||||
Vector3D::operator * (const Vector3D &v) const
|
||||
{
|
||||
return Vector3D (x*v.x, y*v.y, z*v.z);
|
||||
}
|
||||
|
||||
Vector3D
|
||||
Vector3D::operator * (double v) const
|
||||
{
|
||||
return Vector3D (x*v, y*v, z*v);
|
||||
}
|
||||
|
||||
Vector3D
|
||||
Vector3D::operator - (const Vector3D &v) const
|
||||
{
|
||||
return Vector3D (x-v.x, y-v.y, z-v.z);
|
||||
}
|
||||
|
||||
Vector3D
|
||||
Vector3D::operator / (double div) const
|
||||
{
|
||||
return Vector3D (x/div, y/div, z/div);
|
||||
}
|
||||
|
||||
Vector2D::Vector2D (double _x, double _y)
|
||||
: x (_x),
|
||||
y (_y)
|
||||
@@ -59,6 +121,66 @@ Vector2D::Vector2D ()
|
||||
{
|
||||
}
|
||||
|
||||
double
|
||||
Vector2D::GetLength () const
|
||||
{
|
||||
return sqrt (x*x + y*y);
|
||||
}
|
||||
|
||||
Vector2D&
|
||||
Vector2D::operator += (const Vector2D &v)
|
||||
{
|
||||
x += v.x;
|
||||
y += v.y;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
Vector2D&
|
||||
Vector2D::operator += (double v)
|
||||
{
|
||||
x += v;
|
||||
y += v;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
Vector2D
|
||||
Vector2D::operator + (const Vector2D &v) const
|
||||
{
|
||||
return Vector2D (x+v.x, y+v.y);
|
||||
}
|
||||
|
||||
Vector2D
|
||||
Vector2D::operator + (double v) const
|
||||
{
|
||||
return Vector2D (x+v, y+v);
|
||||
}
|
||||
|
||||
Vector2D
|
||||
Vector2D::operator * (const Vector2D &v) const
|
||||
{
|
||||
return Vector2D (x*v.x, y*v.y);
|
||||
}
|
||||
|
||||
Vector2D
|
||||
Vector2D::operator * (double v) const
|
||||
{
|
||||
return Vector2D (x*v, y*v);
|
||||
}
|
||||
|
||||
Vector2D
|
||||
Vector2D::operator - (const Vector2D &v) const
|
||||
{
|
||||
return Vector2D (x-v.x, y-v.y);
|
||||
}
|
||||
|
||||
Vector2D
|
||||
Vector2D::operator / (double div) const
|
||||
{
|
||||
return Vector2D (x/div, y/div);
|
||||
}
|
||||
|
||||
double
|
||||
CalculateDistance (const Vector3D &a, const Vector3D &b)
|
||||
{
|
||||
@@ -77,6 +199,21 @@ CalculateDistance (const Vector2D &a, const Vector2D &b)
|
||||
return distance;
|
||||
}
|
||||
|
||||
|
||||
double
|
||||
ScalarMultiplication (const Vector3D &a, const Vector3D &b)
|
||||
{
|
||||
Vector3D tmp = a * b;
|
||||
return tmp.x + tmp.y + tmp.z;
|
||||
}
|
||||
|
||||
double
|
||||
ScalarMultiplication (const Vector2D &a, const Vector2D &b)
|
||||
{
|
||||
Vector2D tmp = a * b;
|
||||
return tmp.x + tmp.y;
|
||||
}
|
||||
|
||||
std::ostream &operator << (std::ostream &os, const Vector3D &vector)
|
||||
{
|
||||
os << vector.x << ":" << vector.y << ":" << vector.z;
|
||||
|
||||
@@ -55,6 +55,17 @@ public:
|
||||
* z coordinate of vector
|
||||
*/
|
||||
double z;
|
||||
|
||||
double GetLength () const;
|
||||
|
||||
Vector3D& operator += (const Vector3D &);
|
||||
Vector3D& operator += (double);
|
||||
Vector3D operator + (const Vector3D &) const;
|
||||
Vector3D operator + (double) const;
|
||||
Vector3D operator * (const Vector3D &) const;
|
||||
Vector3D operator * (double v) const;
|
||||
Vector3D operator - (const Vector3D &) const;
|
||||
Vector3D operator / (double) const;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -82,6 +93,17 @@ public:
|
||||
* y coordinate of vector
|
||||
*/
|
||||
double y;
|
||||
|
||||
double GetLength () const;
|
||||
|
||||
Vector2D& operator += (const Vector2D &);
|
||||
Vector2D& operator += (double);
|
||||
Vector2D operator + (const Vector2D &) const;
|
||||
Vector2D operator + (double) const;
|
||||
Vector2D operator * (const Vector2D &) const;
|
||||
Vector2D operator * (double v) const;
|
||||
Vector2D operator - (const Vector2D &) const;
|
||||
Vector2D operator / (double) const;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -98,6 +120,19 @@ double CalculateDistance (const Vector3D &a, const Vector3D &b);
|
||||
*/
|
||||
double CalculateDistance (const Vector2D &a, const Vector2D &b);
|
||||
|
||||
/**
|
||||
* \brief Calculate scalar multiplication between two vectors
|
||||
* \param a one point
|
||||
* \param b another point
|
||||
*/
|
||||
double ScalarMultiplication (const Vector3D &a, const Vector3D &b);
|
||||
/**
|
||||
* \brief Calculate scalar multiplication between two vectors
|
||||
* \param a one point
|
||||
* \param b another point
|
||||
*/
|
||||
double ScalarMultiplication (const Vector2D &a, const Vector2D &b);
|
||||
|
||||
/**
|
||||
* \class ns3::Vector3DValue
|
||||
* \brief hold objects of type ns3::Vector3D
|
||||
|
||||
Reference in new issue
Block a user