####################################################################################################################################### # # # T R A C E D E L ' H I S T O G R A M M E D E S M A S S E S : # # # # # # Author of '$xivP/disk.000000009/face.2/.REFN.C4.12.$U' : # # # # Jean-Francois Colonna (LACTAMME, 20211129103017). # # # ####################################################################################################################################### $Z SETParam _____Amplification 0.02 $Z SETParam _____YMax 1.05 $Z # Il est en fait quasiment impossible de faire que l'histogramme a tous les instants (et en # $Z # particulier au debut) tienne en vertical dans les images. Il est donc necessaire d'en # $Z # seuiller la coordonnee 'Y'. # $Z # # $Z # Au passage, j'ai essaye d'utiliser le logarihme de chaque colonne de l'histogramme, mais # $Z # cela est completement stupide puisque : # $Z # # $Z # log(COLONNE1)+log(COLONNE2) # log(COLONNE1+COLONNE2) # $Z # . # $Z # /|\ # $Z # | # $Z # C'est en fait le produit '*' qu'il faudrait ici ---- # $Z # # $Z # Et si l'on veut que les histogrammes soient comparables d'un instant a l'autre, il n'est # $Z # evidemment pas possible de faire une renormalisation a chaque instant... # $Z SETParam _____imagesF $_____imagesW $Z SETENVParam _____AXE_OY 0.1 #20211130120152____:$Z set DyNaMiQuE="$xrv/neutre$X" # #20211130151125____:$Z set DyNaMiQuE="$xrv/LOGX.01$X translation=1" # $Z set DyNaMiQuE="$xrv/neutre$X" $c #include <stdio.h> $c $c #define MIN2(a,b) (((a) < (b)) ? (a) : (b)) $c $c extern int atoi(); $c extern double atof(); $c extern char *getenv(); $c $c #define NA0 (atoi(getenv("PremiereA"))) $c #define NA (atoi(getenv("DerniereA"))) $c #20211130081354____:$c #define NOMBRE 20 # $c #define NOMBRE 40 $c /* Definition de la moitie (a 1 pres) de la taille de l'histogramme. */ $c #define AXE_OX_0 0.3 $c #define AXE_OX_N 0.7 $c #define AXE_OY (atof(getenv("_____AXE_OY"))) $c #define AXE_OZ 0.5 $c /* Definition des 3 axes. */ #20211130081354____:$c #define RAYON 0.012 # $c #define RAYON 0.006 $c /* Taille des boules de l'histogramme. */ $c $c int main() $c { $c int n; $c $c printf("$DELETE $xTV/LISTE_HISTOGRAMMES\n"); $c $c printf("$DELETE $xTV/MASSES\n"); $c $c printf("$CA $xTV/LISTE_POINTS | $c $GRE -v '^ *$' | $c $SE -e 's/^.*MASSE=//' $c -e 's/ .*$//' $c > $xTV/MASSES\n" $c ); $c $c printf("set MinMassesG=`$CA $xTV/MASSES | $xrv/extrema.01$X ne=0 fichier== ms=VRAI`\n"); $c printf("set MaxMassesG=`$CA $xTV/MASSES | $xrv/extrema.01$X ne=0 fichier== Ms=VRAI`\n"); $c $c printf("$DELETE $xTV/MASSES\n"); $c $c for (n=NA0 ; n<=NA ; n++) $c { $c printf("$DELETE $xTV/MASSES\n"); $c printf("$DELETE $xTV/HISTOGRAMME\n"); $c printf("$DELETE $xTV/COORD.1$COORD_X\n"); $c printf("$DELETE $xTV/COORD.2$COORD_X\n"); $c printf("$DELETE $xTV/COORDONNEES$COORD_X\n"); $c printf("$DELETE $xTV/COORD.1$COORD_Y\n"); $c printf("$DELETE $xTV/COORD.2$COORD_Y\n"); $c printf("$DELETE $xTV/COORDONNEES$COORD_Y\n"); $c printf("$DELETE $xTV/COORD.1$COORD_Z\n"); $c printf("$DELETE $xTV/COORD.2$COORD_Z\n"); $c printf("$DELETE $xTV/COORDONNEES$COORD_Z\n"); $c $c printf("$CA $xTV/LISTE_POINTS | $c $GRE 'periode=%d ' | $c $SE -e 's/^.*MASSE=//' $c -e 's/ .*$//' $c > $xTV/MASSES\n" $c ,n $c ); $c $c $c printf("$xrv/histogram.01$X $c ne=0 $c fichier=$xTV/MASSES $c nombre=%d $c forcer=VRAI minimum=$MinMassesG maximum=$MaxMassesG $c | $c $DyNaMiQuE $c ne=0 $c fichier== $c formater=VRAI signe=%c$K_VIDE%c $c > $xTV/HISTOGRAMME\n" $c ,(2*NOMBRE)+1 $c ,'\"' $c ,'\"' $c ); $c /* Il est preferable d'utiliser un nombre impair d'elements pour l'histogramme afin de */ $c /* garantir un centrage d'une barre unique dans le cas ou tous les elements du fichier */ $c /* '$xTV/MASSES' sont egaux et centres dans {minimum,maximum}. */ $c $c printf("set HistogrammeC=`$CA $xTV/HISTOGRAMME`\n"); $c $c printf("echo %ct=%04d $HistogrammeC%c $c >>! $xTV/LISTE_HISTOGRAMMES\n" $c ,'\"' $c ,n $c ,'\"' $c ); $c /* Le fichier '$xTV/LISTE_HISTOGRAMMES' a ete introduit le 20211201100040, il peut etre */ $c /* utile a posteriori... */ $c $c printf("set Lhistogramme=`$CA $xTV/HISTOGRAMME | $WCl`\n"); $c printf("@ Lhistogramme2 = $Lhistogramme * 2\n"); $c $c printf("$xci/valeurs_inte$X $c premiere=1 derniere=$Lhistogramme $c vD=%f vA=%f $c cubique=FAUX $c > $xTV/COORD.1$COORD_X\n" $c ,AXE_OX_0,AXE_OX_N $c ); $c printf("$xci/valeurs_inte$X $c premiere=1 derniere=$Lhistogramme $c vD=%f vA=%f $c cubique=FAUX $c > $xTV/COORD.2$COORD_X\n" $c ,AXE_OX_0,AXE_OX_N $c ); $c printf("$PAST $c $xTV/COORD.1$COORD_X $c $xTV/COORD.2$COORD_X | $c $R %c$K_TAB%c %c$K_NL%c $c > $xTV/COORDONNEES$COORD_X\n" $c ,'"','"','"','"' $c ); $c $c printf("$xci/valeurs_inte$X $c premiere=1 derniere=$Lhistogramme $c vD=%f vA=%f $c cubique=FAUX $c > $xTV/COORD.1$COORD_Y\n" $c ,AXE_OY,AXE_OY $c ); $c $c printf("$xrv/MUL2.11$X $c ne=0 $c fichier1=$xTV/HISTOGRAMME $c fichier2=$_____Amplification | $c $xrv/ADD2.11$X $c ne=0 $c fichier1== $c fichier2=%f | $c $xrv/MIN2.11$X $c ne=0 $c fichier1== $c fichier2=$_____YMax $c > $xTV/COORD.2$COORD_Y\n" $c ,AXE_OY $c ); $c printf("$PAST $c $xTV/COORD.1$COORD_Y $c $xTV/COORD.2$COORD_Y | $c $R %c$K_TAB%c %c$K_NL%c $c > $xTV/COORDONNEES$COORD_Y\n" $c ,'"','"','"','"' $c ); $c $c printf("$xrv/particule.10$X $c np=1 $c iterations=$Lhistogramme2 $c LISTE_X=$xTV/COORDONNEES$COORD_X $c LISTE_Y=$xTV/COORDONNEES$COORD_Y $c LISTE_Z=%f $c LISTE_ROUGE=$BLANC $c LISTE_VERTE=$BLANC $c LISTE_BLEUE=$BLANC $c LISTE_RAYON=%f $c zoom_automatique=FAUX ZOOM=1.0 $c isoles=FAUX $c chainer=FAUX $c ajuster_points=VRAI $c equidistance=VRAI $c couronne=1 $c fond=VRAI fond_dynamique=FAUX F=$_____imagesF.%04d $c Lz=100 $c editer_extrema_hors=FAUX $c R=$xTV/HIST.1. $c $formatI\n" $c ,AXE_OZ,RAYON,n $c ); $c $c printf("$xci/acces$X $c A=$xTV/HIST.1.%04d$ROUGE $c R=$_____imagesF.%04d$ROUGE $c $formatI\n" $c ,NA0,n $c ); $c printf("$xci/acces$X $c A=$xTV/HIST.1.%04d$VERTE $c R=$_____imagesF.%04d$VERTE $c $formatI\n" $c ,NA0,n $c ); $c printf("$xci/acces$X $c A=$xTV/HIST.1.%04d$BLEUE $c R=$_____imagesF.%04d$BLEUE $c $formatI\n" $c ,NA0,n $c ); $c } $c } $Z $DELETE $xTV/MASSES $Z $DELETE $xTV/HISTOGRAMME $Z $DELETE $xTV/COORD.1$COORD_X $Z $DELETE $xTV/COORD.2$COORD_X $Z $DELETE $xTV/COORDONNEES$COORD_X $Z $DELETE $xTV/COORD.1$COORD_Y $Z $DELETE $xTV/COORD.2$COORD_Y $Z $DELETE $xTV/COORDONNEES$COORD_Y $Z $DELETE $xTV/COORD.1$COORD_Z $Z $DELETE $xTV/COORD.2$COORD_Z $Z $DELETE $xTV/COORDONNEES$COORD_Z #20211129170252____:$Z $DELETE $xTV/LISTE_POINTS # $Z # Il est preferable de conserver le fichier '$xTV/LISTE_POINTS' au cas ou il serait # $Z # necessaire de le re-exploiter (aventure vecue...). #