ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/outil/src/ot_boite_3d.cpp
Revision: 5
Committed: Tue Jun 12 20:26:34 2007 UTC (18 years ago)
Original Path: magic/lib/outil/outil/src/ot_boite_3D.cpp
File size: 3612 byte(s)
Log Message:

File Contents

# User Rev Content
1 5 //------------------------------------------------------------
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;y=ymin;z=zmin;
46     dx=xmax-xmin;
47     dy=ymax-ymin;
48     dz=zmax-zmin;
49     if (dx<0.0000001) dx=0.00000001;
50     if (dy<0.0000001) dy=0.00000001;
51     if (dz<0.0000001) dz=0.00000001;
52     }
53    
54     void BOITE_3D::reinit(BOITE_3D& boite)
55     {
56     x=boite.x;
57     y=boite.y;
58     z=boite.z;
59     dx=boite.dx;
60     dy=boite.dy;
61     dz=boite.dz;
62     }
63    
64     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)
65     {
66     }
67    
68     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)
69     {
70     }
71    
72     BOITE_3D::~BOITE_3D()
73     {
74     }
75    
76     double BOITE_3D::get_xmin(void)
77     {
78     return x;
79     }
80    
81     double BOITE_3D::get_xmax(void)
82     {
83     return (x+dx);
84     }
85    
86     double BOITE_3D::get_ymin(void)
87     {
88     return y;
89     }
90    
91     double BOITE_3D::get_ymax(void)
92     {
93     return (y+dy);
94     }
95    
96     double BOITE_3D::get_zmin(void)
97     {
98     return z;
99     }
100    
101     double BOITE_3D::get_zmax(void)
102     {
103     return (z+dz);
104     }
105    
106     BOITE_3D& BOITE_3D::operator=(BOITE_3D& boite)
107     {
108     x=boite.x;
109     y=boite.y;
110     z=boite.z;
111     dx=boite.dx;
112     dy=boite.dy;
113     dz=boite.dz;
114     return *this;
115     }
116    
117     double BOITE_3D::get_rayon(void)
118     {
119     return (0.5*sqrt(dx*dx+dy*dy+dz*dz));
120     }
121    
122     void BOITE_3D::get_centre(double *coo)
123     {
124     coo[0]=x+dx*0.5;
125     coo[1]=y+dy*0.5;
126     coo[2]=z+dz*0.5;
127     }
128    
129     double BOITE_3D::get_xcentre(void)
130     {
131     return x+dx*0.5;
132     }
133    
134     double BOITE_3D::get_ycentre(void)
135     {
136     return y+dy*0.5;
137     }
138    
139     double BOITE_3D::get_zcentre(void)
140     {
141     return z+dz*0.5;
142     }
143    
144    
145     int BOITE_3D::operator*(BOITE_3D& boite)
146     {
147     if ( x+dx>=boite.x)
148     if ( y+dy>=boite.y)
149     if ( z+dz>=boite.z)
150     if ( x<(boite.x+boite.dx))
151     if ( y<(boite.y+boite.dy))
152     if ( z<(boite.z+boite.dz))
153     return 1;
154     return 0;
155     }
156    
157     int BOITE_3D::contient(double xx,double yy,double zz)
158     {
159     if (xx>=x)
160     if (yy>=y)
161     if (zz>=z)
162     if (xx<=x+dx)
163     if (yy<=y+dy)
164     if (zz<=z+dz)
165     return 1;
166    
167    
168     return 0;
169     }
170    
171