Simplexus  1.0
Création d'un pavage par des simplexes de dimension N et visualisation graphique en dimension 2.
fileutil.hpp
Go to the documentation of this file.
1 #ifndef _FILEUTIL_H
2 #define _FILEUTIL_H
3 
11 #include <sstream>
12 #include <string>
13 #include <cstring>
14 #include <cstdio>
15 #include <fstream>
16 
26 template<std::size_t N>
27 void loadFromFile(Pavage<N>& pavage, const char* file, bool filter) {
28 
29  std::ifstream infile(file);
30  if (infile.fail()) {
31  std::cerr << "Impossible d'ouvrir le fichier : " << file << std::endl;
32  abort();
33  }
34  std::string line;
35 
36  //On lit la dimension et le nombre de points
37  std::getline(infile, line);
38  std::istringstream is(line);
39  int dim, nb;
40  is >> dim;
41  std::getline(infile, line);
42  std::istringstream is2(line);
43  is2 >> nb;
44  //std::cout << "Lu : dim=" << dim << " nb=" << nb << std::endl;
45 
46  //Si la dimension est différente de celle du pavage, il ne sera pas possible
47  //d'ajouter les points
48  if (dim != N)
49  {
50  std::cerr << "Pas la bonne dimension" << std::endl;
51  abort();
52  }
53  //Sinon, on ajoute les points, a chaque ligne etant associee un point
54  while (std::getline(infile, line))
55  {
56  Point<N> point;
57  //On lit chaque ligne du fichier qui correspond à la description d'un point
58  std::istringstream iss(line);
59  double val;
60 
61  int i = 0;
62  while(iss >> val || !iss.eof()) {
63  if(iss.fail()) {
64  iss.clear();
65  std::string dummy;
66  iss >> dummy;
67  std::cout << "biip.";
68  continue;
69  }
70  if (i!=N){
71  point.setCoord(i, val);
72  }
73  i++;
74  }
75  //Si les valeurs du points sont trop grandes, on ne l'ajoute pas au pavage
76  //dans le cas ou l'on veut filtrer (pour un futur affichage graphique en 2D)
77  if(filter){
78  if (!point.outOfBoundries()){
79  pavage.addPoint(point, val);
80  }
81  }
82 
83  else {
84  //On ajoute un point
85  pavage.addPoint(point, val);
86  }
87  }
88 }
89 #endif
bool outOfBoundries()
Determine si le point est dans une zone statique.
Definition: point.hpp:346
classe representant un pavage consitué de trisimplexe dans un espace de dimension N ...
Definition: pavage.hpp:38
void addPoint(Point< N > &pt, double val)
Ajout d'un point au pavage.
Definition: pavage.hpp:430
void setCoord(unsigned int index, double val)
setter d'une coordonnée du point e la coordonnée d'index index du point
Definition: point.hpp:320
classe representant un point dans un espace de dimension N
Definition: point.hpp:29
void loadFromFile(Pavage< N > &pavage, const char *file, bool filter)
Initialise un pavage avec une séquence de points contenu dans un fichier.
Definition: fileutil.hpp:27