5.1.1.1.3 : Implementation PAbstractVect3_impl.h
First, we have to avoid multiple include :
1 2 3 4 |
#ifndef __PABSTRACT_VECT_3_IMPL_H__ #define __PABSTRACT_VECT_3_IMPL_H__ #include "PAbstractVect3.h" |
Constructors implementation :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
///constructeur de PAbstractVect3 template <typename T> PAbstractVect3<T>::PAbstractVect3(){} ///constructeur de PAbstractVect3 /** @param x : première composante * @param y : deuxième composante */ template <typename T> PAbstractVect3<T>::PAbstractVect3(const T & x, const T & y){ p_values[0] = x; p_values[1] = y; } ///constructeur de PAbstractVect3 /** @param x : première composante * @param y : deuxième composante * @param z : troisième composante */ template <typename T> PAbstractVect3<T>::PAbstractVect3(const T & x, const T & y, const T & z){ p_values[0] = x; p_values[1] = y; p_values[2] = z; } ///constructeur de copie de PAbstractVect3 /** @param other : PAbstractVect3 à copier */ template <typename T> PAbstractVect3<T>::PAbstractVect3(const PAbstractVect3<T> & other){ copyPAbstractVect3(other); } |
Destructors implementation (nothing to do) :
1 2 3 4 5 |
///destructeur de PAbstractVect3 template <typename T> PAbstractVect3<T>::~PAbstractVect3(){ } |
Equal operators :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
///Equal operator /** @param vect : vector to be copied * @return copied vector */ template <typename T> typename PAbstractVect3<T>::PAbstractVect3 & PAbstractVect3<T>::operator = (const PAbstractVect3<T> & vect){ copyPAbstractVect3(vect); return *this; } ///redéfinition de l'opérateur += /** @param vect : PAbstractVect3 * @return PAbstractVect3 */ template <typename T> typename PAbstractVect3<T>::PAbstractVect3 & PAbstractVect3<T>::operator += (const PAbstractVect3<T> & vect){ p_values[0] += vect.p_values[0]; p_values[1] += vect.p_values[1]; p_values[2] += vect.p_values[2]; return *this; } ///redéfinition de l'opérateur -= /** @param vect : PAbstractVect3 * @return PAbstractVect3 */ template <typename T> typename PAbstractVect3<T>::PAbstractVect3 & PAbstractVect3<T>::operator -= (const PAbstractVect3<T> & vect){ p_values[0] -= vect.p_values[0]; p_values[1] -= vect.p_values[1]; p_values[2] -= vect.p_values[2]; return *this; } ///redéfinition de l'opérateur *= avec un T /** @param scal : scalaire * @return PAbstractVect3 */ template <typename T> typename PAbstractVect3<T>::PAbstractVect3 & PAbstractVect3<T>::operator *= (const T & scal){ p_values[0] *= scal; p_values[1] *= scal; p_values[2] *= scal; return *this; } ///redéfinition de l'opérateur /= avec un T /** @param scal : scalaire * @return PAbstractVect3 */ template <typename T> typename PAbstractVect3<T>::PAbstractVect3 & PAbstractVect3<T>::operator /= (const T & scal){ p_values[0] /= scal; p_values[1] /= scal; p_values[2] /= scal; return *this; } ///définition de l'opérateur - /** @return opposé du vecteur courant */ template <typename T> typename PAbstractVect3<T>::PAbstractVect3 PAbstractVect3<T>::operator -() const{ PAbstractVect3<T> result(-p_values[0], -p_values[1], -p_values[2]); return result; } |
Some setters :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
///fonction qui permet d'initialiser les composantes du PAbstractVect3 /** @param x : première composante */ template <typename T> void PAbstractVect3<T>::setComposante(const T & x){ p_values[0] = x; } ///fonction qui permet d'initialiser les composantes du PAbstractVect3 /** @param x : première composante * @param y : deuxième composante */ template <typename T> void PAbstractVect3<T>::setComposante(const T & x, const T & y){ p_values[0] = x; p_values[1] = y; } ///fonction qui permet d'initialiser les composantes du PAbstractVect3 /** @param x : première composante * @param y : deuxième composante * @param z : troisième composante */ template <typename T> void PAbstractVect3<T>::setComposante(const T & x, const T & y, const T & z){ p_values[0] = x; p_values[1] = y; p_values[2] = z; } ///fonction qui initialise la première composante du PAbstractVect3 /** @param x : première composante du PAbstractVect3 */ template <typename T> void PAbstractVect3<T>::setX(const T & x){p_values[0] = x;} ///fonction qui initialise la deuxième composante du PAbstractVect3 /** @param y : deuxième composante du PAbstractVect3 */ template <typename T> void PAbstractVect3<T>::setY(const T & y){p_values[1] = y;} ///fonction qui initialise la troisième composante du PAbstractVect3 /** @param z : troisième composante du PAbstractVect3 */ template <typename T> void PAbstractVect3<T>::setZ(const T & z){p_values[2] = z;} |
Some modifiers :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
///fonction qui ajoute une valeur à la première composante du PAbstractVect3 /** @param dx : valeur à ajouter à la première composante */ template <typename T> void PAbstractVect3<T>::addX(const T & dx){p_values[0] += dx;} ///fonction qui ajoute une valeur à la deuxième composante du PAbstractVect3 /** @param dy : valeur à ajouter à la deuxième composante */ template <typename T> void PAbstractVect3<T>::addY(const T & dy){p_values[1] += dy;} ///fonction qui ajoute une valeur à la troisième composante du PAbstractVect3 /** @param dz : valeur à ajouter à la troisième composante */ template <typename T> void PAbstractVect3<T>::addZ(const T & dz){p_values[2] += dz;} ///fonction qui soustrait une valeur à la première composante du PAbstractVect3 /** @param dx : valeur à soustraire à la première composante */ template <typename T> void PAbstractVect3<T>::sousX(const T & dx){p_values[0] -= dx;} ///fonction qui soustrait une valeur à la deuxième composante du PAbstractVect3 /** @param dy : valeur à soustraire à la deuxième composante */ template <typename T> void PAbstractVect3<T>::sousY(const T & dy){p_values[1] -= dy;} ///fonction qui permet de changer l'échelle de la composante x du vecteur courant /** @param sx : échelle sur l'axe Ox */ template <typename T> void PAbstractVect3<T>::scaleX(const T & sx){ p_values[0] /= sx; } ///fonction qui permet de changer l'échelle de la composante y du vecteur courant /** @param sy : échelle sur l'axe Oy */ template <typename T> void PAbstractVect3<T>::scaleY(const T & sy){ p_values[1] /= sy; } ///fonction qui permet de changer l'échelle de la composante z du vecteur courant /** @param sz : échelle sur l'axe Oz */ template <typename T> void PAbstractVect3<T>::scaleZ(const T & sz){ p_values[2] /= sz; } ///fonction qui permet de changer l'échelle du vecteur courant /** @param sx : échelle sur l'axe Ox * @param sy : échelle sur l'axe Oy * @param sz : échelle sur l'axe Oz */ template <typename T> void PAbstractVect3<T>::scale(const T & sx, const T & sy, const T & sz){ p_values[0] /= sx; p_values[1] /= sy; p_values[2] /= sz; } ///fonction qui soustrait une valeur à la troisième composante du PAbstractVect3 /** @param dz : valeur à soustraire à la troisième composante */ template <typename T> void PAbstractVect3<T>::sousZ(const T & dz){p_values[2] -= dz;} |
Some getters :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
///fonction qui renvoie la valeur de la première composante /** @return valeur de la première composante */ template <typename T> T PAbstractVect3<T>::getX() const{return p_values[0];} ///fonction qui renvoie la valeur de la première composante /** @return valeur de la première composante */ template <typename T> T & PAbstractVect3<T>::getX(){return p_values[0];} ///fonction qui renvoie la valeur de la deuxième composante /** @return valeur de la deuxième composante */ template <typename T> T PAbstractVect3<T>::getY() const{return p_values[1];} ///fonction qui renvoie la valeur de la deuxième composante /** @return valeur de la deuxième composante */ template <typename T> T & PAbstractVect3<T>::getY(){return p_values[1];} ///fonction qui renvoie la valeur de la troisième composante /** @return valeur de la troisième composante */ template <typename T> T PAbstractVect3<T>::getZ() const{return p_values[2];} ///fonction qui renvoie la valeur de la troisième composante /** @return valeur de la troisième composante */ template <typename T> T & PAbstractVect3<T>::getZ(){return p_values[2];} ////////////////////////////////////////////////////////////////// // // // Fonctions privées de la classe PAbstractVect3 // // // ////////////////////////////////////////////////////////////////// |
Copy function :
1 2 3 4 5 6 7 8 9 10 11 12 |
///fonction qui copie un PAbstractVect3 /** @param other : PAbstractVect3 à copier */ template <typename T> void PAbstractVect3<T>::copyPAbstractVect3(const PAbstractVect3<T> & other){ p_values[0] = other.p_values[0]; p_values[1] = other.p_values[1]; p_values[2] = other.p_values[2]; } #endif |