MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mg_quadrangle.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_quadrangle.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:53 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "gestionversion.h"
25 #include "mg_quadrangle.h"
26 #include "mg_hexa.h"
27 #include "mg_maillage.h"
28 #include "ot_decalage_parametre.h"
29 
30 MG_QUADRANGLE::MG_QUADRANGLE(unsigned long num,MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_NOEUD *mgnoeud4,class MG_SEGMENT* mgsegment1,class MG_SEGMENT* mgsegment2,class MG_SEGMENT* mgsegment3,class MG_SEGMENT* mgsegment4,int origine):MG_ELEMENT_MAILLAGE(num,topo,origine),noeud1(mgnoeud1),noeud2(mgnoeud2),noeud3(mgnoeud3),noeud4(mgnoeud4),segment1(mgsegment1),segment2(mgsegment2),segment3(mgsegment3),segment4(mgsegment4)
31 {
33 }
34 
35 MG_QUADRANGLE::MG_QUADRANGLE(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_NOEUD *mgnoeud4,class MG_SEGMENT* mgsegment1,class MG_SEGMENT* mgsegment2,class MG_SEGMENT* mgsegment3,class MG_SEGMENT* mgsegment4,int origine):MG_ELEMENT_MAILLAGE(topo,origine),noeud1(mgnoeud1),noeud2(mgnoeud2),noeud3(mgnoeud3),noeud4(mgnoeud4),segment1(mgsegment1),segment2(mgsegment2),segment3(mgsegment3),segment4(mgsegment4)
36 {
38 }
39 
41 {
43 }
44 
46 {
47  MG_NOEUD* nd1=mgmai->get_mg_noeudid(noeud1->get_id()+decalage);
48  MG_NOEUD* nd2=mgmai->get_mg_noeudid(noeud2->get_id()+decalage);
49  MG_NOEUD* nd3=mgmai->get_mg_noeudid(noeud3->get_id()+decalage);
50  MG_NOEUD* nd4=mgmai->get_mg_noeudid(noeud4->get_id()+decalage);
51  MG_SEGMENT* seg1=mgmai->get_mg_segmentid(segment1->get_id()+decalage);
52  MG_SEGMENT* seg2=mgmai->get_mg_segmentid(segment2->get_id()+decalage);
53  MG_SEGMENT* seg3=mgmai->get_mg_segmentid(segment3->get_id()+decalage);
54  MG_SEGMENT* seg4=mgmai->get_mg_segmentid(segment4->get_id()+decalage);
55  MG_QUADRANGLE* quad=new MG_QUADRANGLE(this->get_id()+decalage,liaison_topologique,nd1,nd2,nd3,nd4,seg1,seg2,seg3,seg4,MAGIC::ORIGINE::DUPLIQUER);
56  mgmai->ajouter_mg_quadrangle(quad);
57  return quad;
58 }
59 
60 
61 
63 {
64  if (noeud1!=NULL) noeud1->get_lien_quadrangle()->supprimer(this);
65  if (noeud2!=NULL) noeud2->get_lien_quadrangle()->supprimer(this);
66  if (noeud3!=NULL) noeud3->get_lien_quadrangle()->supprimer(this);
67  if (noeud4!=NULL) noeud4->get_lien_quadrangle()->supprimer(this);
68  unsigned long noeudminid=std::min(noeud1->get_id(),noeud2->get_id());
69  noeudminid=std::min(noeudminid,noeud3->get_id());
70  noeudminid=std::min(noeudminid,noeud4->get_id());
71  if (noeud1!=NULL)
72  if (noeud1->get_id()==noeudminid) noeud1->get_lien_petit_quadrangle()->supprimer(this);
73  if (noeud2!=NULL)
74  if (noeud2->get_id()==noeudminid) noeud2->get_lien_petit_quadrangle()->supprimer(this);
75  if (noeud3!=NULL)
76  if (noeud3->get_id()==noeudminid) noeud3->get_lien_petit_quadrangle()->supprimer(this);
77  if (noeud4!=NULL)
78  if (noeud4->get_id()==noeudminid) noeud4->get_lien_petit_quadrangle()->supprimer(this);
79  if (segment1!=NULL) {
82  }
83  if (segment2!=NULL) {
86  }
87  if (segment3!=NULL) {
90  }
91  if (segment4!=NULL) {
94  }
95  if (liaison_topologique!=NULL)
97 }
98 
100 {
101  if (noeud1!=NULL) noeud1->get_lien_quadrangle()->ajouter(this);
102  if (noeud2!=NULL) noeud2->get_lien_quadrangle()->ajouter(this);
103  if (noeud3!=NULL) noeud3->get_lien_quadrangle()->ajouter(this);
104  if (noeud4!=NULL) noeud4->get_lien_quadrangle()->ajouter(this);
105  unsigned long noeudminid=std::min(noeud1->get_id(),noeud2->get_id());
106  noeudminid=std::min(noeudminid,noeud3->get_id());
107  noeudminid=std::min(noeudminid,noeud4->get_id());
108  if (noeud1!=NULL)
109  if (noeud1->get_id()==noeudminid) noeud1->get_lien_petit_quadrangle()->ajouter(this);
110  if (noeud2!=NULL)
111  if (noeud2->get_id()==noeudminid) noeud2->get_lien_petit_quadrangle()->ajouter(this);
112  if (noeud3!=NULL)
113  if (noeud3->get_id()==noeudminid) noeud3->get_lien_petit_quadrangle()->ajouter(this);
114  if (noeud4!=NULL)
115  if (noeud4->get_id()==noeudminid) noeud4->get_lien_petit_quadrangle()->ajouter(this);
116  if (segment1!=NULL) {
119  }
120  if (segment2!=NULL) {
123  }
124  if (segment3!=NULL) {
127  }
128  if (segment4!=NULL) {
131  }
132  if ( (segment1!=NULL) && (segment2!=NULL)&& (segment3!=NULL) && (segment4!=NULL) ) longueur=0.25*(segment1->get_longueur()+segment2->get_longueur()+segment3->get_longueur()+segment4->get_longueur());
133  if (liaison_topologique==NULL) return;
135 }
136 
137 
139 {
141 }
142 
143 
144 
146 {
147  return noeud1;
148 }
149 
151 {
152  return noeud2;
153 }
154 
155 
157 {
158  return noeud3;
159 }
160 
162 {
163  return noeud4;
164 }
165 
167 {
168  return segment1;
169 }
170 
172 {
173  return segment2;
174 }
175 
177 {
178  return segment3;
179 }
180 
182 {
183  return segment4;
184 }
185 
187 {
188 MG_NOEUD *noeud=noeud4;
189 noeud4=noeud2;
190 noeud2=noeud;
191 MG_SEGMENT *segment=segment4;
193 segment2=segment;
194 }
195 
197 {
198  return 2;
199 }
200 
202 {
203  return longueur;
204 }
205 
207 {
208  return &hexa;
209 }
210 
212 {
213  return &penta;
214 }
215 
217 {
218  return &pyramide;
219 }
220 
221 BOITE_2D MG_QUADRANGLE::get_boite_2D(double periodeu,double periodev)
222 {
223  OT_DECALAGE_PARAMETRE decalage(periodeu,periodev);
224 
225  double coouv1[2];
226  double coouv2[2];
227  double coouv3[2];
228  double coouv4[2];
229  coouv1[0]=noeud1->get_u();
230  coouv1[1]=noeud1->get_v();
231  coouv2[0]=noeud2->get_u();
232  coouv2[1]=noeud2->get_v();
233  coouv3[0]=noeud3->get_u();
234  coouv3[1]=noeud3->get_v();
235  coouv4[0]=noeud4->get_u();
236  coouv4[1]=noeud4->get_v();
237  double coouvd1[2];
238  double coouvd2[2];
239  double coouvd3[2];
240  double coouvd4[2];
241  double du=decalage.calcul_decalage_parametre_u(coouv1[0]);
242  double dv=decalage.calcul_decalage_parametre_v(coouv1[1]);
243  coouvd1[0]=decalage.decalage_parametre_u(coouv1[0],du);
244  coouvd1[1]=decalage.decalage_parametre_v(coouv1[1],dv);
245  coouvd2[0]=decalage.decalage_parametre_u(coouv2[0],du);
246  coouvd2[1]=decalage.decalage_parametre_v(coouv2[1],dv);
247  coouvd3[0]=decalage.decalage_parametre_u(coouv3[0],du);
248  coouvd3[1]=decalage.decalage_parametre_v(coouv3[1],dv);
249  coouvd4[0]=decalage.decalage_parametre_u(coouv4[0],du);
250  coouvd4[1]=decalage.decalage_parametre_v(coouv4[1],dv);
251  double umin,vmin,umax,vmax;
252  umin=std::min(coouvd1[0],coouvd2[0]);
253  umin=std::min(umin,coouvd3[0]);
254  umin=std::min(umin,coouvd4[0]);
255  umax=std::max(coouvd1[0],coouvd2[0]);
256  umax=std::max(umax,coouvd3[0]);
257  umax=std::max(umax,coouvd4[0]);
258  vmin=std::min(coouvd1[1],coouvd2[1]);
259  vmin=std::min(vmin,coouvd3[1]);
260  vmin=std::min(vmin,coouvd4[1]);
261  vmax=std::max(coouv1[1],coouvd2[1]);
262  vmax=std::max(vmax,coouvd3[1]);
263  vmax=std::max(vmax,coouvd4[1]);
264  umin=umin-du;
265  umax=umax-du;
266  vmin=vmin-dv;
267  vmax=vmax-dv;
268  BOITE_2D boite(umin,vmin,umax,vmax);
269  return boite;
270 }
271 
273 {
274  double coo1[3];
275  double coo2[3];
276  double coo3[3];
277  double coo4[3];
278  coo1[0]=noeud1->get_x();
279  coo1[1]=noeud1->get_y();
280  coo1[2]=noeud1->get_z();
281  coo2[0]=noeud2->get_x();
282  coo2[1]=noeud2->get_y();
283  coo2[2]=noeud2->get_z();
284  coo3[0]=noeud3->get_x();
285  coo3[1]=noeud3->get_y();
286  coo3[2]=noeud3->get_z();
287  coo4[0]=noeud4->get_x();
288  coo4[1]=noeud4->get_y();
289  coo4[2]=noeud4->get_z();
290  double xmin,ymin,zmin,xmax,ymax,zmax;
291  xmin=std::min(coo1[0],coo2[0]);
292  xmin=std::min(xmin,coo3[0]);
293  xmin=std::min(xmin,coo4[0]);
294  xmax=std::max(coo1[0],coo2[0]);
295  xmax=std::max(xmax,coo3[0]);
296  xmax=std::max(xmax,coo4[0]);
297  ymin=std::min(coo1[1],coo2[1]);
298  ymin=std::min(ymin,coo3[1]);
299  ymin=std::min(ymin,coo4[1]);
300  ymax=std::max(coo1[1],coo2[1]);
301  ymax=std::max(ymax,coo3[1]);
302  ymax=std::max(ymax,coo4[1]);
303  zmin=std::min(coo1[2],coo2[2]);
304  zmin=std::min(zmin,coo3[2]);
305  zmin=std::min(zmin,coo4[2]);
306  zmax=std::max(coo1[2],coo2[2]);
307  zmax=std::max(zmax,coo3[2]);
308  zmax=std::max(zmax,coo4[2]);
309  BOITE_3D boite(xmin,ymin,zmin,xmax,ymax,zmax);
310  return boite;
311 }
313 {
314  for (int j=0;j<MAX_TYPE_SOLUTION;j++)
315  {
320 } }
321 
322 
323 
324 void MG_QUADRANGLE::enregistrer(std::ostream& o,double version)
325 {
327  if (liaison_topologique==NULL) o << "%" << get_id() << "=QUADRANGLE(NULL,$" << noeud1->get_id() << ",$" << noeud2->get_id() << ",$" << noeud3->get_id() << ",$" << noeud4->get_id() << "," << origine_creation << ");" << std::endl;
328  else if (liaison_topologique->get_dimension()==2) o << "%" << get_id() << "=QUADRANGLE($"<< get_lien_topologie()->get_id() << ",$" << noeud1->get_id() << ",$" << noeud2->get_id() << ",$" << noeud3->get_id() << ",$" << noeud4->get_id() << "," << origine_creation << ");" << std::endl;
329 }
330 
331 
332 
333 
334 
335 
MG_ELEMENT_MAILLAGE::change_solution
virtual void change_solution(double val, int num=0)
Definition: mg_element_maillage.cpp:107
MG_SEGMENT
Definition: mg_segment.h:38
MG_QUADRANGLE::noeud2
class MG_NOEUD * noeud2
Definition: mg_quadrangle.h:78
MG_QUADRANGLE::get_lien_penta
TPL_LISTE_ENTITE< class MG_PENTA * > * get_lien_penta(void)
Definition: mg_quadrangle.cpp:211
gestionversion.h
MG_QUADRANGLE::~MG_QUADRANGLE
virtual ~MG_QUADRANGLE()
Definition: mg_quadrangle.cpp:62
MG_QUADRANGLE::MG_QUADRANGLE
MG_QUADRANGLE(unsigned long num, MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, class MG_NOEUD *mgnoeud4, class MG_SEGMENT *mgsegment1, class MG_SEGMENT *mgsegment2, class MG_SEGMENT *mgsegment3, class MG_SEGMENT *mgsegment4, int origine)
Definition: mg_quadrangle.cpp:30
MG_ELEMENT_MAILLAGE::origine_creation
int origine_creation
Definition: mg_element_maillage.h:72
MG_NOEUD::get_lien_quadrangle
TPL_LISTE_ENTITE< class MG_QUADRANGLE * > * get_lien_quadrangle(void)
Definition: mg_noeud.cpp:164
MG_QUADRANGLE::get_segment1
virtual MG_SEGMENT * get_segment1(void)
Definition: mg_quadrangle.cpp:166
MG_NOEUD::get_z
virtual double get_z(void)
Definition: mg_noeud.cpp:87
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
MG_QUADRANGLE::dupliquer
virtual MG_QUADRANGLE * dupliquer(class MG_MAILLAGE *mgmai, long decalage)
Definition: mg_quadrangle.cpp:45
MG_QUADRANGLE::get_lien_pyramide
TPL_LISTE_ENTITE< class MG_PYRAMIDE * > * get_lien_pyramide(void)
Definition: mg_quadrangle.cpp:216
MG_QUADRANGLE::get_segment3
virtual MG_SEGMENT * get_segment3(void)
Definition: mg_quadrangle.cpp:176
MG_MAILLAGE::get_mg_segmentid
MG_SEGMENT * get_mg_segmentid(unsigned long num)
Definition: mg_maillage.cpp:595
MG_QUADRANGLE::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_quadrangle.cpp:150
MG_ELEMENT_MAILLAGE
Definition: mg_element_maillage.h:38
mg_quadrangle.h
TPL_SET::supprimer
void supprimer(X x)
Definition: tpl_set.h:62
MG_ELEMENT_TOPOLOGIQUE::get_dimension
virtual int get_dimension(void)=0
mg_hexa.h
MG_QUADRANGLE::longueur
double longueur
Definition: mg_quadrangle.h:87
MG_QUADRANGLE::get_lien_hexa
TPL_LISTE_ENTITE< class MG_HEXA * > * get_lien_hexa(void)
Definition: mg_quadrangle.cpp:206
MG_QUADRANGLE::segment4
class MG_SEGMENT * segment4
Definition: mg_quadrangle.h:85
MG_QUADRANGLE
Definition: mg_quadrangle.h:39
ot_decalage_parametre.h
MG_ELEMENT_TOPOLOGIQUE::get_lien_maillage
virtual TPL_SET< MG_ELEMENT_MAILLAGE * > * get_lien_maillage(void)
Definition: mg_element_topologique.cpp:62
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
MG_QUADRANGLE::segment2
class MG_SEGMENT * segment2
Definition: mg_quadrangle.h:83
MG_SEGMENT::get_lien_quadrangle
TPL_LISTE_ENTITE< class MG_QUADRANGLE * > * get_lien_quadrangle(void)
Definition: mg_segment.cpp:247
MG_QUADRANGLE::noeud4
class MG_NOEUD * noeud4
Definition: mg_quadrangle.h:80
MG_ELEMENT_MAILLAGE::solution
double solution[MAX_TYPE_SOLUTION]
Definition: mg_element_maillage.h:73
MG_MAILLAGE::DIMENSIONMAILLAGESANSTOPO
static int DIMENSIONMAILLAGESANSTOPO
Definition: mg_maillage.h:177
MG_NOEUD::get_lien_petit_quadrangle
TPL_LISTE_ENTITE< class MG_QUADRANGLE * > * get_lien_petit_quadrangle(void)
Definition: mg_noeud.cpp:170
MG_NOEUD::get_u
virtual double get_u(void)
Definition: mg_noeud.cpp:108
TPL_SET::ajouter
void ajouter(X x)
Definition: tpl_set.h:55
MG_QUADRANGLE::inverse_sens
virtual void inverse_sens(void)
Definition: mg_quadrangle.cpp:186
MG_NOEUD
Definition: mg_noeud.h:41
MAX_TYPE_SOLUTION
const int MAX_TYPE_SOLUTION
Definition: mg_definition.h:42
MG_ELEMENT_MAILLAGE::liaison_topologique
MG_ELEMENT_TOPOLOGIQUE * liaison_topologique
Definition: mg_element_maillage.h:69
TPL_LISTE_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_liste_entite.h:38
MG_QUADRANGLE::get_type_entite
virtual int get_type_entite(void)
Definition: mg_quadrangle.cpp:138
MG_QUADRANGLE::get_boite_2D
virtual class BOITE_2D get_boite_2D(double periodeu, double periodev)
Definition: mg_quadrangle.cpp:221
MG_QUADRANGLE::enregistrer
virtual void enregistrer(std::ostream &o, double version)
Definition: mg_quadrangle.cpp:324
MAGIC::ORIGINE::DUPLIQUER
@ DUPLIQUER
Definition: mg_definition.h:79
MG_QUADRANGLE::extrapoler_solution_noeud
virtual void extrapoler_solution_noeud(void)
Definition: mg_quadrangle.cpp:312
OT_DECALAGE_PARAMETRE::decalage_parametre_u
double decalage_parametre_u(double par, double dpar)
Definition: ot_decalage_parametre.cpp:51
MG_NOEUD::get_v
virtual double get_v(void)
Definition: mg_noeud.cpp:113
MG_QUADRANGLE::hexa
TPL_LISTE_ENTITE< class MG_HEXA * > hexa
Definition: mg_quadrangle.h:88
MG_MAILLAGE::get_mg_noeudid
MG_NOEUD * get_mg_noeudid(unsigned long num)
Definition: mg_maillage.cpp:451
MG_NOEUD::get_x
virtual double get_x(void)
Definition: mg_noeud.cpp:77
MAGIC::TYPE_ENTITE::IDMG_QUADRANGLE
@ IDMG_QUADRANGLE
Definition: mg_definition.h:69
OT_REFERENCE::decrementer
void decrementer(void)
Definition: ot_reference.cpp:45
BOITE_2D
Definition: ot_boite_2d.h:28
BOITE_3D
Definition: ot_boite_3d.h:27
mg_maillage.h
MG_QUADRANGLE::get_longueur
virtual double get_longueur(void)
Definition: mg_quadrangle.cpp:201
MG_QUADRANGLE::pyramide
TPL_LISTE_ENTITE< class MG_PYRAMIDE * > pyramide
Definition: mg_quadrangle.h:90
MG_QUADRANGLE::noeud3
class MG_NOEUD * noeud3
Definition: mg_quadrangle.h:79
OT_DECALAGE_PARAMETRE::calcul_decalage_parametre_v
double calcul_decalage_parametre_v(double par)
Definition: ot_decalage_parametre.cpp:43
MG_ELEMENT_MAILLAGE::get_lien_topologie
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
Definition: mg_element_maillage.cpp:51
OT_DECALAGE_PARAMETRE::calcul_decalage_parametre_u
double calcul_decalage_parametre_u(double par)
Definition: ot_decalage_parametre.cpp:35
OT_REFERENCE::incrementer
void incrementer(void)
Definition: ot_reference.cpp:40
MG_MAILLAGE
Definition: mg_maillage.h:62
TPL_LISTE_ENTITE< class MG_HEXA * >
MG_QUADRANGLE::get_segment4
virtual MG_SEGMENT * get_segment4(void)
Definition: mg_quadrangle.cpp:181
MG_QUADRANGLE::get_noeud4
virtual MG_NOEUD * get_noeud4(void)
Definition: mg_quadrangle.cpp:161
MG_QUADRANGLE::get_noeud3
virtual MG_NOEUD * get_noeud3(void)
Definition: mg_quadrangle.cpp:156
MG_SEGMENT::get_longueur
virtual double get_longueur(void)
Definition: mg_segment.cpp:125
OT_DECALAGE_PARAMETRE::decalage_parametre_v
double decalage_parametre_v(double par, double dpar)
Definition: ot_decalage_parametre.cpp:75
MG_QUADRANGLE::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_quadrangle.cpp:145
MG_QUADRANGLE::get_dimension
virtual int get_dimension(void)
Definition: mg_quadrangle.cpp:196
MG_QUADRANGLE::init_quadrangle
void init_quadrangle(void)
Definition: mg_quadrangle.cpp:99
MG_QUADRANGLE::get_segment2
virtual MG_SEGMENT * get_segment2(void)
Definition: mg_quadrangle.cpp:171
TPL_LISTE_ENTITE::supprimer
virtual void supprimer(X x)
Definition: tpl_liste_entite.h:42
MG_QUADRANGLE::segment3
class MG_SEGMENT * segment3
Definition: mg_quadrangle.h:84
OT_DECALAGE_PARAMETRE
Definition: ot_decalage_parametre.h:28
MG_QUADRANGLE::noeud1
class MG_NOEUD * noeud1
Definition: mg_quadrangle.h:77
MG_QUADRANGLE::segment1
class MG_SEGMENT * segment1
Definition: mg_quadrangle.h:82
MG_MAILLAGE::ajouter_mg_quadrangle
MG_QUADRANGLE * ajouter_mg_quadrangle(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, class MG_NOEUD *mgnoeud4, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:930
MG_QUADRANGLE::get_boite_3D
virtual class BOITE_3D get_boite_3D(void)
Definition: mg_quadrangle.cpp:272
MG_NOEUD::get_y
virtual double get_y(void)
Definition: mg_noeud.cpp:82
MG_QUADRANGLE::penta
TPL_LISTE_ENTITE< class MG_PENTA * > penta
Definition: mg_quadrangle.h:89