MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mg_geom_fonction.cpp
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 //####// mg_geom_fonction.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "gestionversion.h"
25 #include "mg_geom_fonction.h"
26 #include "ot_chaine.h"
27 
28 
30 {
31 }
32 
33 MG_GEOM_FONCTION::MG_GEOM_FONCTION(unsigned long id,int dim):MG_IDENTIFICATEUR(id),dimension(dim)
34 {
35 }
36 
37 
39 {
40 }
41 
42 
43 
45 {
46 lit_courbe(chemin);
47 }
48 
49 
50 
52 {
53 }
54 
55 
56 void MG_GEOM_FONCTION::change(char* chemin)
57 {
58 lst_point.clear();
59 lit_courbe(chemin);
60 }
61 
62 void MG_GEOM_FONCTION::lit_courbe(char* chemin)
63 {
64  FILE* in=fopen(chemin,"rt");
65 char mess[1000];
66 fgets(mess,1000,in);
67 sscanf(mess,"%d",&dimension);
68 OT_CHAINE ot;
69 fgets(mess,1000,in);
70 if (!feof(in))
71 do
72  {
73  std::string chaine=mess;
74  std::vector<std::string> lst=ot.split(chaine,' ');
75  int num=lst.size();
76  if (num==dimension)
77  for (int i=0;i<num;i++)
78  {
79  double val;
80  sscanf(lst[i].c_str(),"%lf",&val);
81  lst_point.push_back(val);
82  }
83  fgets(mess,1000,in);
84  }
85 while (!feof(in));
86 
87 fclose(in);
88 
89 
90 }
91 
92 
93 
94 
95 void MG_GEOM_FONCTION::get_point(int num, double* coo)
96 {
97 for (int i=0;i<dimension;i++)
98  coo[i]=lst_point[dimension*num+i];
99 }
100 
101 
103 {
104 for (int i=0;i<dimension;i++)
105  lst_point.push_back(coo[i]);
106 }
107 
108 
109 void MG_GEOM_FONCTION::change_point(int num, double* coo)
110 {
111 for (int i=0;i<dimension;i++)
112  lst_point[dimension*num+i]=coo[i];
113 }
114 
116 {
117  return (lst_point.size()/dimension);
118 }
119 
120 
121 
122 void MG_GEOM_FONCTION::enregistrer(std::ostream& o,double version)
123 {
124 int num=0;
125 if (dimension!=0) num=lst_point.size()/dimension;
126 o << "%" << get_id() << "=GEOM_FONCTION(" << dimension << "," << num << ",";
127 if (num!=0)
128 {
129  o << "(";
130  for (int i=0;i<num;i++)
131  {
132  o << "(";
133  for (int j=0;j<dimension;j++)
134  if (j!=dimension-1) o << lst_point[dimension*i+j] << ","; else o << lst_point[dimension*i+j];
135  o << ")";
136  if (i!=num-1) o << ",";
137  }
138  o << ")";
139 
140 }
141 o << ");" << std::endl;
142 }
143 
MG_GEOM_FONCTION::get_point
virtual void get_point(int num, double *coo)
Definition: mg_geom_fonction.cpp:95
gestionversion.h
MG_GEOM_FONCTION::~MG_GEOM_FONCTION
virtual ~MG_GEOM_FONCTION()
Definition: mg_geom_fonction.cpp:51
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
MG_GEOM_FONCTION::get_nb_point
virtual int get_nb_point(void)
Definition: mg_geom_fonction.cpp:115
MG_GEOM_FONCTION::lit_courbe
virtual void lit_courbe(char *chemin)
Definition: mg_geom_fonction.cpp:62
OT_CHAINE::split
std::vector< std::string > split(std::string chaine, char c)
Definition: ot_chaine.cpp:187
MG_GEOM_FONCTION::change_point
virtual void change_point(int num, double *coo)
Definition: mg_geom_fonction.cpp:109
OT_CHAINE
Definition: ot_chaine.h:29
MG_GEOM_FONCTION::lst_point
std::vector< double > lst_point
Definition: mg_geom_fonction.h:48
mg_geom_fonction.h
MG_GEOM_FONCTION
Definition: mg_geom_fonction.h:29
MG_GEOM_FONCTION::MG_GEOM_FONCTION
MG_GEOM_FONCTION(int dim)
Definition: mg_geom_fonction.cpp:29
MG_GEOM_FONCTION::dimension
int dimension
Definition: mg_geom_fonction.h:47
MG_GEOM_FONCTION::enregistrer
virtual void enregistrer(std::ostream &o, double version)
Definition: mg_geom_fonction.cpp:122
MG_GEOM_FONCTION::ajouter_point
virtual void ajouter_point(double *coo)
Definition: mg_geom_fonction.cpp:102
ot_chaine.h
MG_IDENTIFICATEUR
Definition: mg_identificateur.h:34
MG_GEOM_FONCTION::change
virtual void change(char *chemin)
Definition: mg_geom_fonction.cpp:56