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
143
144
145
146
|
#ifndef DEFVECTEUR_H
#define DEFVECTEUR_H
#include <complex.h>
#include <math.h>
#include <stdio.h>
#include <iostream>
int sign(double a);
/** @brief structure simple permettant de définir un point, un peut comme le Vecteur mais encore plus simple. un Point pouvant être converti en Vecteur et réciproquement*/
double max(double a, double b);
double min(double a, double b);
/** @brief classe permettant de manipuler des Vecteurs et une partie des calculs qui leur est associé sans avoir à se trimballer les 3 coordonnées en vrac*/
/**
libs utilisées dans cette library
@li complex.h : cette lib est utilisée pour calculer la rotation du Vecteur (mais n'est pas utiliser pour le moment)
@li math.h : indispensable pour les calculs qui nécessites des fonctions trigonométriques (sin, cos, tan, asin, acos...)
@li stdio.h : lib utile pour ouvrir un fichier et écrire dedans
@li ostream : utile pour utiliser la sortie standard de la console
*/
class Vecteur{
public:
Vecteur(double vecX = 0, double vecY = 0, double vecZ = 0);
Vecteur(const Vecteur & vec);
virtual ~Vecteur();
void save(FILE* fp);
void load(FILE* fp);
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();
double normeSQR();
Vecteur abs();
Vecteur absX();
Vecteur absY();
Vecteur absZ();
double getx() const;
double gety() const;
double getz() const;
Vecteur getVectX() const;
Vecteur getVectY() const;
Vecteur getVectZ() const;
Vecteur getUnit();
double getAngle(const Vecteur & normale);
void setXYZ(double vecX, double vecY, double vecZ);
void setx(const double x);
void sety(const double y);
void setz(const double z);
void setRotation(double angleTeta, double anglePhi);
float getAngleTeta();
void rotation(double dTeta, double dPhi); void reflexion(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 * (Vecteur vect1, double scal);
friend Vecteur operator * (double scal, Vecteur vect1);
friend Vecteur operator / (Vecteur vect1, 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);
void loadFromConfig(const char * source);
private:
void init(double vecX, double vecY, double vecZ);
///composante sur l'axe des x
double x;
///composante sur l'axe des y
double y;
///composante sur l'axe des z
double z;
};
void pConfig_load_obj(const char * source, Vecteur & v);
///définition d'un Vecteur NULL
extern const Vecteur VECT_NULL;
///définition de la constante de gravitation sur terre
extern const Vecteur GTerre;
#endif
|