next up previous contents
Next: Tracé avec gnuplot Up: LEÇON freefem et gnuplot Previous: Fichier triangulation

Relecture du fichier triangulation

En C l'équivalent du record Pascal s'appelle struct. En tex2html_wrap_inline703 c'est classe. Par exemple une triangulation étant faite de sommets (vertex) et de triangles, on définira la structure suivante:

// fichier lirmicro.cpp

#include <iostream.h>
#include <fstream.h>

//DECLARATIONS
class Vertex { public: float x,y; int where;};
class Triangle { public: int v[3]; int where;};

class Triangulation { public:
               int nv,nt;
               Vertex* v;
               Triangle* t;
      Triangulation(const char* path);
};

//IMPLEMENTATION
Triangulation::Triangulation (const char* path)
{
       int i,j,k,i1;
       ifstream file(path); 
      
       file >> nv >>nt;
       v = new Vertex[nv];
       t = new Triangle[nt];
       for( i=0; i<nv; i++) file >> v[i].x >> v[i].y >> v[i].where;
       for( j=0; j<nt; j++) 
        {  for( k=0; k<3;k++){ file >> i1; t[j].v[k] = --i1;}
           file >> t[j].where;
        }
       file.close();
}

void main()
{  
  Triangulation g("micro.msh");
}


remarque572
On a soustrait 1 aux numéros des sommets lus pour t[j].v[k] en écrivant "- -i1". Ceci est du au fait que les tableaux en C/C++ commencent en 0 alors qu'ils commencent en 1 en FORTRAN. Nous adoptons la convention FORTRAN pour les fichiers car les programmeurs C connaissent cette difficulté et pas toujours les programmeurs FORTRAN.


Pironneau Olivier
Jeudi 12 mars 1998 16:24:39