* fichier : voro3d.dgibi
*----------------------------------------------------------------------*
* voro3d.dgibi est un exemple d'utilisation dans un cas tridimensionel *
* de la procedure MAILVORO de maillage d'agregats cubiques de polyedres*
* de Voronoi. Cette procedure fait appel a l'operateur VORO *
* La procedure @POINTIR permet de "tirer" aleatoirement un ensemble *
* de points servant de germe de la partition de Voronoi. *
*----------------------------------------------------------------------*
* *
* *
* *
*----------------------------------------------------------------------*
* Maillage d'un agregat cubique de polyedres de Voronoi *
*----------------------------------------------------------------------*
* *
*-------------------- Parametres de la realisation --------------------*
* *
* NBG1 : Nombre de polyedres. *
* DEXC1 : Distance d'exclusion entre points germes des polyedres. *
* Attention, si la distance est trop importante, le nombre *
* de polyedres demandes ne pourra pas etre atteint. *
* DENS1 : Densite (taille) moyenne des elements du maillage. *
* Par defaut, vaut 1/5 de la taille moyenne des polyedres. *
* IGER1 : Germe du generateur de nombres aleatoires. *
* Mot-cle 'AUTO' => processus de congruence initialise a 1 *
* ITRAC1 : VRAI => affichage resultats. *
NBG1 = 4 ** 3 ;
DEXC1 = 0.20 ;
DENS1 = 0.25 * (('FLOT' NBG1) ** (-1. / 3.)) ;
IGER1 = 1 ;
ITRAC1 = FAUX ;
*----------------------------------------------------------------------*
'OPTI' 'ECHO' 1 ;
VECH1 = 'VALE' 'ECHO' ;
VTRA1 = 'VALE' 'TRAC' ;
* *
*--------------------- Maillage d'un cube unite -----------------------*
* *
'OPTI' 'DIME' 3 'ELEM' 'TET4' ;
* *
O1 = 0. 0. 0. ;
X1 = 1. 0. 0. ;
Y1 = 0. 1. 0. ;
Z1 = 0. 0. 1. ;
* *
MCUB1 = ((O1 'DROI' 1 X1) 'TRAN' 1 Y1) 'VOLU' 'TRAN' 1 Z1 ;
ACUB1 = ('ARET' MCUB1) 'COUL' 'VERT' ;
* *
*--------------- Tirage des points germes des polyedres ---------------*
* *
'SAUT' 1 'LIGN' ;
'MESS' '***** Tirage des points germes des polyedres' ;
MPTS1 = @POINTIR REPU NBG1 SPHE DEXC1 'GERM' IGER1 ;
NBG1 = 'NBNO' MPTS1 ;
* *
'SI' ITRAC1 ;
'TITR' ('CHAI' NBG1 ' germes tires ') ;
'TRAC' (ACUB1 'ET' MPTS1) ;
'FINS' ;
* *
*---------------- Partition de Voronoi du cube unite ------------------*
* *
* Construction d'une enveloppe orientee constituee que de TRI3 : *
MCUB1 = 'CHAN' 'TET4' MCUB1 ;
ENV1 = 'ENVE' MCUB1 ;
ENV1 = 'INVE' ('ORIE' ENV1 'POIN' ('BARY' ENV1)) ;
* *
'SAUT' 1 'LIGN' ;
'MESS' '***** Partition du cube unite en cellules de Voronoi ' ;
'TEMP' 'ZERO' ;
TPVORO1 = 'VORO' MPTS1 ENV1 ;
'TEMP' ;
* *
'SI' ITRAC1 ;
'TITR' ' Partition du cube unite en cellules de Voronoi ' ;
'TRAC' (TPVORO1 . 'VISU' 'ET' (MPTS1 'COUL' 'ROUG')) ;
'FINS' ;
* *
*--------------------- Maillage de la partition -----------------------*
* *
'SAUT' 1 'LIGN' ;
'MESS' '***** Maillage de la partition ' ;
TMVORO1 = MAILVORO TPVORO1 ENV1 'COUL';
'TEMP' ;
* *
*----------------------- Affichages / Donnees -------------------------*
* *
'SI' ITRAC1 ;
'TITR' ' Visualisation du maillage ' ;
'TRAC' 'FACE' TMVORO1 . 'MAIL' ;
* *
* Structures de la table de resultat : *
PTS1 = MPTS1 'POIN' 1 ;
'TITR' ' Le maillage de chaque polyedre est indice par son germe ' ;
'TRAC' 'FACE' (TMVORO1 . CELL. PTS1 . 'MAIL' 'ET' ACUB1) ;
* *
MAILG1 = TMVORO1 . CELL . PTS1 . 'MAIL' ;
PTS2 = TMVORO1 . CELL . PTS1 . 'VOIS' 'POIN' 1 ;
'TITR' ' Les germes des voisins sont au sous-indice "VOIS" ' ;
'TRAC' 'FACE' (MAILG1 'ET' TMVORO1 . CELL .PTS2 . 'MAIL' 'ET' ACUB1) ;
'FINS' ;
* *
'FIN' ;
'OPTI' 'ECHO' 1 ;
© Cast3M 2003 - All rights reserved.
Disclaimer