MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mg_cg_forme_volume_ellipsoide.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_cg_forme_volume_ellipsoide.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:54 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
23 #include "mg_cg_modele.h"
24 #include "mg_cg_operateur.h"
25 #include "mg_volume.h"
26 #include "mg_cg_info.h"
28  double centre_x, double centre_y, double centre_z,
29  double direction_x, double direction_y, double direction_z,
30  double rayon_majeur, double rayon_mineur): MG_CG_FORME_VOLUME(mgcg_modele,MG_CG_FORME::PROVENANCE_FORME::PRIMITIVE)
31 {
32  m_centre[0]=centre_x;
33  m_centre[1]=centre_y;
34  m_centre[2]=centre_z;
35  m_direction[0]=direction_x;
36  m_direction[1]=direction_y;
37  m_direction[2]=direction_z;
38  m_rayon_majeur=rayon_majeur;
39  m_rayon_mineur=rayon_mineur;
40 }
41 
43  int etat,
44  long unsigned int num,
45  MG_VOLUME* mg_volume,
46  double centre_x, double centre_y, double centre_z,
47  double direction_x, double direction_y, double direction_z,
48  double rayon_majeur, double rayon_mineur): MG_CG_FORME_VOLUME(mgcg_modele,MG_CG_FORME::PROVENANCE_FORME::PRIMITIVE,etat,num,mg_volume)
49 {
50  m_centre[0]=centre_x;
51  m_centre[1]=centre_y;
52  m_centre[2]=centre_z;
53  m_direction[0]=direction_x;
54  m_direction[1]=direction_y;
55  m_direction[2]=direction_z;
56  m_rayon_majeur=rayon_majeur;
57  m_rayon_mineur=rayon_mineur;
58 }
59 
61 {
62  m_centre[0]=mdd.m_centre[0];
63  m_centre[1]=mdd.m_centre[1];
64  m_centre[2]=mdd.m_centre[2];
65  m_direction[0]=mdd.m_direction[0];
66  m_direction[1]=mdd.m_direction[1];
67  m_direction[2]=mdd.m_direction[2];
70 }
71 
73 {
74 
75 }
76 
78 {
80 }
81 
83 {
84  m_centre[0]=x;
85  change_etat(MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION);
86 }
87 
89 {
90  return m_centre[0];
91 }
92 
94 {
95  m_centre[1]=y;
96  change_etat(MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION);
97 }
98 
100 {
101  return m_centre[1];
102 }
103 
105 {
106  m_centre[2]=z;
107  change_etat(MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION);
108 }
109 
111 {
112  return m_centre[2];
113 }
114 
116 {
117  m_direction[0]=x;
118  change_etat(MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION);
119 }
120 
122 {
123  return m_direction[0];
124 }
125 
127 {
128  m_direction[1]=y;
129  change_etat(MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION);
130 }
131 
133 {
134  return m_direction[1];
135 }
136 
138 {
139  m_direction[2]=z;
140  change_etat(MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION);
141 }
142 
144 {
145  return m_direction[2];
146 }
147 
149 {
150  m_rayon_majeur=rayon_majeur;
151  change_etat(MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION);
152 }
153 
155 {
156  return m_rayon_majeur;
157 }
158 
160 {
161  m_rayon_mineur=rayon_mineur;
162  change_etat(MG_CG_FORME::ETAT_FORME::ATTENTE_RECONSTRUCTION);
163 }
164 
166 {
167  return m_rayon_mineur;
168 }
169 
170 void MG_CG_FORME_VOLUME_ELLIPSOIDE::enregistrer(std::ostream& o, double version)
171 {
172  o << "%" << get_id()
173  << "=MG_CG_FORME_VOLUME_ELLIPSOIDE("
174  << "$"<< m_mgcg_modele->get_id()
175  << "," << m_etat;
176  if(m_etat==MG_CG_FORME::ETAT_FORME::CONSTRUITE)
177  o << ",$"<< m_mg_volume->get_id();
178  else
179  o << ",$-1";
180  o << "," << m_centre[0]
181  << "," << m_centre[1]
182  << "," << m_centre[2]
183  << "," << m_direction[0]
184  << "," << m_direction[1]
185  << "," << m_direction[2]
186  << "," << m_rayon_majeur
187  << "," << m_rayon_mineur;
188  o << "," << get_nb_mgcg_operateur_dependant()
189  << ",(";
190  std::map<long,MG_CG_OPERATEUR*>::iterator it_op;
191  for(MG_CG_OPERATEUR* mgcg_op = get_premier_mgcg_operateur_dependant(it_op);mgcg_op!=NULL;mgcg_op=get_suivant_mgcg_operateur_dependant(it_op))
192  {
193  o << "$" << mgcg_op->get_id();
194  if(it_op!=--m_map_mgcg_operateur_dependant.end()) o << ",";
195  }
196  o << "));" << std::endl;
197  enregistrer_infos(o,version);
198 }
virtual void enregistrer(std::ostream &o, double version)
virtual void change_rayon_majeur(double rayon_majeur)
virtual void change_rayon_mineur(double rayon_mineur)
MG_CG_FORME_VOLUME_ELLIPSOIDE(MG_CG_MODELE *mgcg_modele, double centre_x, double centre_y, double centre_z, double direction_x, double direction_y, double direction_z, double rayon_majeur, double rayon_mineur)
virtual MG_CG_OPERATEUR * get_suivant_mgcg_operateur_dependant(std::map< long, MG_CG_OPERATEUR * >::iterator &it)
virtual MG_CG_OPERATEUR * get_premier_mgcg_operateur_dependant(std::map< long, MG_CG_OPERATEUR * >::iterator &it)
virtual void change_etat(int etat_forme)
Definition: mg_cg_forme.cpp:81
std::map< long, MG_CG_OPERATEUR * > m_map_mgcg_operateur_dependant
Definition: mg_cg_forme.h:89
virtual long get_nb_mgcg_operateur_dependant(void)
Definition: mg_cg_forme.cpp:96
MG_CG_MODELE * m_mgcg_modele
Definition: mg_cg_forme.h:87
unsigned long get_id()