#include "Vecteur4.h" #include "Matrice4.h" const Vecteur4 VECT4_NULL(0.0,0.0,0.0,0.0); /////////////////////////////////////////////////// // // // Fonctions publiques de la classe Vecteur4 // // // /////////////////////////////////////////////////// ///Constructeur par défaut de Vecteur4 /** @param x : coordonnée en x * @param y : coordonnée en y * @param z : coordonnée en z * @param t : coordonnée en t (pas le temps) */ Vecteur4::Vecteur4(double x, double y, double z, double t){ this->initialisationVecteur4(x, y, z, t); } ///Constructeur de copier de Vecteur4 /** @param other : Vecteur4 à copier */ Vecteur4::Vecteur4(const Vecteur4 & other){ this->copyVecteur4(other); } ///Destructeur de Vecteur4 Vecteur4::~Vecteur4(){ } ///fonction d'initialisation de Vecteur4 /** @param x : coordonnée en x * @param y : coordonnée en y * @param z : coordonnée en z * @param t : coordonnée en t (pas le temps) */ void Vecteur4::setVecteur4(double x, double y, double z, double t){ this->initialisationVecteur4(x, y, z, t); } ///fonction d'initialisation de Vecteur4 /** @param other : Vecteur4 d'initialisation */ void Vecteur4::setVecteur4(const Vecteur4 & other){ this->copyVecteur4(other); } ///fonction qui initialise x /** @param x : coordonnée en x */ void Vecteur4::setX(double x){p_x = x;} ///fonction qui initialise y /** @param y : coordonnée en y */ void Vecteur4::setY(double y){p_y = y;} ///fonction qui initialise z /** @param z : coordonnée en z */ void Vecteur4::setZ(double z){p_z = z;} ///fonction qui initialise t /** @param t : coordonnée en t (pas le temps) */ void Vecteur4::setT(double t){p_t = t;} ///fonction qui renvoie la coordonnée en x /** @return coordonnée en x */ double Vecteur4::getX() const{return p_x;} ///fonction qui renvoie la coordonnée en y /** @return coordonnée en y */ double Vecteur4::getY() const{return p_y;} ///fonction qui renvoie la coordonnée en z /** @return coordonnée en z */ double Vecteur4::getZ() const{return p_z;} ///fonction qui renvoie la coordonnée en t /** @return coordonnée en t */ double Vecteur4::getT() const{return p_t;} /////////////////////////////////////////////// // // // Les opérateurs de la classe Vecteur4 // // // /////////////////////////////////////////////// ///Définition de l'opérateur = de Vecteur4 /** @param other : Vecteur4 à copier * @return Vecteur4 copiée */ Vecteur4 & Vecteur4::operator = (const Vecteur4 & other){ this->copyVecteur4(other); return *this; } ///Définition de l'opérateur - de la classe Vecteur4 /** @return -Vecteur4 */ Vecteur4 Vecteur4::operator - (){ Vecteur4 vect(-p_x, -p_y, -p_z, -p_t); return vect; } ///Définition de l'opérateur -= de la classe Vecteur4 /** @param other : Vecteur4 * @return Vecteur4 */ Vecteur4 & Vecteur4::operator -= (const Vecteur4 & other){ p_x -= other.p_x; p_y -= other.p_y; p_z -= other.p_z; p_t -= other.p_t; return *this; } ///Définition de l'opérateur += de la classe Vecteur4 /** @param other : Vecteur4 * @return Vecteur4 */ Vecteur4 & Vecteur4::operator += (const Vecteur4 & other){ p_x += other.p_x; p_y += other.p_y; p_z += other.p_z; p_t += other.p_t; return *this; } ///Définition de l'opérateur *= de la classe Vecteur4 /** @param nb : nombre * @return Vecteur4 */ Vecteur4 & Vecteur4::operator *= (double nb){ p_x *= nb; p_y *= nb; p_z *= nb; p_t *= nb; return *this; } ///Définition de l'opérateur /= de la classe Vecteur4 /** @param nb : nombre * @return Vecteur4 */ Vecteur4 & Vecteur4::operator /= (double nb){ p_x /= nb; p_y /= nb; p_z /= nb; p_t /= nb; return *this; } //////////////////////////////////////////////////// // // // Les opérateurs amis de la classe Vecteur4 // // // //////////////////////////////////////////////////// ///Définition de l'opérateur ami == de la classe Vecteur4 /** @param other1 : Vecteur4 * @param other2 : Vecteur4 * @return true si other1 et other2 sont égaux, false sinonVecteur4 */ bool operator == (const Vecteur4 & other1, const Vecteur4 & other2){ return (other1.p_x == other2.p_x && other1.p_y == other2.p_y && other1.p_z == other2.p_z && other1.p_t == other2.p_t); } ///Définition de l'opérateur ami != de la classe Vecteur4 /** @param other1 : Vecteur4 * @param other2 : Vecteur4 * @return false si other1 et other2 sont égaux, true sinon */ bool operator != (const Vecteur4 & other1, const Vecteur4 & other2){ return (other1.p_x != other2.p_x || other1.p_y != other2.p_y || other1.p_z != other2.p_z || other1.p_t != other2.p_t); } ///Définition de l'opérateur ami + de la classe Vecteur4 /** @param other1 : Vecteur4 * @param other2 : Vecteur4 * @return Vecteur4 */ Vecteur4 operator + (const Vecteur4 & other1, const Vecteur4 & other2){ Vecteur4 vect(other1.p_x + other2.p_x, other1.p_y + other2.p_y, other1.p_z + other2.p_z, other1.p_t + other2.p_t); return vect; } ///Définition de l'opérateur ami - de la classe Vecteur4 /** @param other1 : Vecteur4 * @param other2 : Vecteur4 * @return Vecteur4 */ Vecteur4 operator - (const Vecteur4 & other1, const Vecteur4 & other2){ Vecteur4 vect(other1.p_x - other2.p_x, other1.p_y - other2.p_y, other1.p_z - other2.p_z, other1.p_t - other2.p_t); return vect; } ///Définition de l'opérateur ami * de la classe Vecteur4 /** @param other1 : Vecteur4 * @param other2 : Vecteur4 * @return Vecteur4 */ double operator * (const Vecteur4 & other1, const Vecteur4 & other2){ return other1.p_x*other2.p_x + other1.p_y*other2.p_y + other1.p_z*other2.p_z + other1.p_t*other2.p_t; } ///définition de la multiplication à gauche du Vecteur4 /** @param other1 : Vecteur4 * @param nb : nombre * @return produit de Vecteur4 et nombre */ Vecteur4 operator * (const Vecteur4 & other1, double nb){ Vecteur4 vect(other1.p_x*nb, other1.p_y*nb, other1.p_z*nb, other1.p_t*nb); return vect; } ///définition de la multiplication à gauche du Vecteur4 /** @param nb : nombre * @param other1 : Vecteur4 * @return produit de Vecteur4 et nombre */ Vecteur4 operator * (double nb, const Vecteur4 & other1){ Vecteur4 vect(other1.p_x*nb, other1.p_y*nb, other1.p_z*nb, other1.p_t*nb); return vect; } ///Définition de l'opérateur ami / de la classe Vecteur4 /** @param other1 : Vecteur4 * @param other2 : Vecteur4 * @return Vecteur4 */ Vecteur4 operator / (const Vecteur4 & other1, double nb){ Vecteur4 vect(other1.p_x/nb, other1.p_y/nb, other1.p_z/nb, other1.p_t/nb); return vect; } ///Définition de l'opérateur ami << de la classe Vecteur4 /** @param out : sortie standart de la console (cout) * @param other : Vecteur4 à affiche dans la console * @return sortie standart de la console (cout) */ std::ostream & operator << (std::ostream & out, const Vecteur4 & other){ out << "(" << other.p_x << "," << other.p_y << "," << other.p_z << "," << other.p_t << ")"; return out; } ///Définition de l'opérateur ami >> de la classe Vecteur4 /** @param in : entrée standart de la console (cin) * @param other : Vecteur4 à initialiser dans la console * @return entrée standart de la console (cin) */ std::istream & operator >> (std::istream & in, Vecteur4 & other){ in >> other.p_x >> other.p_y >> other.p_z >> other.p_t; return in; } ///////////////////////////////////////////////// // // // Fonctions private de la classe Vecteur4 // // // ///////////////////////////////////////////////// ///Fonction d'initialisation de la classe Vecteur4 /** @param x : coordonnée en x * @param y : coordonnée en y * @param z : coordonnée en z * @param t : coordonnée en t (pas le temps) */ void Vecteur4::initialisationVecteur4(double x, double y, double z, double t){ p_x = x; p_y = y; p_z = z; p_t = t; } ///Fonction de copie de la classe Vecteur4 /** @param other : Vecteur4 à copier */ void Vecteur4::copyVecteur4(const Vecteur4 & other){ initialisationVecteur4(other.p_x, other.p_y, other.p_z, other.p_t); }