summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/geometry/vector.tcc
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert/src/geometry/vector.tcc')
-rw-r--r--2005/i/robert/src/geometry/vector.tcc65
1 files changed, 43 insertions, 22 deletions
diff --git a/2005/i/robert/src/geometry/vector.tcc b/2005/i/robert/src/geometry/vector.tcc
index ddcafd2..e9775c8 100644
--- a/2005/i/robert/src/geometry/vector.tcc
+++ b/2005/i/robert/src/geometry/vector.tcc
@@ -26,15 +26,6 @@ namespace geometry {
template<typename T>
VectorT<T> &
-VectorT<T>::operator= (const VectorT<T> &v)
-{
- x = v.x;
- y = v.y;
- return *this;
-}
-
-template<typename T>
-VectorT<T> &
VectorT<T>::operator+= (const VectorT<T> &v)
{
x += v.x;
@@ -89,49 +80,50 @@ VectorT<T>::operator- (const VectorT<T> &v) const
template<typename T>
VectorT<T>
-VectorT<T>::operator/ (T scalar) const
+VectorT<T>::operator* (T scalar) const
{
VectorT<T> r (*this);
- r /= scalar;
+ r *= scalar;
return r;
}
template<typename T>
VectorT<T>
-VectorT<T>::operator* (T scalar) const
+VectorT<T>::operator/ (T scalar) const
{
VectorT<T> r (*this);
- r *= scalar;
+ r /= scalar;
return r;
}
+/// Produit scalaire.
template<typename T>
-VectorT<T>
-operator* (T scalar, const VectorT<T> &v)
+T
+VectorT<T>::operator* (const VectorT<T> &v) const
{
- VectorT<T> r (v);
- r *= scalar;
- return r;
+ return x * v.x + y * v.y;
}
+/// Calcule la norme.
template<typename T>
T
-VectorT<T>::operator* (const VectorT<T> &v) const
+VectorT::norm (void)
{
- return x * v.x + y * v.y;
+ return sqrt (x * x + y * y);
}
+/// Normalise.
template<typename T>
VectorT<T> &
VectorT<T>::normalize (void)
{
- T norm = sqrt (x * x + y * y);
+ T norm = norm ();
x /= norm;
y /= norm;
return *this;
}
-/// Rotate by PI/2.
+/// Rotation de pi/2.
template<typename T>
VectorT<T> &
VectorT<T>::rotate (void)
@@ -142,6 +134,7 @@ VectorT<T>::rotate (void)
return *this;
}
+/// Rotation.
template<typename T>
VectorT<T> &
VectorT<T>::rotate (T angle)
@@ -153,6 +146,34 @@ VectorT<T>::rotate (T angle)
y = tx * s + y * c;
}
+/// Distance à un autre point.
+template<typename T>
+T
+VectorT::distTo (const VectorT<T> &v) const
+{
+ return sqrt (sqDistTo (v));
+}
+
+/// Distance à un autre point au carré.
+template<typename T>
+T
+VectorT::sqDistTo (const VectorT<T> &v) const
+{
+ double dx = x - v.x;
+ double dy = y - v.y;
+ return dx * dx + dy * dy;
+}
+
+/// Multiplication.
+template<typename T>
+VectorT<T>
+operator* (T scalar, const VectorT<T> &v)
+{
+ VectorT<T> r (v);
+ r *= scalar;
+ return r;
+}
+
template<typename T>
std::ostream &operator<< (std::ostream &os, const VectorT<T> &v)
{