ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/outil/src/ot_boite_3d.cpp
Revision: 378
Committed: Tue Nov 27 20:54:58 2012 UTC (12 years, 7 months ago) by francois
Original Path: magic/lib/outil/src/ot_boite_3D.cpp
File size: 3739 byte(s)
Log Message:
ajout de methode de construction pour les fem elements compatible avec le decoupage XFEM. + bug de format de fichier dans les fem elements non visible en dehors du xfem

File Contents

# User Rev Content
1 francois 283 //------------------------------------------------------------
2     //------------------------------------------------------------
3     // MAGiC
4     // Jean Christophe Cuilli�re et Vincent FRANCOIS
5     // D�partement de G�nie M�canique - UQTR
6     //------------------------------------------------------------
7     // Le projet MAGIC est un projet de recherche du d�partement
8     // de g�nie m�canique de l'Universit� du Qu�bec �
9     // Trois Rivi�res
10     // Les librairies ne peuvent �tre utilis�es sans l'accord
11     // des auteurs (contact : francois@uqtr.ca)
12     //------------------------------------------------------------
13     //------------------------------------------------------------
14     //
15     // ot_boite_3D.cpp
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H23
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23    
24    
25     #include "gestionversion.h"
26     #include "ot_boite_3D.h"
27     #include <math.h>
28    
29    
30    
31    
32     BOITE_3D::BOITE_3D(double xmin,double ymin,double zmin,double xmax,double ymax,double zmax):x(xmin),y(ymin),z(zmin),dx(xmax-xmin),dy(ymax-ymin),dz(zmax-zmin)
33     {
34     if (dx<0.0000001) dx=0.00000001;
35     if (dy<0.0000001) dy=0.00000001;
36     if (dz<0.0000001) dz=0.00000001;
37     }
38    
39     BOITE_3D::BOITE_3D(void)
40     {
41     }
42    
43     void BOITE_3D::reinit(double xmin,double ymin,double zmin,double xmax,double ymax,double zmax)
44     {
45     x=xmin;
46     y=ymin;
47     z=zmin;
48     dx=xmax-xmin;
49     dy=ymax-ymin;
50     dz=zmax-zmin;
51     if (dx<0.0000001) dx=0.00000001;
52     if (dy<0.0000001) dy=0.00000001;
53     if (dz<0.0000001) dz=0.00000001;
54     }
55    
56     void BOITE_3D::reinit(BOITE_3D& boite)
57     {
58     x=boite.x;
59     y=boite.y;
60     z=boite.z;
61     dx=boite.dx;
62     dy=boite.dy;
63     dz=boite.dz;
64     }
65    
66     BOITE_3D::BOITE_3D(const BOITE_3D& mdd):x(mdd.x),y(mdd.y),z(mdd.z),dx(mdd.dx),dy(mdd.dy),dz(mdd.dz)
67     {
68     }
69    
70     BOITE_3D::BOITE_3D(BOITE_3D& mdd):x(mdd.x),y(mdd.y),z(mdd.z),dx(mdd.dx),dy(mdd.dy),dz(mdd.dz)
71     {
72     }
73    
74     BOITE_3D::~BOITE_3D()
75     {
76     }
77    
78     double BOITE_3D::get_xmin(void)
79     {
80     return x;
81     }
82    
83     double BOITE_3D::get_xmax(void)
84     {
85     return (x+dx);
86     }
87    
88     double BOITE_3D::get_ymin(void)
89     {
90     return y;
91     }
92    
93     double BOITE_3D::get_ymax(void)
94     {
95     return (y+dy);
96     }
97    
98     double BOITE_3D::get_zmin(void)
99     {
100     return z;
101     }
102    
103     double BOITE_3D::get_zmax(void)
104     {
105     return (z+dz);
106     }
107    
108     BOITE_3D& BOITE_3D::operator=(BOITE_3D& boite)
109     {
110     x=boite.x;
111     y=boite.y;
112     z=boite.z;
113     dx=boite.dx;
114     dy=boite.dy;
115     dz=boite.dz;
116     return *this;
117     }
118    
119     double BOITE_3D::get_rayon(void)
120     {
121     return (0.5*sqrt(dx*dx+dy*dy+dz*dz));
122     }
123    
124     void BOITE_3D::get_centre(double *coo)
125     {
126     coo[0]=x+dx*0.5;
127     coo[1]=y+dy*0.5;
128     coo[2]=z+dz*0.5;
129     }
130    
131     double BOITE_3D::get_xcentre(void)
132     {
133     return x+dx*0.5;
134     }
135    
136     double BOITE_3D::get_ycentre(void)
137     {
138     return y+dy*0.5;
139     }
140    
141     double BOITE_3D::get_zcentre(void)
142     {
143     return z+dz*0.5;
144     }
145    
146 francois 378 void BOITE_3D::change_grosseur(double f)
147     {
148     double centre[3];
149     get_centre(centre);
150     dx=dx*f;
151     dy=dy*f;
152     dz=dz*f;
153     reinit(centre[0]-dx/2.,centre[1]-dy/2.,centre[2]-dz/2.,centre[0]+dx/2.,centre[1]+dy/2.,centre[2]+dz/2.);
154     }
155 francois 283
156     int BOITE_3D::operator*(BOITE_3D& boite)
157     {
158     if ( x+dx>=boite.x)
159     if ( y+dy>=boite.y)
160     if ( z+dz>=boite.z)
161     if ( x<(boite.x+boite.dx))
162     if ( y<(boite.y+boite.dy))
163     if ( z<(boite.z+boite.dz))
164     return 1;
165     return 0;
166     }
167    
168     int BOITE_3D::contient(double xx,double yy,double zz)
169     {
170     if (xx>=x)
171     if (yy>=y)
172     if (zz>=z)
173     if (xx<=x+dx)
174     if (yy<=y+dy)
175     if (zz<=z+dz)
176     return 1;
177    
178    
179     return 0;
180     }
181    
182