MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
ot_mathematique.h
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// ot_mathematique.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// Derniere modification par francois
20 //####// mar 23 jui 2024 17:34:39 EDT
21 //####//------------------------------------------------------------
22 //####//------------------------------------------------------------
23 #ifndef _OTMATHEMATIQUE_
24 #define _OTMATHEMATIQUE_
25 
26 
27 
28 #include "ot_doubleprecision.h"
29 #include <iostream>
30 #include <map>
31 #include <vector>
32 
33 
35 {
36 public:
37  OT_HISTOGRAMME(void);
38  OT_HISTOGRAMME(double largeur_colonne);
39  OT_HISTOGRAMME(double largeur_colonne,OT_HISTOGRAMME &mdd);
41  ~OT_HISTOGRAMME(void);
42  void fixe_largeur_colonne(double largeur_colonne);
43  double get_largeur_colonne(void);
44  void ajouter_valeur(double x,double val);
45  void ajouter_valeur(long i,double val);
46  int get_valeur(double x,double &val);
47  int get_valeur(long i,double &val);
48  int get_premiere_valeur(std::map<long,double>::iterator &it,double &valeur);
49  int get_suivante_valeur(std::map<long,double>::iterator &it,double &valeur);
50  int get_premiere_valeur(std::map<long,double>::iterator &it,double &valeur,double &borne_min,double &borne_max);
51  int get_suivante_valeur(std::map<long,double>::iterator &it,double &valeur,double &borne_min,double &borne_max);
52  int get_premiere_valeur(std::map<long,double>::iterator &it,double &valeur,long &i);
53  int get_suivante_valeur(std::map<long,double>::iterator &it,double &valeur,long &i);
54  long get_nb_colonne(void);
55  double get_x_min(void);
56  double get_x_max(void);
59  void enregistrer_bin(std::ofstream& ofstr);
60  void ouvrir_bin(std::ifstream& ifstr);
61  void ouvrir_txt(char* nom_fichier);
62  void exporter(std::ofstream& ofstrm);
63 protected:
64  bool m_init;
65  long m_i_min;
66  long m_i_max;
68  std::map<long,double,std::less<long>> m_map_colonne;
69 };
70 
72 {
73 public:
74  OT_QUATERNION(void);
75  OT_QUATERNION(double x,double y,double z,double w);
77  double get_x(void);
78  void change_x(double x);
79  double get_y(void);
80  void change_y(double y);
81  double get_z(void);
82  void change_z(double z);
83  double get_w(void);
84  void change_w(double w);
85 
87 
88 protected:
89  double valeur[4];
90 };
91 
92 
93 
95 {
96 public :
97  // construction
98  OT_VECTEUR_3D(double x,double y,double z);
99  OT_VECTEUR_3D(double *xyz);
100  OT_VECTEUR_3D(double *xyz1,double *xyz2);
101  OT_VECTEUR_3D(void);
102  OT_VECTEUR_3D(const OT_VECTEUR_3D& mdd);
103  OT_VECTEUR_3D unite(int i);
104  virtual ~OT_VECTEUR_3D() {};
105  // stream string output
106  friend std::ostream & operator << ( std::ostream & __os, const OT_VECTEUR_3D & __vec);
107 
108  // comparison
109  bool operator== (const OT_VECTEUR_3D& mdd) const;
110  bool operator!= (const OT_VECTEUR_3D& mdd) const;
111  bool operator< (const OT_VECTEUR_3D& mdd) const;
112  bool operator<= (const OT_VECTEUR_3D& mdd) const;
113  bool operator> (const OT_VECTEUR_3D& mdd) const;
114  bool operator>= (const OT_VECTEUR_3D& mdd) const;
115  int compare_valeur (const OT_VECTEUR_3D& mdd) const;
116 
117  // coordinate access
118  virtual double get_x(void) const ;
119  virtual double get_y(void) const ;
120  virtual double get_z(void) const ;
121  virtual void change_x(double x);
122  virtual void change_y(double y);
123  virtual void change_z(double z);
124  virtual double* get_xyz(void);
125 
126  operator const double* () const;
127  operator double* ();
128  double operator[] (int i) const;
129  double& operator[] (int i);
130  double operator() (int i) const;
131  double & operator() (int i);
132 
133  friend OT_VECTEUR_3D operator / (const OT_VECTEUR_3D& mdd1, double a);
134  friend OT_VECTEUR_3D operator - (const OT_VECTEUR_3D& mdd1);
135  friend double operator*(const OT_VECTEUR_3D& mdd1,const OT_VECTEUR_3D& mdd2);
136  friend OT_VECTEUR_3D operator&(const OT_VECTEUR_3D& mdd1,const OT_VECTEUR_3D& mdd2);
137  friend OT_VECTEUR_3D operator*(const class OT_MATRICE_3D& mdd1,const OT_VECTEUR_3D& mdd2);
138  friend OT_VECTEUR_3D operator+(const OT_VECTEUR_3D& mdd1,const OT_VECTEUR_3D& mdd2);
139  friend OT_VECTEUR_3D operator-(const OT_VECTEUR_3D& mdd1,const OT_VECTEUR_3D& mdd2);
140  friend OT_VECTEUR_3D operator*(double mdd1,const OT_VECTEUR_3D& mdd2);
141 
142  // arithmetic updates
145  OT_VECTEUR_3D& operator*= (double fScalar);
146  OT_VECTEUR_3D& operator/= (double fScalar);
147 
148  // vector operations
149  virtual double get_longueur(void) const ;
150  virtual double get_longueur2(void) const ;
151  virtual void norme(void);
153  virtual double diff(void);
154 
155 
156 private:
157  double valeur[3];
158 };
159 
161 {
162 public:
164  OT_MATRICE_3D(void);
165  OT_MATRICE_3D(double* t);
166  OT_MATRICE_3D(const OT_MATRICE_3D& mdd);
167 
168  // stream string output
169  friend std::ostream & operator << ( std::ostream & __os, const OT_MATRICE_3D & __mat);
170 
171  // access to matrix elements
172  double operator() (int iLigne, int iCol) const;
173  double & operator() (int iLigne, int iCol);
174  double valeur(int iLigne, int iCol) const;
175  double & valeur(int iLigne, int iCol);
182  OT_VECTEUR_3D & operator [](int i);
183  // return inverse matrix
184  OT_MATRICE_3D inverse() const;
185  // assignements methods
186  void identite(void);
187  double get_determinant();
188  void transpose(OT_MATRICE_3D& res) const;
189  OT_MATRICE_3D transpose() const;
190  friend OT_MATRICE_3D operator+(const OT_MATRICE_3D& mdd1,const OT_MATRICE_3D& mdd2);
191 
192 
193 private:
194  OT_VECTEUR_3D vec[3]; // attention ! vecteurs colonne
195  friend OT_VECTEUR_3D operator*(const OT_MATRICE_3D& mdd1,const OT_VECTEUR_3D& mdd2);
196 };
197 
198 std::ostream & operator << ( std::ostream & __os, const OT_MATRICE_3D & __mat);
199 std::ostream & operator << ( std::ostream & __os, const OT_VECTEUR_3D & __vec);
200 OT_VECTEUR_3D operator / (const OT_VECTEUR_3D& mdd1, double a);
202 double operator*(const OT_VECTEUR_3D& mdd1,const OT_VECTEUR_3D& mdd2);
203 OT_VECTEUR_3D operator&(const OT_VECTEUR_3D& mdd1,const OT_VECTEUR_3D& mdd2);
204 OT_VECTEUR_3D operator*(const OT_MATRICE_3D& mdd1,const OT_VECTEUR_3D& mdd2);
205 OT_VECTEUR_3D operator+(const OT_VECTEUR_3D& mdd1,const OT_VECTEUR_3D& mdd2);
207 OT_MATRICE_3D operator*(const OT_MATRICE_3D& mdd1,const OT_MATRICE_3D& mdd2);
208 OT_MATRICE_3D operator+(const OT_MATRICE_3D& mdd1,const OT_MATRICE_3D& mdd2);
209 OT_VECTEUR_3D operator*(double mdd1,const OT_VECTEUR_3D& mdd2);
210 
211 
212 
213 #define ot_vecteur_4d
214 #ifdef ot_vecteur_4d
216 {
217 public :
218  //construction
219  OT_VECTEUR_4D(double x,double y,double z,double w);
220  OT_VECTEUR_4D(double *xyzw);
221  OT_VECTEUR_4D(double *xyz1,double *xyz2);
222  OT_VECTEUR_4D(void) {};
223  OT_VECTEUR_4D(const OT_VECTEUR_4D& mdd);
224  OT_VECTEUR_4D & operator= (double);
225 
226  // stream string output
227  friend std::ostream & operator << ( std::ostream & __os, const OT_VECTEUR_4D & __vec);
228 
229  // comparison
230  bool operator== (const OT_VECTEUR_4D& mdd) const;
231  bool operator!= (const OT_VECTEUR_4D& mdd) const;
232  bool operator< (const OT_VECTEUR_4D& mdd) const;
233  bool operator<= (const OT_VECTEUR_4D& mdd) const;
234  bool operator> (const OT_VECTEUR_4D& mdd) const;
235  bool operator>= (const OT_VECTEUR_4D& mdd) const;
236  // int compare_valeur (const OT_VECTEUR_4D& mdd) const;
237 
238  // coordinate access
239  virtual double get_x(void) const ;
240  virtual double get_y(void) const ;
241  virtual double get_z(void) const ;
242  virtual double get_w(void) const ;
243  virtual double & x(void);
244  virtual double & y(void);
245  virtual double & z(void);
246  virtual double & w(void);
247  virtual void change_x(double x);
248  virtual void change_y(double y);
249  virtual void change_z(double z);
250  virtual void change_w(double w);
251  virtual double* get_xyzw(void);
252  operator const double* () const;
253  operator double* ();
254  double operator[] (int i) const;
255  double& operator[] (int i);
256  double operator() (int i) const;
257  double & operator() (int i);
258 
261  double operator* (const OT_VECTEUR_4D & a);
262 
263  // arithmetic updates
266  OT_VECTEUR_4D& operator*= (double fScalar);
267  OT_VECTEUR_4D& operator/= (double fScalar);
268  virtual double get_longueur(void) const ;
269  virtual double get_longueur2(void) const ;
270 
271 private:
272  double valeur[4];
273 };
274 
275 OT_VECTEUR_4D operator* (const OT_VECTEUR_4D & rkV, const double a);
276 OT_VECTEUR_4D operator* (const double a, const OT_VECTEUR_4D & rkV);
277 OT_VECTEUR_4D operator/ (const OT_VECTEUR_4D & rkV, const double a);
278 OT_VECTEUR_4D operator/ (const double a, const OT_VECTEUR_4D & rkV);
279 std::ostream & operator << ( std::ostream & __os, const OT_VECTEUR_4D & __vec);
280 #endif // ot_vecteur_4d
281 
282 
283 
285 {
286 public :
287  //construction
291  OT_VECTEUR_4DD(const OT_VECTEUR_4DD& mdd);
293 
294  // stream string output
295  friend std::ostream & operator << ( std::ostream & __os, const OT_VECTEUR_4DD & __vec);
296 
297  // comparison
298  bool operator== (const OT_VECTEUR_4DD& mdd) const;
299  bool operator!= (const OT_VECTEUR_4DD& mdd) const;
300  bool operator< (const OT_VECTEUR_4DD& mdd) const;
301  bool operator<= (const OT_VECTEUR_4DD& mdd) const;
302  bool operator> (const OT_VECTEUR_4DD& mdd) const;
303  bool operator>= (const OT_VECTEUR_4DD& mdd) const;
304  int compare_valeur (const OT_VECTEUR_4DD& mdd) const;
305 
306  // coordinate access
307  virtual double2 get_x(void) const ;
308  virtual double2 get_y(void) const ;
309  virtual double2 get_z(void) const ;
310  virtual double2 get_w(void) const ;
311  virtual double2 & x(void);
312  virtual double2 & y(void);
313  virtual double2 & z(void);
314  virtual double2 & w(void);
315  virtual void change_x(double2 x);
316  virtual void change_y(double2 y);
317  virtual void change_z(double2 z);
318  virtual void change_w(double2 w);
319  virtual double2* get_xyzw(void);
320  double2 norme();
323  operator const double2* () const;
324  operator double2* ();
325  double2 operator[] (int i) const;
326  double2& operator[] (int i);
327  double2 operator() (int i) const;
328  double2 & operator() (int i);
329 
333 
334  // arithmetic updates
340  bool est_nul(void);
341  bool est_nul_3d(void);
342 
343 
344 private:
346 };
347 
348 
349 
351 {
352 public :
353  //construction
356  OT_VECTEUR_3DD(double2 *xyz1,double2 *xyz2);
358  OT_VECTEUR_3DD(const OT_VECTEUR_3DD& mdd);
360 
361  // stream string output
362  friend std::ostream & operator << ( std::ostream & __os, const OT_VECTEUR_3DD & __vec);
363 
364  // comparison
365  bool operator== (const OT_VECTEUR_3DD& mdd) const;
366  bool operator!= (const OT_VECTEUR_3DD& mdd) const;
367  bool operator< (const OT_VECTEUR_3DD& mdd) const;
368  bool operator<= (const OT_VECTEUR_3DD& mdd) const;
369  bool operator> (const OT_VECTEUR_3DD& mdd) const;
370  bool operator>= (const OT_VECTEUR_3DD& mdd) const;
371  int compare_valeur (const OT_VECTEUR_3DD& mdd) const;
372 
373  // coordinate access
374  virtual double2 get_x(void) const ;
375  virtual double2 get_y(void) const ;
376  virtual double2 get_z(void) const ;
377  virtual double2 & x(void);
378  virtual double2 & y(void);
379  virtual double2 & z(void);
380  virtual void change_x(double2 x);
381  virtual void change_y(double2 y);
382  virtual void change_z(double2 z);
383  virtual double2* get_xyz(void);
384  double2 norme();
386  virtual double2 get_longueur(void) ;
387  virtual double2 get_longueur2(void) ;
388  operator const double2* () const;
389  operator double2* ();
390  double2 operator[] (int i) const;
391  double2& operator[] (int i);
392  double2 operator() (int i) const;
393  double2 & operator() (int i);
394 
398 
399  // arithmetic updates
405 
406 
407 private:
409 };
410 
411 
412 
413 
414 
415 
416 OT_VECTEUR_4DD operator* (const OT_VECTEUR_4DD & rkV, const double2 a);
417 OT_VECTEUR_4DD operator* (const double2 a, const OT_VECTEUR_4DD & rkV);
418 OT_VECTEUR_4DD operator/ (const OT_VECTEUR_4DD & rkV, const double2 a);
419 OT_VECTEUR_4DD operator/ (const double2 a, const OT_VECTEUR_4DD & rkV);
420 std::ostream & operator << ( std::ostream & __os, const OT_VECTEUR_4DD & __vec);
421 OT_VECTEUR_3DD operator* (const OT_VECTEUR_3DD & rkV, const double2 a);
422 OT_VECTEUR_3DD operator* (const double2 a, const OT_VECTEUR_3DD & rkV);
423 OT_VECTEUR_3DD operator/ (const OT_VECTEUR_3DD & rkV, const double2 a);
424 OT_VECTEUR_3DD operator/ (const double2 a, const OT_VECTEUR_3DD & rkV);
425 std::ostream & operator << ( std::ostream & __os, const OT_VECTEUR_4DD & __vec);
426 
427 
428 
429 
430 
431 
433 {
434 public:
436 
437  static int egal(double a,double b,double eps);
438  static int egal(double *xyz1,double *xyz2,double eps);
439  static double qualite_triangle(double* noeud1,double* noeud2,double* noeud3);
440  static double qualite_tetra(double* noeud1,double* noeud2,double* noeud3,double *noeud4);
441  static void doubleto2int(double val,int& val1,int& val2);
442  static int estdansletetra(double *xyz1,double *xyz2,double *xyz3,double *xyz4,double x,double y, double z);
443  static int estdansletriangle(double *xyz1,double *xyz2,double *xyz3,double x,double y, double z);
444  static int projeteestdansletriangle(double *xyz1,double *xyz2,double *xyz3,double x,double y, double z);
445  static void projetedansletriangle(double *xyz1,double *xyz2,double *xyz3,double x,double y, double z,double &xx,double &yy,double &zz);
446  static void calculeparamEFdansletriangle(double *xyz1,double *xyz2,double *xyz3,double x,double y, double z,double &xsi,double &eta);
447 
448  static int compare_etat_tetra(int etat,int valeur);
449  static int compare_etat_triangle(int etat,int valeur);
450 
451  static double taille_tetra(double* noeud1,double* noeud2,double* noeud3,double *noeud4);
452  static double taille_triangle(double* noeud1,double* noeud2,double* noeud3);
453 };
454 
455 
456 template <int N=4>
457 class DOUBLEN
458 {
459 public:
460  DOUBLEN();
461  DOUBLEN(double *v);
462  DOUBLEN(DOUBLEN& mdd);
463  DOUBLEN(const DOUBLEN& mdd);
464  ~DOUBLEN();
465  double get_valeur(int num);
466  void change_valeur(int num,double val);
468  DOUBLEN<N> & operator=(const DOUBLEN<N> & mdd);
469 private:
470  double tab[N];
471 };
472 
473 struct lessOT_VECTEUR_4DD : std::binary_function<OT_VECTEUR_4DD, OT_VECTEUR_4DD, bool>
474 {
476  {
477  if (v1[0]!=v2[0]) return v1[0]<v2[0] ;
478  if (v1[1]!=v2[1]) return v1[1]<v2[1] ;
479  if (v1[2]!=v2[2]) return v1[2]<v2[2] ;
480  if (v1[3]!=v2[3]) return v1[3]<v2[3] ;
481  return 0;
482 
483  }
484  ;
485 };
486 
487 struct lessOT_VECTEUR_3DD : std::binary_function<OT_VECTEUR_3DD, OT_VECTEUR_3DD, bool>
488 {
490  {
491  if (v1[0]!=v2[0]) return v1[0]<v2[0] ;
492  if (v1[1]!=v2[1]) return v1[1]<v2[1] ;
493  if (v1[2]!=v2[2]) return v1[2]<v2[2] ;
494  return 0;
495 
496  }
497  ;
498 };
499 
500 
501 #endif
void change_valeur(int num, double val)
double get_valeur(int num)
DOUBLEN< N > & operator=(DOUBLEN< N > &mdd)
DOUBLEN(const DOUBLEN &mdd)
double tab[N]
static int estdansletriangle(double *xyz1, double *xyz2, double *xyz3, double x, double y, double z)
static void calculeparamEFdansletriangle(double *xyz1, double *xyz2, double *xyz3, double x, double y, double z, double &xsi, double &eta)
static int egal(double a, double b, double eps)
static double qualite_triangle(double *noeud1, double *noeud2, double *noeud3)
static int projeteestdansletriangle(double *xyz1, double *xyz2, double *xyz3, double x, double y, double z)
static double taille_tetra(double *noeud1, double *noeud2, double *noeud3, double *noeud4)
static double qualite_tetra(double *noeud1, double *noeud2, double *noeud3, double *noeud4)
static void doubleto2int(double val, int &val1, int &val2)
static int compare_etat_triangle(int etat, int valeur)
static int estdansletetra(double *xyz1, double *xyz2, double *xyz3, double *xyz4, double x, double y, double z)
static double taille_triangle(double *noeud1, double *noeud2, double *noeud3)
static int compare_etat_tetra(int etat, int valeur)
static void projetedansletriangle(double *xyz1, double *xyz2, double *xyz3, double x, double y, double z, double &xx, double &yy, double &zz)
void ouvrir_bin(std::ifstream &ifstr)
OT_HISTOGRAMME & operator=(OT_HISTOGRAMME &mdd)
int get_premiere_valeur(std::map< long, double >::iterator &it, double &valeur, long &i)
std::map< long, double, std::less< long > > m_map_colonne
double get_largeur_colonne(void)
int get_suivante_valeur(std::map< long, double >::iterator &it, double &valeur)
void ajouter_valeur(double x, double val)
double get_x_min(void)
void fixe_largeur_colonne(double largeur_colonne)
int get_premiere_valeur(std::map< long, double >::iterator &it, double &valeur)
void exporter(std::ofstream &ofstrm)
double m_largeur_colonne
int get_suivante_valeur(std::map< long, double >::iterator &it, double &valeur, long &i)
void ouvrir_txt(char *nom_fichier)
int get_valeur(double x, double &val)
double get_x_max(void)
void enregistrer_bin(std::ofstream &ofstr)
void ajouter_valeur(long i, double val)
long get_nb_colonne(void)
OT_VECTEUR_3D & operator[](int i)
OT_MATRICE_3D transpose() const
friend OT_MATRICE_3D operator+(const OT_MATRICE_3D &mdd1, const OT_MATRICE_3D &mdd2)
OT_VECTEUR_3D & get_vecteur2(void)
void change_vecteur3(OT_VECTEUR_3D v)
OT_MATRICE_3D inverse() const
OT_VECTEUR_3D & get_vecteur3(void)
double operator()(int iLigne, int iCol) const
friend OT_VECTEUR_3D operator*(const OT_MATRICE_3D &mdd1, const OT_VECTEUR_3D &mdd2)
OT_VECTEUR_3D vec[3]
void change_vecteur1(OT_VECTEUR_3D v)
void change_vecteur2(OT_VECTEUR_3D v)
void identite(void)
double valeur(int iLigne, int iCol) const
friend std::ostream & operator<<(std::ostream &__os, const OT_MATRICE_3D &__mat)
OT_VECTEUR_3D & get_vecteur1(void)
double get_determinant()
void change_z(double z)
OT_QUATERNION & operator=(OT_QUATERNION &mdd)
double get_z(void)
double valeur[4]
void change_w(double w)
double get_y(void)
void change_x(double x)
double get_x(void)
double get_w(void)
void change_y(double y)
OT_VECTEUR_3DD vecteur_norme()
OT_VECTEUR_3DD operator-(const OT_VECTEUR_3DD &rkV)
OT_VECTEUR_3DD & operator=(const OT_VECTEUR_3DD &)
virtual double2 get_x(void) const
bool operator>=(const OT_VECTEUR_3DD &mdd) const
virtual double2 & x(void)
OT_VECTEUR_3DD & operator+=(const OT_VECTEUR_3DD &rkV)
double2 operator()(int i) const
OT_VECTEUR_3DD operator&(const OT_VECTEUR_3DD &v2)
virtual double2 get_longueur(void)
virtual void change_y(double2 y)
int compare_valeur(const OT_VECTEUR_3DD &mdd) const
virtual double2 & y(void)
bool operator!=(const OT_VECTEUR_3DD &mdd) const
bool operator>(const OT_VECTEUR_3DD &mdd) const
double2 valeur[3]
OT_VECTEUR_3DD & operator-=(const OT_VECTEUR_3DD &rkV)
double2 operator*(const OT_VECTEUR_3DD &a)
double2 operator[](int i) const
bool operator<=(const OT_VECTEUR_3DD &mdd) const
virtual double2 & z(void)
virtual double2 get_z(void) const
friend std::ostream & operator<<(std::ostream &__os, const OT_VECTEUR_3DD &__vec)
virtual double2 get_longueur2(void)
OT_VECTEUR_3DD & operator*=(double2 fScalar)
OT_VECTEUR_3DD(double2 *xyzw)
virtual void change_x(double2 x)
bool operator==(const OT_VECTEUR_3DD &mdd) const
virtual double2 * get_xyz(void)
OT_VECTEUR_3DD & operator/=(double2 fScalar)
virtual void change_z(double2 z)
bool operator<(const OT_VECTEUR_3DD &mdd) const
virtual double2 get_y(void) const
OT_VECTEUR_3DD operator+(const OT_VECTEUR_3DD &rkV)
virtual double get_z(void) const
OT_VECTEUR_3D & operator/=(double fScalar)
bool operator>(const OT_VECTEUR_3D &mdd) const
OT_VECTEUR_3D unite(int i)
friend OT_VECTEUR_3D operator/(const OT_VECTEUR_3D &mdd1, double a)
friend std::ostream & operator<<(std::ostream &__os, const OT_VECTEUR_3D &__vec)
friend OT_VECTEUR_3D operator-(const OT_VECTEUR_3D &mdd1)
OT_VECTEUR_3D & operator*=(double fScalar)
virtual double * get_xyz(void)
virtual void change_x(double x)
virtual double diff(void)
bool operator<(const OT_VECTEUR_3D &mdd) const
bool operator>=(const OT_VECTEUR_3D &mdd) const
bool operator<=(const OT_VECTEUR_3D &mdd) const
OT_VECTEUR_3D gram_shmidt(const OT_VECTEUR_3D &vint)
bool operator!=(const OT_VECTEUR_3D &mdd) const
double operator[](int i) const
friend OT_VECTEUR_3D operator&(const OT_VECTEUR_3D &mdd1, const OT_VECTEUR_3D &mdd2)
friend OT_VECTEUR_3D operator-(const OT_VECTEUR_3D &mdd1, const OT_VECTEUR_3D &mdd2)
virtual void change_z(double z)
virtual double get_longueur(void) const
virtual double get_y(void) const
friend OT_VECTEUR_3D operator+(const OT_VECTEUR_3D &mdd1, const OT_VECTEUR_3D &mdd2)
double operator()(int i) const
double valeur[3]
OT_VECTEUR_3D & operator-=(const OT_VECTEUR_3D &rkV)
OT_VECTEUR_3D & operator+=(const OT_VECTEUR_3D &rkV)
virtual double get_x(void) const
virtual double get_longueur2(void) const
friend OT_VECTEUR_3D operator*(const class OT_MATRICE_3D &mdd1, const OT_VECTEUR_3D &mdd2)
bool operator==(const OT_VECTEUR_3D &mdd) const
int compare_valeur(const OT_VECTEUR_3D &mdd) const
virtual void change_y(double y)
virtual void norme(void)
virtual ~OT_VECTEUR_3D()
friend double operator*(const OT_VECTEUR_3D &mdd1, const OT_VECTEUR_3D &mdd2)
virtual void change_y(double2 y)
OT_VECTEUR_4DD vecteur_norme()
virtual double2 & z(void)
OT_VECTEUR_4DD & operator+=(const OT_VECTEUR_4DD &rkV)
bool operator>=(const OT_VECTEUR_4DD &mdd) const
double2 operator*(const OT_VECTEUR_4DD &a)
bool operator<(const OT_VECTEUR_4DD &mdd) const
OT_VECTEUR_4DD(double2 *xyzw)
bool operator>(const OT_VECTEUR_4DD &mdd) const
virtual void change_x(double2 x)
virtual double2 get_y(void) const
virtual double2 get_w(void) const
OT_VECTEUR_4DD operator-(const OT_VECTEUR_4DD &rkV)
double2 valeur[4]
virtual double2 & w(void)
bool operator==(const OT_VECTEUR_4DD &mdd) const
virtual void change_z(double2 z)
double2 operator[](int i) const
OT_VECTEUR_4DD & operator-=(const OT_VECTEUR_4DD &rkV)
double2 operator()(int i) const
virtual double2 * get_xyzw(void)
virtual void change_w(double2 w)
bool operator<=(const OT_VECTEUR_4DD &mdd) const
OT_VECTEUR_4DD vecteur_norme_3d()
OT_VECTEUR_4DD & operator/=(double2 fScalar)
OT_VECTEUR_4DD operator^(const OT_VECTEUR_4DD &v2)
OT_VECTEUR_4DD & operator*=(double2 fScalar)
int compare_valeur(const OT_VECTEUR_4DD &mdd) const
virtual double2 & y(void)
bool operator!=(const OT_VECTEUR_4DD &mdd) const
virtual double2 get_z(void) const
OT_VECTEUR_4DD operator+(const OT_VECTEUR_4DD &rkV)
friend std::ostream & operator<<(std::ostream &__os, const OT_VECTEUR_4DD &__vec)
virtual double2 & x(void)
OT_VECTEUR_4DD & operator=(const OT_VECTEUR_4DD &)
virtual double2 get_x(void) const
virtual double get_y(void) const
OT_VECTEUR_4D & operator-=(const OT_VECTEUR_4D &rkV)
virtual void change_w(double w)
virtual void change_y(double y)
bool operator>=(const OT_VECTEUR_4D &mdd) const
OT_VECTEUR_4D & operator/=(double fScalar)
double valeur[4]
virtual void change_z(double z)
double operator[](int i) const
bool operator>(const OT_VECTEUR_4D &mdd) const
double operator()(int i) const
OT_VECTEUR_4D operator-(const OT_VECTEUR_4D &rkV)
virtual double & w(void)
virtual double & z(void)
virtual double get_longueur(void) const
bool operator!=(const OT_VECTEUR_4D &mdd) const
OT_VECTEUR_4D & operator+=(const OT_VECTEUR_4D &rkV)
virtual double * get_xyzw(void)
virtual double get_longueur2(void) const
OT_VECTEUR_4D & operator*=(double fScalar)
bool operator==(const OT_VECTEUR_4D &mdd) const
bool operator<(const OT_VECTEUR_4D &mdd) const
OT_VECTEUR_4D & operator=(double)
virtual double get_x(void) const
virtual void change_x(double x)
virtual double & y(void)
virtual double get_w(void) const
virtual double & x(void)
friend std::ostream & operator<<(std::ostream &__os, const OT_VECTEUR_4D &__vec)
bool operator<=(const OT_VECTEUR_4D &mdd) const
double operator*(const OT_VECTEUR_4D &a)
OT_VECTEUR_4D(double *xyzw)
OT_VECTEUR_4D operator+(const OT_VECTEUR_4D &rkV)
virtual double get_z(void) const
OT_VECTEUR_3D operator/(const OT_VECTEUR_3D &mdd1, double a)
OT_VECTEUR_3D operator-(const OT_VECTEUR_3D &mdd1)
OT_VECTEUR_3D operator&(const OT_VECTEUR_3D &mdd1, const OT_VECTEUR_3D &mdd2)
OT_VECTEUR_3D operator+(const OT_VECTEUR_3D &mdd1, const OT_VECTEUR_3D &mdd2)
std::ostream & operator<<(std::ostream &__os, const OT_MATRICE_3D &__mat)
double operator*(const OT_VECTEUR_3D &mdd1, const OT_VECTEUR_3D &mdd2)
#define a(i, j)
#define res(i, j)
bool operator()(OT_VECTEUR_3DD v1, OT_VECTEUR_3DD v2)
bool operator()(OT_VECTEUR_4DD v1, OT_VECTEUR_4DD v2)