 |
MAGiC
V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
|
Aller à la documentation de ce fichier.
35 static unsigned long idmax=0;
73 TPL_CELLULE_GRILLE(
double xmin,
double ymin,
double zmin,
double xmax,
double ymax,
double zmax):
CELLULE_GRILLE_BASE(),
boite(xmin,ymin,zmin,xmax,ymax,zmax)
92 template <
class A,
class B>
96 TPL_CELLULE_GRILLE_INFO(
double xmin,
double ymin,
double zmin,
double xmax,
double ymax,
double zmax):
CELLULE_GRILLE_BASE(),
boite(xmin,ymin,zmin,xmax,ymax,zmax)
142 virtual void initialiser(
double xmin,
double ymin,
double zmin,
double xmax,
double ymax,
double zmax,
int nb_pasx,
int nb_pasy,
int nb_pasz)
147 pasx=(xmax-xmin)/nb_pasx;
148 pasy=(ymax-ymin)/nb_pasy;
149 pasz=(zmax-zmin)/nb_pasz;
151 for (
int k=0;k<nb_pasz;k++)
152 for (
int j=0;j<nb_pasy;j++)
153 for (
int i=0;i<nb_pasx;i++)
155 double x1=xmin+i*
pasx;
156 double x2=xmin+(i+1)*
pasx;
157 double y1=ymin+j*
pasy;
158 double y2=ymin+(j+1)*
pasy;
159 double z1=zmin+k*
pasz;
160 double z2=zmin+(k+1)*
pasz;
190 if (nx>=
nbpasx)
return NULL;
191 if (ny>=
nbpasy)
return NULL;
192 if (nz>=
nbpasz)
return NULL;
193 if (nx<0)
return NULL;
194 if (ny<0)
return NULL;
195 if (nz<0)
return NULL;
210 if (nxmin<0) nxmin=0;
211 if (nymin<0) nymin=0;
212 if (nzmin<0) nzmin=0;
213 if (nxmin>
nbpasx-1) nxmin=0;
214 if (nymin>
nbpasy-1) nymin=0;
215 if (nzmin>
nbpasz-1) nzmin=0;
216 if (nxmax<0) nxmax=
nbpasx-1;
217 if (nymax<0) nymax=
nbpasy-1;
218 if (nzmax<0) nzmax=
nbpasz-1;
222 for (
int i=nxmin;i<nxmax+1;i++)
223 for (
int j=nymin;j<nymax+1;j++)
224 for (
int k=nzmin;k<nzmax+1;k++)
230 if (cellule==NULL)
continue;
239 BOITE_3D bt(xcentre-rayon_recherche,ycentre-rayon_recherche,zcentre-rayon_recherche,xcentre+rayon_recherche,ycentre+rayon_recherche,zcentre+rayon_recherche);
246 if (nxmin<0) nxmin=0;
247 if (nymin<0) nymin=0;
248 if (nzmin<0) nzmin=0;
249 if (nxmin>
nbpasx-1) nxmin=0;
250 if (nymin>
nbpasy-1) nymin=0;
251 if (nzmin>
nbpasz-1) nzmin=0;
252 if (nxmax<0) nxmax=
nbpasx-1;
253 if (nymax<0) nymax=
nbpasy-1;
254 if (nzmax<0) nzmax=
nbpasz-1;
258 for (
int i=nxmin;i<nxmax+1;i++)
259 for (
int j=nymin;j<nymax+1;j++)
260 for (
int k=nzmin;k<nzmax+1;k++)
266 if (cellule==NULL)
continue;
283 if (nxmin<0) nxmin=0;
284 if (nymin<0) nymin=0;
285 if (nzmin<0) nzmin=0;
286 if (nxmin>
nbpasx-1) nxmin=0;
287 if (nymin>
nbpasy-1) nymin=0;
288 if (nzmin>
nbpasz-1) nzmin=0;
289 if (nxmax<0) nxmax=
nbpasx-1;
290 if (nymax<0) nymax=
nbpasy-1;
291 if (nzmax<0) nzmax=
nbpasz-1;
296 for (
int i=nxmin;i<nxmax+1;i++)
297 for (
int j=nymin;j<nymax+1;j++)
298 for (
int k=nzmin;k<nzmax+1;k++)
302 if (cellule==NULL)
continue;
316 nxmin=std::max(nxmin,0);
317 nymin=std::max(nymin,0);
318 nzmin=std::max(nzmin,0);
319 nxmax=std::min(nxmax,
nbpasx-1);
320 nymax=std::min(nymax,
nbpasy-1);
321 nzmax=std::min(nzmax,
nbpasz-1);
322 for (
int i=nxmin;i<nxmax+1;i++)
323 for (
int j=nymin;j<nymax+1;j++)
324 for (
int k=nzmin;k<nzmax+1;k++)
328 if (cellule==NULL)
continue;
367 template <
class A,
class B>
388 virtual void initialiser(
double xmin,
double ymin,
double zmin,
double xmax,
double ymax,
double zmax,
int nb_pasx,
int nb_pasy,
int nb_pasz)
393 pasx=(xmax-xmin)/nb_pasx;
394 pasy=(ymax-ymin)/nb_pasy;
395 pasz=(zmax-zmin)/nb_pasz;
397 for (
int k=0;k<nb_pasz;k++)
398 for (
int j=0;j<nb_pasy;j++)
399 for (
int i=0;i<nb_pasx;i++)
401 double x1=xmin+i*
pasx;
402 double x2=xmin+(i+1)*
pasx;
403 double y1=ymin+j*
pasy;
404 double y2=ymin+(j+1)*
pasy;
405 double z1=zmin+k*
pasz;
406 double z2=zmin+(k+1)*
pasz;
436 if (nx>=
nbpasx)
return NULL;
437 if (ny>=
nbpasy)
return NULL;
438 if (nz>=
nbpasz)
return NULL;
439 if (nx<0)
return NULL;
440 if (ny<0)
return NULL;
441 if (nz<0)
return NULL;
450 BOITE_3D bt(xcentre-rayon_recherche,ycentre-rayon_recherche,zcentre-rayon_recherche,xcentre+rayon_recherche,ycentre+rayon_recherche,zcentre+rayon_recherche);
457 nxmin=std::max(nxmin,0);
458 nymin=std::max(nymin,0);
459 nzmin=std::max(nzmin,0);
460 nxmax=std::min(nxmax,
nbpasx-1);
461 nymax=std::min(nymax,
nbpasy-1);
462 nzmax=std::min(nzmax,
nbpasz-1);
463 for (
int i=nxmin;i<nxmax+1;i++)
464 for (
int j=nymin;j<nymax+1;j++)
465 for (
int k=nzmin;k<nzmax+1;k++)
471 if (cellule==NULL)
continue;
489 if (nxmin<0) nxmin=0;
490 if (nymin<0) nymin=0;
491 if (nzmin<0) nzmin=0;
492 if (nxmin>
nbpasx-1) nxmin=0;
493 if (nymin>
nbpasy-1) nymin=0;
494 if (nzmin>
nbpasz-1) nzmin=0;
495 if (nxmax<0) nxmax=
nbpasx-1;
496 if (nymax<0) nymax=
nbpasy-1;
497 if (nzmax<0) nzmax=
nbpasz-1;
501 for (
int i=nxmin;i<nxmax+1;i++)
502 for (
int j=nymin;j<nymax+1;j++)
503 for (
int k=nzmin;k<nzmax+1;k++)
507 if (cellule==NULL)
continue;
521 if (nxmin<0) nxmin=0;
522 if (nymin<0) nymin=0;
523 if (nzmin<0) nzmin=0;
524 if (nxmin>
nbpasx-1) nxmin=0;
525 if (nymin>
nbpasy-1) nymin=0;
526 if (nzmin>
nbpasz-1) nzmin=0;
527 if (nxmax<0) nxmax=
nbpasx-1;
528 if (nymax<0) nymax=
nbpasy-1;
529 if (nzmax<0) nzmax=
nbpasz-1;
533 for (
int i=nxmin;i<nxmax+1;i++)
534 for (
int j=nymin;j<nymax+1;j++)
535 for (
int k=nzmin;k<nzmax+1;k++)
539 if (cellule==NULL)
continue;
567 std::vector<int> bits;
577 if ((nnz==0) && (nny==0) && (nnx==0)) ok=1;
578 bits.insert(bits.end(),bit1);
579 bits.insert(bits.end(),bit2);
580 bits.insert(bits.end(),bit3);
584 unsigned long keycode=0;
585 for (
int i=0;i<bits.size();i++)
586 keycode=keycode+bits[i]*(1<<i);
virtual int get_pasy(void)
virtual void rechercher(double xcentre, double ycentre, double zcentre, double rayon_recherche, TPL_MAP_ENTITE< A > &liste_entite_trouve)
virtual unsigned long determine_keycode(int nx, int ny, int nz)
virtual void get_coord_cellule(TPL_CELLULE_GRILLE_INFO< A, B > *cell, int &nx, int &ny, int &nz)
TPL_LISTE_ENTITE< TPL_CELLULE_GRILLE< A > * > lst_entite_cellule
virtual TPL_CELLULE_GRILLE_INFO< A, B > * get_cellule(int nx, int ny, int nz)
virtual int get_pasz(void)
TPL_CELLULE_GRILLE_INFO(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
virtual unsigned long get_id()
virtual void inserer(A a)
void get_centre(double *coo)
TPL_CELLULE_GRILLE(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
TPL_LISTE_ENTITE< A > lst_entite_A
virtual TPL_CELLULE_GRILLE< A > * get_cellule(int num)
virtual TPL_CELLULE_GRILLE< A > * get_cellule(double x, double y, double z)
virtual int get_nb_cellule(void)=0
virtual void supprimer(A a)
virtual int get_nb_cellule(void)
virtual int get_pasx(void)
virtual TPL_CELLULE_GRILLE_INFO< A, B > * get_cellule(double x, double y, double z)
void change_info(int num, B val)
virtual void rechercher(BOITE_3D bt, TPL_MAP_ENTITE< A > &liste_entite_trouve)
virtual void ajouter(X x)
virtual void supprimer(A a)
virtual int get_tag(void)
void reinit(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
virtual TPL_CELLULE_GRILLE< A > * get_cellule(int nx, int ny, int nz)
virtual ~CELLULE_GRILLE_BASE()
virtual void inserer(A a)
TPL_LISTE_ENTITE< A > lst_entite_A
virtual void ajouter(X x)
virtual TPL_CELLULE_GRILLE_INFO< A, B > * get_cellule(int num)
virtual int get_pasy(void)
virtual ~TPL_CELLULE_GRILLE()
virtual BOITE_3D get_boite(void)
virtual BOITE_3D get_boite(void)
virtual void get_coord_cellule(TPL_CELLULE_GRILLE< A > *cell, int &nx, int &ny, int &nz)
virtual void change_tag(int val)
virtual ~TPL_CELLULE_GRILLE_INFO()
virtual int get_pasz(void)
virtual void initialiser(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax, int nb_pasx, int nb_pasy, int nb_pasz)
virtual void rechercher(double xcentre, double ycentre, double zcentre, double rayon_recherche, TPL_MAP_ENTITE< A > &liste_entite_trouve)
TPL_LISTE_ENTITE< TPL_CELLULE_GRILLE_INFO< A, B > * > lst_entite_cellule
virtual int get_pasx(void)
virtual CELLULE_GRILLE_BASE * get_cellule(int num)=0
virtual void supprimer(X x)
virtual void initialiser(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax, int nb_pasx, int nb_pasy, int nb_pasz)
virtual BOITE_3D get_boite(void)=0
virtual int get_nb_cellule(void)