MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mg_segment_frontiere.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_segment_frontiere.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 #include "gestionversion.h"
24 #include "mg_segment_frontiere.h"
25 #include "mg_segment.h"
26 
27 #pragma package(smart_init)
28 
29 #include "ot_decalage_parametre.h"
30 #include <algorithm>
31 
32 
34 
35 
37 {
38  attribueid();
39 }
40 
42 {
43  attribueid();
44 }
45 
47 {
48 }
49 
50 
52 {
53  if (segment!=NULL) return segment->get_lien_topologie();
54  return ele;
55 }
56 
57 BOITE_2D MG_SEGMENT_FRONTIERE::get_boite_2D(double periodeu,double periodev)
58 {
59  OT_DECALAGE_PARAMETRE decalage(periodeu,periodev);
60  double coouvd1[2];
61  double coouvd2[2];
62 
63  double du=decalage.calcul_decalage_parametre_u(uvpt1[0]);
64  double dv=decalage.calcul_decalage_parametre_v(uvpt1[1]);
65  coouvd1[0]=decalage.decalage_parametre_u(uvpt1[0],du);
66  coouvd1[1]=decalage.decalage_parametre_v(uvpt1[1],dv);
67  coouvd2[0]=decalage.decalage_parametre_u(uvpt2[0],du);
68  coouvd2[1]=decalage.decalage_parametre_v(uvpt2[1],dv);
69  if (etat==1)
70  {
71  double umin,vmin,umax,vmax;
72  umin=std::min(coouvd1[0],coouvd2[0]);
73  umax=std::max(coouvd1[0],coouvd2[0]);
74  vmin=std::min(coouvd1[1],coouvd2[1]);
75  vmax=std::max(coouvd1[1],coouvd2[1]);
76  umin=umin-du;
77  umax=umax-du;
78  vmin=vmin-dv;
79  vmax=vmax-dv;
80  BOITE_2D boite(umin,vmin,umax,vmax);
81  return boite;
82  }
83  else
84  {
85  double uv[2];
86  uv[0]=0.5*(coouvd1[0]+coouvd2[0])-du;
87  uv[1]=0.5*(coouvd1[1]+coouvd2[1])-dv;
88  BOITE_2D boite(uv[0],uv[1],uv[0],uv[1]);
89  return boite;
90  }
91 
92 }
93 
95 {
96  double dist=(uvpt1[0]-uv2[0])*(uvpt1[0]-uv2[0])+(uvpt1[1]-uv2[1])*(uvpt1[1]-uv2[1]);
97  double distref=(uvpt1[0]-uvpt2[0])*(uvpt1[0]-uvpt2[0])+(uvpt1[1]-uvpt2[1])*(uvpt1[1]-uvpt2[1]);
98  if (dist<1e-6*distref) return 1;
99  return 0;
100 }
101 
103 {
104  double dist=(uvpt2[0]-uv2[0])*(uvpt2[0]-uv2[0])+(uvpt2[1]-uv2[1])*(uvpt2[1]-uv2[1]);
105  double distref=(uvpt1[0]-uvpt2[0])*(uvpt1[0]-uvpt2[0])+(uvpt1[1]-uvpt2[1])*(uvpt1[1]-uvpt2[1]);
106  if (dist<1e-6*distref) return 1;
107  return 0;
108 }
109 
111 {
112  etat=2;
113 }
114 
116 {
117  etat=1;
118 }
119 
121 {
122  return precedent;
123 }
124 
126 {
127  return suivant;
128 }
129 
131 {
132  precedent=p;
133 }
134 
136 {
137  suivant=p;
138 }
MG_SEGMENT_FRONTIERE::get_suivant
MG_SEGMENT_FRONTIERE * get_suivant(void)
Definition: mg_segment_frontiere.cpp:125
MG_SEGMENT
Definition: mg_segment.h:38
gestionversion.h
MG_SEGMENT_FRONTIERE::suivant
MG_SEGMENT_FRONTIERE * suivant
Definition: mg_segment_frontiere.h:73
MG_SEGMENT_FRONTIERE::change_precedent
void change_precedent(MG_SEGMENT_FRONTIERE *p)
Definition: mg_segment_frontiere.cpp:130
MG_SEGMENT_FRONTIERE::get_precedent
MG_SEGMENT_FRONTIERE * get_precedent(void)
Definition: mg_segment_frontiere.cpp:120
MG_SEGMENT_FRONTIERE::memenoeud2
int memenoeud2(double *uv2)
Definition: mg_segment_frontiere.cpp:102
MG_SEGMENT_FRONTIERE::change_etat_normal
static void change_etat_normal(void)
Definition: mg_segment_frontiere.cpp:115
MG_SEGMENT_FRONTIERE::attribueid
void attribueid(void)
Definition: mg_segment_frontiere.h:64
ot_decalage_parametre.h
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
mg_segment_frontiere.h
MG_SEGMENT_FRONTIERE
Definition: mg_segment_frontiere.h:34
mg_segment.h
MG_SEGMENT_FRONTIERE::uvpt2
double uvpt2[2]
Definition: mg_segment_frontiere.h:70
MG_IDENTIFICATEUR::id
unsigned long id
Definition: mg_identificateur.h:49
OT_DECALAGE_PARAMETRE::decalage_parametre_u
double decalage_parametre_u(double par, double dpar)
Definition: ot_decalage_parametre.cpp:51
MG_SEGMENT_FRONTIERE::segment
MG_SEGMENT * segment
Definition: mg_segment_frontiere.h:71
MG_SEGMENT_FRONTIERE::get_boite_2D
BOITE_2D get_boite_2D(double pu, double pv)
Definition: mg_segment_frontiere.cpp:57
BOITE_2D
Definition: ot_boite_2d.h:28
MG_SEGMENT_FRONTIERE::precedent
MG_SEGMENT_FRONTIERE * precedent
Definition: mg_segment_frontiere.h:74
MG_SEGMENT_FRONTIERE::ele
MG_ELEMENT_TOPOLOGIQUE * ele
Definition: mg_segment_frontiere.h:72
MG_SEGMENT_FRONTIERE::uvpt1
double uvpt1[2]
Definition: mg_segment_frontiere.h:68
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
MG_SEGMENT_FRONTIERE::memenoeud1
int memenoeud1(double *uv2)
Definition: mg_segment_frontiere.cpp:94
MG_SEGMENT_FRONTIERE::etat
static int etat
Definition: mg_segment_frontiere.h:77
OT_DECALAGE_PARAMETRE::calcul_decalage_parametre_u
double calcul_decalage_parametre_u(double par)
Definition: ot_decalage_parametre.cpp:35
MG_SEGMENT_FRONTIERE::MG_SEGMENT_FRONTIERE
MG_SEGMENT_FRONTIERE(class MG_SEGMENT *seg, MG_SEGMENT_FRONTIERE *s=NULL, MG_SEGMENT_FRONTIERE *p=NULL)
Definition: mg_segment_frontiere.cpp:36
OT_DECALAGE_PARAMETRE::decalage_parametre_v
double decalage_parametre_v(double par, double dpar)
Definition: ot_decalage_parametre.cpp:75
MG_NOEUD::segment
TPL_LISTE_ENTITE< class MG_SEGMENT * > segment
Definition: mg_noeud.h:109
MG_SEGMENT_FRONTIERE::~MG_SEGMENT_FRONTIERE
~MG_SEGMENT_FRONTIERE()
Definition: mg_segment_frontiere.cpp:46
OT_DECALAGE_PARAMETRE
Definition: ot_decalage_parametre.h:28
MG_SEGMENT_FRONTIERE::change_suivant
void change_suivant(MG_SEGMENT_FRONTIERE *p)
Definition: mg_segment_frontiere.cpp:135
MG_SEGMENT_FRONTIERE::get_lien_topologie
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
Definition: mg_segment_frontiere.cpp:51
MG_SEGMENT_FRONTIERE::change_etat_initialise
static void change_etat_initialise(void)
Definition: mg_segment_frontiere.cpp:110