#######################################################################################################################################
# #
# M I S E E N " P A R T I C U L E S " D ' U N C H A M P T R I D I M E N S I O N N E L : #
# #
# #
# Author of '$xiirf/.COUP.11.1.$U' : #
# #
# Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). #
# #
#######################################################################################################################################
$Z SETParam PremiereR 1
$Z SETParam DerniereR 512
$Z SETParam _____Seuil 0.050
$Z SETParam _____Inferieur 121
$Z SETParam _____Superieur 127
$Z SETParam _____Rayon 0.010
$Z SETParam _____DRotOX 0
$Z SETParam _____ARotOX $dpi
$Z SETParam _____DRotOY 0
$Z SETParam _____ARotOY 0
$Z SETParam _____DRotOZ 0
$Z SETParam _____ARotOZ 0
$Z SETParam _____RVB VRAI
$Z @ Nimages = $DerniereR - $PremiereR
$Z @ Nimages = $Nimages + 1
$Z Pal
$Z @ Zmin = $PremiereA - $PremiereA
$Z @ Zmax = $DerniereA - $PremiereA
$Z @ tailleZ = $Zmax - $Zmin
$Z @ tailleZ = $tailleZ + 1
$Z setenv dimZ $tailleZ
$Z
$Z set fracZ = `$xcg/DIVZ.01$X a=1 b=$dimZ signe="$K_VIDE"`
$Z set fracZ = `$xcg/MUL2.01$X a=0.5 b=$fracZ signe="$K_VIDE"`
$Z
$Z $DELETE $xTV/COORDONNEES$COORD_X
$Z $DELETE $xTV/COORDONNEES$COORD_Y
$Z $DELETE $xTV/COORDONNEES$COORD_Z
$Z $DELETE $xTV/COORDONNEES.r
$Z if ($_____RVB == VRAI) then
$Z set FichierROUGE=$xTV/COULEURS$ROUGE
$Z set FichierVERTE=$xTV/COULEURS$VERTE
$Z set FichierBLEUE=$xTV/COULEURS$BLEUE
$Z
$Z $DELETE $FichierROUGE
$Z $DELETE $FichierVERTE
$Z $DELETE $FichierBLEUE
$Z else
$Z set FichierROUGE=$BLANC
$Z set FichierVERTE=$BLANC
$Z set FichierBLEUE=$BLANC
$Z endif
$c #define N0 PremiereA
$c #define N DerniereA
$c
$c #define GRAINE 7
$c
$c int main()
$c {
$c int n;
$c
$c for (n=N0 ; n<=N ; n++)
$c {
$c printf("$DELETE $xTV/COORDO.%04d$COORD_X\n"
$c ,n
$c );
$c printf("$DELETE $xTV/COORDO.%04d$COORD_Y\n"
$c ,n
$c );
$c printf("$DELETE $xTV/COORDT.%04d$COORD_Z\n"
$c ,n
$c );
$c printf("$DELETE $xTV/COORDO.%04d$COORD_Z\n"
$c ,n
$c );
$c printf("$DELETE $xTV/COORDO.%04d.p\n"
$c ,n
$c );
$c
$c printf("if ($_____RVB == VRAI) then\n");
$c printf(" $DELETE $xTV/COULEUR.%04d$ROUGE\n"
$c ,n
$c );
$c printf(" $DELETE $xTV/COULEUR.%04d$VERTE\n"
$c ,n
$c );
$c printf(" $DELETE $xTV/COULEUR.%04d$BLEUE\n"
$c ,n
$c );
$c printf("else\n");
$c printf("endif\n");
$c
$c printf("$xci/passe_bande$X
$c A=$_____imagesA1.%04d
$c inf=$_____Inferieur sup=$_____Superieur
$c $formatI |
$c $xci/seuil$X
$c seuil=$GRIS_1
$c R=$xTV/COUPE
$c $formatI\n"
$c ,n
$c );
$c printf("$xci/random.02$X
$c graine=%d
$c seuil=$_____Seuil
$c $formatI |
$c $xci/and$X
$c A2=$xTV/COUPE
$c R=$xTV/COUPE
$c $formatI\n"
$c ,(n*GRAINE)
$c );
$c
$c printf("$xci/liste_points$X
$c A=$xTV/COUPE
$c rectangulaire=FAUX
$c grand_carre=FAUX
$c centrer=VRAI
$c Cdenormaliser=FAUX
$c eX=VRAI
$c eY=FAUX
$c eNIVEAU=FAUX
$c points=FAUX
$c $formatI
$c | $SE -e 's/^.*=//'
$c > $xTV/COORDO.%04d$COORD_X\n"
$c ,n
$c );
$c printf("$xci/liste_points$X
$c A=$xTV/COUPE
$c rectangulaire=FAUX
$c grand_carre=FAUX
$c centrer=VRAI
$c Cdenormaliser=FAUX
$c eX=FAUX
$c eY=VRAI
$c eNIVEAU=FAUX
$c points=FAUX
$c $formatI
$c | $SE -e 's/^.*=//'
$c > $xTV/COORDO.%04d$COORD_Y\n"
$c ,n
$c );
$c printf("$xci/liste_points$X
$c A=$xTV/COUPE
$c rectangulaire=FAUX
$c grand_carre=FAUX
$c centrer=VRAI
$c Cdenormaliser=FAUX
$c eX=FAUX
$c eY=FAUX
$c eNIVEAU=FAUX
$c points=VRAI
$c $formatI
$c | $SE -e 's/^.*=//'
$c > $xTV/COORDO.%04d.p\n"
$c ,n
$c );
$c
$c printf("set Npoints=`$CA $xTV/COORDO.%04d.p`\n"
$c ,n
$c );
$c
$c printf("if ($Npoints >= 1) then\n");
$c printf(" $xci/valeurs_alea$X
$c premiere=1
$c derniere=$Npoints
$c inf=-$fracZ
$c sup=+$fracZ
$c graine=%d
$c > $xTV/COORDT.%04d$COORD_Z\n"
$c ,(n*GRAINE)
$c ,n
$c );
$c printf(" @ CoordZ = %d - %d\n"
$c ,n,N0
$c );
$c printf(" set CoordZ=`$xci/coordonnees$X
$c abscisse=FAUX
$c ordonnee=FAUX
$c profondeur=VRAI
$c Z=$CoordZ
$c denormaliser=FAUX
$c Zmin=$Zmin Zmax=$Zmax`\n"
$c );
$c printf(" $xrv/ADD2.11$X
$c ne=$Npoints
$c fichier1=$CoordZ
$c fichier2=$xTV/COORDT.%04d$COORD_Z
$c > $xTV/COORDO.%04d$COORD_Z\n"
$c ,n
$c ,n
$c );
$c printf(" $DELETE $xTV/COORDT.%04d$COORD_Z\n"
$c ,n
$c );
$c printf(" $DELETE $xTV/COORDO.%04d.p\n"
$c ,n
$c );
$c
$c printf(" $CA $xTV/COORDO.%04d$COORD_X
$c >>! $xTV/COORDONNEES$COORD_X\n"
$c ,n
$c );
$c printf(" $CA $xTV/COORDO.%04d$COORD_Y
$c >>! $xTV/COORDONNEES$COORD_Y\n"
$c ,n
$c );
$c printf(" $CA $xTV/COORDO.%04d$COORD_Z
$c >>! $xTV/COORDONNEES$COORD_Z\n"
$c ,n
$c );
$c
$c printf(" if ($_____RVB == VRAI) then\n");
$c printf(" $xci/and$X
$c A1=$_____imagesA2.%04d$ROUGE
$c A2=$xTV/COUPE
$c $formatI |
$c $xci/liste_points$X
$c eX=FAUX
$c eY=FAUX
$c eNIVEAU=VRAI
$c points=FAUX
$c $formatI
$c | $SE -e 's/^.*=//'
$c > $xTV/COULEUR.%04d$ROUGE\n"
$c ,n,n
$c );
$c printf(" $xci/and$X
$c A1=$_____imagesA2.%04d$VERTE
$c A2=$xTV/COUPE
$c $formatI |
$c $xci/liste_points$X
$c eX=FAUX
$c eY=FAUX
$c eNIVEAU=VRAI
$c points=FAUX
$c $formatI
$c | $SE -e 's/^.*=//'
$c > $xTV/COULEUR.%04d$VERTE\n"
$c ,n,n
$c );
$c printf(" $xci/and$X
$c A1=$_____imagesA2.%04d$BLEUE
$c A2=$xTV/COUPE
$c $formatI |
$c $xci/liste_points$X
$c eX=FAUX
$c eY=FAUX
$c eNIVEAU=VRAI
$c points=FAUX
$c $formatI
$c | $SE -e 's/^.*=//'
$c > $xTV/COULEUR.%04d$BLEUE\n"
$c ,n,n
$c );
$c
$c printf(" $CA $xTV/COULEUR.%04d$ROUGE
$c >>! $FichierROUGE\n"
$c ,n
$c );
$c printf(" $CA $xTV/COULEUR.%04d$VERTE
$c >>! $FichierVERTE\n"
$c ,n
$c );
$c printf(" $CA $xTV/COULEUR.%04d$BLEUE
$c >>! $FichierBLEUE\n"
$c ,n
$c );
$c printf(" else\n");
$c printf(" endif\n");
$c printf("else\n");
$c printf("endif\n");
$c }
$c
$c }
$Z set NpointsX=`$WC $xTV/COORDONNEES$COORD_X`
$Z set NpointsX=$NpointsX[$WC1]
$Z set NpointsY=`$WC $xTV/COORDONNEES$COORD_Y`
$Z set NpointsY=$NpointsY[$WC1]
$Z set NpointsZ=`$WC $xTV/COORDONNEES$COORD_Z`
$Z set NpointsZ=$NpointsZ[$WC1]
$Z
$Z set NpointsXY=`$xcg/MIN2.01$X n1=$NpointsX n2=$NpointsY`
$Z set NpointsXYZ=`$xcg/MIN2.01$X n1=$NpointsXY n2=$NpointsZ`
$Z
$Z set Part0=1
$Z set PartN=$NpointsXYZ
$Z
$Z $xci/valeurs_alea$X \
$Z premiere=$Part0 derniere=$PartN \
$Z inf=$_____Rayon \
$Z sup=$_____Rayon \
$Z graine=9999 \
$Z > $xTV/COORDONNEES.r
$Z $DELETE $xTV/ROTATION$COORD_X
$Z $xci/valeurs_inte$X p=$PremiereR d=$DerniereR vD=$_____DRotOX vA=$_____ARotOX cubique=VRAI \
$Z > $xTV/ROTATION$COORD_X
$Z $DELETE $xTV/ROTATION$COORD_Y
$Z $xci/valeurs_inte$X p=$PremiereR d=$DerniereR vD=$_____DRotOY vA=$_____ARotOY cubique=VRAI \
$Z > $xTV/ROTATION$COORD_Y
$Z $DELETE $xTV/ROTATION$COORD_Z
$Z $xci/valeurs_inte$X p=$PremiereR d=$DerniereR vD=$_____DRotOZ vA=$_____ARotOZ cubique=VRAI \
$Z > $xTV/ROTATION$COORD_Z
$Z $xrv/particule.10$X \
$Z np=$Nimages \
$Z iterations=$NpointsXYZ \
$Z LISTE_X=$xTV/COORDONNEES$COORD_X \
$Z LISTE_Y=$xTV/COORDONNEES$COORD_Y \
$Z LISTE_Z=$xTV/COORDONNEES$COORD_Z \
$Z LISTE_ROUGE=$FichierROUGE \
$Z LISTE_VERTE=$FichierVERTE \
$Z LISTE_BLEUE=$FichierBLEUE \
$Z LISTE_RAYON=$xTV/COORDONNEES.r \
$Z zoom_automatique=FAUX ZOOM=0.7 \
$Z ROTATION_OX=$xTV/ROTATION$COORD_X \
$Z ROTATION_OY=$xTV/ROTATION$COORD_Y \
$Z ROTATION_OZ=$xTV/ROTATION$COORD_Z \
$Z coordonnees_dans_0_1=VRAI \
$Z brume=FAUX \
$Z Lz=1000 \
$Z ZminimumT=0.4 ZmaximumT=1.0 \
$Z Zminimum=0.4 Zmaximum=1.0 \
$Z N_au_carre=FAUX \
$Z RVB=$_____RVB \
$Z R=$_____imagesR. \
$Z $formatI