]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM/MEDMEM_InterpolationWrappers.hxx
Salome HOME
update from the MedMemory V1.0.1
[modules/med.git] / src / MEDMEM / MEDMEM_InterpolationWrappers.hxx
1
2 #ifndef WRAPPERS_HPP
3 #define WRAPPERS_HPP
4
5 // les classes de wrapping
6
7 template <int DIMENSION> class Wrapper_Noeud
8 {
9 protected :
10   double * coordonnees;
11 public :
12         Wrapper_Noeud():coordonnees(NULL) 
13                 {
14                 }
15         Wrapper_Noeud(const double * coord):coordonnees( (double *) coord) 
16                 {
17                 }
18         ~Wrapper_Noeud() 
19                 {
20                 coordonnees=NULL;
21                 }
22         void positionne(double *place) 
23                 {
24                 coordonnees=place;
25                 }
26         const double & operator[] (int i) const
27                 {
28                 return coordonnees[i];
29                 }
30         double operator[] (int i)
31                 {
32                 return coordonnees[i];
33                 }
34         friend double DistanceInf(const Wrapper_Noeud<DIMENSION> &A,const Wrapper_Noeud<DIMENSION> &B) 
35                 {
36                 double max=0;
37                 double tmp;
38                 for (int i=0;i<DIMENSION;i++)
39                         {
40                         tmp=fabs(A[i]-B[i]);
41                         if (tmp>max) max=tmp;
42                         }
43                 return max;
44                 }
45         friend double DistanceL2(const Wrapper_Noeud<DIMENSION> &A,const Wrapper_Noeud<DIMENSION> &B)  
46                 {
47                 double tmp,somme=0;
48                 for (int i=0;i<DIMENSION;i++)
49                         {
50                         tmp=(A[i]-B[i]);
51                         somme+=tmp*tmp;
52                         }
53                 return sqrt(somme);
54                 }
55         };
56         
57 template <int DIMENSION> class Wrapper_Nuage
58         {
59         protected : 
60                 int nbr_noeuds;
61                 const double *  noeuds;
62                 Wrapper_Noeud<DIMENSION> show;
63         public :
64                 Wrapper_Nuage():nbr_noeuds(0),noeuds(NULL) {}
65                 Wrapper_Nuage( const double * const n, int nn):nbr_noeuds(nn),noeuds(n),show(noeuds) {}
66                 ~Wrapper_Nuage() {noeuds=NULL;}
67                 Wrapper_Noeud<DIMENSION> & operator [] (int i)
68                         {
69                         show.positionne((double *) &noeuds[DIMENSION*i]);
70                         return show;
71                         }
72                 int size() const {return nbr_noeuds;}
73         };
74
75 #endif