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:
Vecteur(double vecX = 0, double vecY = 0, double vecZ = 0);
Vecteur(const char * str);
Vecteur(const Vecteur & vec);
virtual ~Vecteur();
void save(FILE* fp);
void save2d(FILE* fp);
void load(FILE* fp);
bool initString(const char * str);
Vecteur & operator = (const Vecteur & vect);
Vecteur & operator += (const Vecteur & vect);
Vecteur & operator -= (const Vecteur & vect);
Vecteur & operator *= (double coef); Vecteur & operator /= (double coef);
Vecteur operator - ();
double taille() const;
double tailleLeviCivita() const;
double normeSQR() const;
Vecteur abs() const;
Vecteur absX() const;
Vecteur absY() const;
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;}
Vecteur getVectX() const;
Vecteur getVectY() const;
Vecteur getVectZ() const;
Vecteur getVectXY() const;
Vecteur getVectYZ() const;
Vecteur getVectXZ() const;
Vecteur getUnit() const;
double getAngle(const Vecteur & normale) const;
Vecteur leviCivitaToVecteur() const;
void setXYZ(double vecX, double vecY, double vecZ);
void setx(const double x);
void sety(const double y);
void setz(const double z);
void addx(double dx);
void addy(double dy);
void addz(double dz);
void setRotation(double angleTeta, double anglePhi);
void setSpheric(double rho, double angleTeta, double anglePhi);
double getAngleTeta() const;
void rotation(const Vecteur & axe, double angle); void reflexion(const Vecteur & normal);
friend Vecteur operator + (const Vecteur & vect1, const Vecteur & vect2);
friend Vecteur operator - (const Vecteur & vect1, const Vecteur & vect2);
friend double operator * (const Vecteur & vect1, const Vecteur & vect2);
friend Vecteur operator * (const Vecteur & vect, double scal);
friend Vecteur operator * (double scal, const Vecteur & vect);
friend Vecteur operator / (const Vecteur & vect, double scal);
friend Vecteur operator ^ (const Vecteur & vect1, const Vecteur & vect2);
friend bool operator == (const Vecteur & vect1, const Vecteur & vect2);
friend bool operator != (const Vecteur & vect1, const Vecteur & vect2);
friend std::ostream & operator << (std::ostream & out, const Vecteur & vecteur);
friend std::istream & operator >> (std::istream & in, Vecteur & v);
bool loadFromConfig(const char * source);
private:
void initialisationVecteur(double vecX, double vecY, double vecZ);
///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
|