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];}
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
|
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
|