6.2.24 Le fichier vecteur.h en entier

Nous avons écris tout ça :

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#ifndef DEFVECTEUR_3D_H
#define DEFVECTEUR_3D_H

#include <complex.h>
#include <math.h>
#include <stdio.h>
#include <iostream>
#include <list>
#include <vector>

class Vecteur{
	public:
		//constructeur de Vecteur
		Vecteur(double vecX = 0, double vecY = 0, double vecZ = 0);
		//initialise un vecteur avec une chaîne
		Vecteur(const char * str);
		//constructeur de copie de Vecteur
		Vecteur(const Vecteur & vec);
		//destructeur de Vecteur
		virtual ~Vecteur();
		//sauvegarde des coordonnées du Vecteur dans un ficher ouvert en écriture
		void save(FILE* fp);
		void save2d(FILE* fp);
		//initialisation des coordonnées du Vecteur à partir d'un ficher ouvert en lecture
		void load(FILE* fp);
		//initialisation avec une chaine de caractères
		bool initString(const char * str);
		//redéfinition de l'opérateur =
		Vecteur & operator = (const Vecteur & vect);
		//redéfinition de l'opérateur +=
		Vecteur & operator += (const Vecteur & vect);
		//redéfinition de l'opérateur -=
		Vecteur & operator -= (const Vecteur & vect);
		//redéfinition de l'opérateur *=
		Vecteur & operator *= (double coef);    //redéfinition de l'opérateur *=
		//redéfinition de l'opérateur /=
		Vecteur & operator /= (double coef);
		//redéfinition de l'opérateur -
		Vecteur operator - ();
		//donne la norme euclidienne du Vecteur
		double taille() const;
		//donne la norme du vecteur en coordonnées de Leci-Civita
		double tailleLeviCivita() const;
		//fonction qui calcul et renvoie la norme au carré de *this
		double normeSQR() const;
		//Retourne un Veteur ayant pour composantes les valeurs absolues des composantes de this
		Vecteur abs() const;
		//renvoie un Vecteur qui a un x positif
		Vecteur absX() const;
		//renvoie un Vecteur qui a un y positif
		Vecteur absY() const;
		//renvoie un Vecteur qui a un z positif
		Vecteur absZ() const;
		///renvoie la composante x du Vecteur
		/** @return la composante x du Vecteur
		*/
		inline double getx() const{return p_x;}
		///renvoie la composante y du Vecteur
		/** @return la composante y du Vecteur
		*/
		inline double gety() const{return p_y;}
		///renvoie la composante z du Vecteur
		/** @return la composante z du Vecteur
		*/
		inline double getz() const{return p_z;}
		//donne un Vecteur de la composante x du Vecteur
		Vecteur getVectX() const;
		//donne un Vecteur de la composante y du Vecteur
		Vecteur getVectY() const;
		//donne un Vecteur de la composante z du Vecteur
		Vecteur getVectZ() const;
		//donne un Vecteur (x, y, 0)
		Vecteur getVectXY() const;
		//donne un Vecteur (0, y, z)
		Vecteur getVectYZ() const;
		//donne un Vecteur (x, 0, z)
		Vecteur getVectXZ() const;
		//donne le Vecteur unitaire correspondant au Vecteur courrant
		Vecteur getUnit() const;
		//fonction de calcul d'angle qui doit être plus rapide que le calcul avec des nombres complexes
		double getAngle(const Vecteur & normale) const;
		//fonction qui transforme un vecteur en coordonnées de Leci-Civita (u, v) en un Vecteur normal (x, y, 0) en 2D en tout cas pour l'instant
		Vecteur leviCivitaToVecteur() const;
		//fonction qui initialise les composantes du Vecteur
		void setXYZ(double vecX, double vecY, double vecZ);
		//initialise la composantes x du Vecteur
		void setx(const double x);
		//initialise la composantes y du Vecteur
		void sety(const double y);
		//initialise la composantes z du Vecteur
		void setz(const double z);
		//ajoute une valeur à la composante en x du Vecteur
		void addx(double dx);
		//ajoute une valeur à la composante en y du Vecteur
		void addy(double dy);
		//ajoute une valeur à la composante en z du Vecteur
		void addz(double dz);
		//fonction qui initialise le vecteur avec des angles en coordonnées spériques
		void setRotation(double angleTeta, double anglePhi);
		void setSpheric(double rho, double angleTeta, double anglePhi);
		double getAngleTeta() const;
		//fonction qui calcul la rotation du vecteur avec les variations de ses angles en coordonnées spériques
		void rotation(const Vecteur & axe, double angle);            //change l'orientation du Vecteur
		//fonction qui calcul le réflexion du Vecteur *this par rapport à un vecteur normal
		void reflexion(const Vecteur & normal);
		//addition
		friend Vecteur operator + (const Vecteur & vect1, const Vecteur & vect2);
		//soustraction
		friend Vecteur operator - (const Vecteur & vect1, const Vecteur & vect2);
		//Définition du produit scalaire entre deux Vecteur
		friend double operator * (const Vecteur & vect1, const Vecteur & vect2);
		//mutiplication par un scalaire à droite
		friend Vecteur operator * (const Vecteur & vect, double scal);
		//mutiplication par un scalaire à gauche
		friend Vecteur operator * (double scal, const Vecteur & vect);
		//division par un scalaire
		friend Vecteur operator / (const Vecteur & vect, double scal);
		//Définition  du produit vectoriel
		friend Vecteur operator ^ (const Vecteur & vect1, const Vecteur & vect2);
		//Définition de l'égalité entre deux Vecteur
		friend bool operator == (const Vecteur & vect1, const Vecteur & vect2);
		//Définition de l'inégalité entre deux Vecteur
		friend bool operator != (const Vecteur & vect1, const Vecteur & vect2);
		//permet l'affichage d'un vecteur dans la console
		friend std::ostream & operator << (std::ostream & out, const Vecteur & vecteur);
		//permet l'initialisation d'un Vecteur dans la console où avec un fichier de config
		friend std::istream & operator >> (std::istream & in, Vecteur & v);
		//initialise un Vecteur à partir d'une chaine de type (x,y,z)
		bool loadFromConfig(const char  * source);
	private:
		//initialisation de Vecteur
		void initialisationVecteur(double vecX, double vecY, double vecZ);//initialisation de Vecteur
		
		///composante sur l'axe des x
		double p_x;
		///composante sur l'axe des y
		double p_y;
		///composante sur l'axe des z
		double p_z;
};

#endif

Voici le fichier vecteur.h, si vous voulez le prendre.

Et nous n'en sommes qu'a la moitié.