####################################################################################################################################### # # # 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