####################################################################################################################################### # # # C O N S T R U C T I O N D ' U N E D O U B L E H E L I C E : # # # # # # Author of '$xiirv/.HELI.31.1.$U' : # # # # Jean-Francois COLONNA (LACTAMME, 20240417121948). # # # ####################################################################################################################################### $Z setParam _____NPaires 60 $Z setParam _____Supprimer "23" ####################################################################################################################################### # # # D E F I N I T I O N D E L A C O N S T A N T E 1 ( D I T E " P " ) : # # # ####################################################################################################################################### $Z setParam _____FDecimalesP $xrp/Decimales_Base10_Pi_____100000 $Z setParam _____ERayonP 0.8 $Z setParam _____ARayonP 0.00035 $Z setParam _____BRayonP 3 $Z setParam _____BNiveauP $NOIR_PLANCHER $Z setParam _____ANiveauP `calculINS (($GRIS_8-$_____BNiveauP)/10)/2` ####################################################################################################################################### # # # D E F I N I T I O N D E L A C O N S T A N T E 2 ( D I T E " E " ) : # # # ####################################################################################################################################### $Z setParam _____FDecimalesE $xrp/Decimales_Base10_E_____100000 $Z setParam _____ERayonE $_____ERayonP $Z setParam _____ARayonE $_____ARayonP $Z setParam _____BRayonE $_____BRayonP $Z setParam _____BNiveauE `calculINS $GRIS_4+$NOIR_PLANCHER` $Z setParam _____ANiveauE $_____ANiveauP ####################################################################################################################################### # # # D E F I N I T I O N D E L ' H E L I C E P R I M A I R E ( " 1 " ) : # # # ####################################################################################################################################### $Z setParam _____Rho1 0.2 $Z setParam _____Theta01 -$pis8 $Z setParam _____ThetaN1 `calcul $_____Theta01-2*$dpi` $Z setParam _____Y01 -0.5 $Z setParam _____YN1 +0.5 ####################################################################################################################################### # # # D E F I N I T I O N D E L ' H E L I C E S E C O N D A I R E ( " 2 " ) A B S E N T E P A R D E F A U T : # # # ####################################################################################################################################### $Z setParam _____Rho2 0 $Z setParam _____Theta02 -$pis8 $Z setParam _____ThetaN2 `calcul $_____Theta02-1*$dpi` $Z setParam _____Y02 -0.5 $Z setParam _____YN2 +0.5 ####################################################################################################################################### # # # D E F I N I T I O N D E L ' H E L I C E T E R T I A I R E ( " 3 " ) A B S E N T E P A R D E F A U T : # # # ####################################################################################################################################### $Z setParam _____Rho3 0 $Z setParam _____Theta03 -$pis8 $Z setParam _____ThetaN3 `calcul $_____Theta03-1*$dpi` $Z setParam _____Y03 -0.5 $Z setParam _____YN3 +0.5 ####################################################################################################################################### # # # D E F I N I T I O N D U T R A C E E T D E L ' E T I Q U E T T A G E : # # # ####################################################################################################################################### $Z setParam _____Niveau $GRIS_6 #20240428073216____:$Z setParam _____Palette $xiP/orange_cyan.32 # $Z setParam _____Palette $xiP/orange_cyan.33 $Z # La palette 'v $xiio/MIRE p=$xiP/orange_cyan.33' possede l'avantage de posseder 2 # $Z # demi-luminances lineaires... # $Z setParam _____DepthCueing 0.2 $Z # On rappelle que : # $Z # # $Z # _____DepthCueing=1 : pas de depth-cueing, # $Z # _____DepthCueing=0 : depth-cueing maximal. # $Z # # $Z setParam _____AttenuationBord 0 $Z setParam _____TranslationY +0.07 $Z # Afin de permettre a la double helice de sortir de l'image par le haut donnnant ainsi # $Z # l'idee d'une montee a l'infini, mais evidemment, il faut que '$_____NPaires' soit # $Z # suffisamment grand... # $Z setParam _____Zoom 1.90 $Z setParam _____VRayon 0.0025 $Z setParam _____ARayon `GetParam $xrv/particule.10$X Ar` $Z setParam _____Grossissement 4 $Z setParam _____DistanceMini 0.002 $Z setParam _____ParticulePara "$K_VIDE" $Z setParam _____Bibliotheque 6 $Z # La bibliotheque '6' est celle des dix chiffres centres. # $Z setParam _____NChiffres $_____NPaires $Z setParam _____KChiffres 0.0015 $Z setParam _____RChiffres 0.0020 $Z setParam _____ArgsGenere "$K_VIDE" $Z setParam _____ZChiffresAuto $NEXIST $Z setParam _____ZChiffres +0.012 $Z # Translation le long de 'OZ' destinee a ce que les chiffres soient devant les spheres # $Z # associees... # $Z # # $Z # Le 20240429172346, la possibilite d'ajuster automatiquement '$_____ZChiffres' a ete # $Z # introduite... # $Z setParam _____LPondE1 0.5 $Z setParam _____LPondE2 0.5 $Z setParam _____LPondP1 0.5 $Z setParam _____LPondP2 0.5 $Z set _____ParticulePara="$_____ParticulePara"" AXYZ=1 BXYZ=0" $Z set _____ParticulePara="$_____ParticulePara"" Zajuster=VRAI" ####################################################################################################################################### # # # D E F I N I T I O N S G E N E R A L E S : # # # ####################################################################################################################################### $Z FilSTmpB FTheta $Z FilSTmpB FCoOrDoNnEeS $Z @ NSuPpRiMEr = `echo "$_____Supprimer" | $WCc` $Z @ NSuPpRiMEr = $NSuPpRiMEr - 1 $Z @ NPaIrEsP1 = $_____NPaires + $NSuPpRiMEr $Z set DePhAsAgE1=$pi $Z set DePhAsAgE2=$DePhAsAgE1 $Z set DePhAsAgE3=0 $Z # Ainsi l'helice '3' n'a qu'un seul brin (les 2 brins sont en fait confondus...). # ####################################################################################################################################### # # # C O N S T R U C T I O N D E L ' H E L I C E P R I M A I R E ( " 1 " ) : # # # ####################################################################################################################################### $Z set PoStFiXe1=11 $Z set PoStFiXe2=12 $Z set ThEtA1=$_____Theta01 $Z set ThEtAN=$_____ThetaN1 $Z set DePhAsAgE=$DePhAsAgE1 $Z set RhO=$_____Rho1 $Z set CoOrDoNnEeY0=$_____Y01 $Z set CoOrDoNnEeYN=$_____YN1 $m4 _____include(_____xiirv/.HELI.31.2._____U) ####################################################################################################################################### # # # C O N S T R U C T I O N D E L ' H E L I C E S E C O N D A I R E ( " 2 " ) S I N E C E S S A I R E : # # # ####################################################################################################################################### $Z set PoStFiXe1=21 $Z set PoStFiXe2=22 $Z set ThEtA1=$_____Theta02 $Z set ThEtAN=$_____ThetaN2 $Z set DePhAsAgE=$DePhAsAgE2 $Z set RhO=$_____Rho2 $Z set CoOrDoNnEeY0=$_____Y02 $Z set CoOrDoNnEeYN=$_____YN2 $m4 _____include(_____xiirv/.HELI.31.2._____U) ####################################################################################################################################### # # # C O N S T R U C T I O N D E L ' H E L I C E T E R T I A I R E ( " 3 " ) S I N E C E S S A I R E : # # # ####################################################################################################################################### $Z set PoStFiXe1=31 $Z set PoStFiXe2=32 $Z set ThEtA1=$_____Theta03 $Z set ThEtAN=$_____ThetaN3 $Z set DePhAsAgE=$DePhAsAgE3 $Z set RhO=$_____Rho3 $Z set CoOrDoNnEeY0=$_____Y03 $Z set CoOrDoNnEeYN=$_____YN3 $m4 _____include(_____xiirv/.HELI.31.2._____U) ####################################################################################################################################### # # # C U M U L D E S H E L I C E S : # # # ####################################################################################################################################### $Z set LaMbDa=0.5 $Z $xrv/ADD3.11$X ne=$_____NPaires \ $Z fichier1=$FCoOrDoNnEeS$COORD_X.11 \ $Z fichier2=$FCoOrDoNnEeS$COORD_X.21 \ $Z fichier3=$FCoOrDoNnEeS$COORD_X.31 \ $Z > $FCoOrDoNnEeS$COORD_X.1 $Z $xrv/ADD3.11$X ne=$_____NPaires \ $Z fichier1=$FCoOrDoNnEeS$COORD_Z.11 \ $Z fichier2=$FCoOrDoNnEeS$COORD_Z.21 \ $Z fichier3=$FCoOrDoNnEeS$COORD_Z.31 \ $Z > $FCoOrDoNnEeS$COORD_Z.1 $Z set MiNiMuM_Y_21=`$xrv/extrema.01$X ne=$_____NPaires fichier=$FCoOrDoNnEeS$COORD_Y.21 ms=VRAI` $Z set MaXiMuM_Y_21=`$xrv/extrema.01$X ne=$_____NPaires fichier=$FCoOrDoNnEeS$COORD_Y.21 Ms=VRAI` $Z IfBasic ( (`$xcg/IFEQ.01$X n1=$MiNiMuM_Y_21 n2=$MoInS_L_InFiNi` == $EXIST) \ $Z || (`$xcg/IFEQ.01$X n1=$MaXiMuM_Y_21 n2=$MoInS_L_InFiNi` == $EXIST) \ $Z ) ThenBasic $Z $DELETE $FCoOrDoNnEeS$COORD_Y.21 $Z $xrv/neutre$X ne=$_____NPaires \ $Z fichier=$FCoOrDoNnEeS$COORD_Y.11 \ $Z > $FCoOrDoNnEeS$COORD_Y.21 $Z # Et ce afin que le '$xrv/BARY.11$X' qui va suivre soit "neutre"... # $Z ElseBasic $Z EndifBasic $Z $xrv/BARY.11$X ne=$_____NPaires \ $Z fichier1=$FCoOrDoNnEeS$COORD_Y.11 \ $Z fichier2=$FCoOrDoNnEeS$COORD_Y.21 \ $Z lambda=$LaMbDa | \ $Z $xrv/MAX2.11$X ne=$_____NPaires \ $Z fichier1== \ $Z fichier2=$FCoOrDoNnEeS$COORD_Y.31 \ $Z > $FCoOrDoNnEeS$COORD_Y.1 $Z # C'est non pas '$xrv/MAX3.11$X' mais la succession de '$xrv/BARY.11$X' et '$xrv/MAX2.11$X' # $Z # qui est utilise afin d'avoir la compatibilite anterieure... # $Z $xrv/ADD3.11$X ne=$_____NPaires \ $Z fichier1=$FCoOrDoNnEeS$COORD_X.12 \ $Z fichier2=$FCoOrDoNnEeS$COORD_X.22 \ $Z fichier3=$FCoOrDoNnEeS$COORD_X.32 \ $Z > $FCoOrDoNnEeS$COORD_X.2 $Z $xrv/ADD3.11$X ne=$_____NPaires \ $Z fichier1=$FCoOrDoNnEeS$COORD_Z.12 \ $Z fichier2=$FCoOrDoNnEeS$COORD_Z.22 \ $Z fichier3=$FCoOrDoNnEeS$COORD_Z.32 \ $Z > $FCoOrDoNnEeS$COORD_Z.2 $Z set MiNiMuM_Y_22=`$xrv/extrema.01$X ne=$_____NPaires fichier=$FCoOrDoNnEeS$COORD_Y.22 ms=VRAI` $Z set MaXiMuM_Y_22=`$xrv/extrema.01$X ne=$_____NPaires fichier=$FCoOrDoNnEeS$COORD_Y.22 Ms=VRAI` $Z IfBasic ( (`$xcg/IFEQ.01$X n1=$MiNiMuM_Y_22 n2=$MoInS_L_InFiNi` == $EXIST) \ $Z || (`$xcg/IFEQ.01$X n1=$MaXiMuM_Y_22 n2=$MoInS_L_InFiNi` == $EXIST) \ $Z ) ThenBasic $Z $DELETE $FCoOrDoNnEeS$COORD_Y.22 $Z $xrv/neutre$X ne=$_____NPaires \ $Z fichier=$FCoOrDoNnEeS$COORD_Y.12 \ $Z > $FCoOrDoNnEeS$COORD_Y.22 $Z # Et ce afin que le '$xrv/BARY.11$X' qui va suivre soit "neutre"... # $Z ElseBasic $Z EndifBasic $Z $xrv/BARY.11$X ne=$_____NPaires \ $Z fichier1=$FCoOrDoNnEeS$COORD_Y.12 \ $Z fichier2=$FCoOrDoNnEeS$COORD_Y.22 \ $Z lambda=$LaMbDa | \ $Z $xrv/MAX2.11$X ne=$_____NPaires \ $Z fichier1== \ $Z fichier2=$FCoOrDoNnEeS$COORD_Y.32 \ $Z > $FCoOrDoNnEeS$COORD_Y.2 $Z # C'est non pas '$xrv/MAX3.11$X' mais la succession de '$xrv/BARY.11$X' et '$xrv/MAX2.11$X' # $Z # qui est utilise afin d'avoir la compatibilite anterieure... # ####################################################################################################################################### # # # C O N S T R U C T I O N D E L A D O U B L E H E L I C E : # # # ####################################################################################################################################### $Z $PAST $FCoOrDoNnEeS$COORD_X.1 $FCoOrDoNnEeS$COORD_X.2 | \ $Z $AW ' { print $1 "\n" $2 } ' \ $Z > $FCoOrDoNnEeS$COORD_X.3 $Z $PAST $FCoOrDoNnEeS$COORD_Y.1 $FCoOrDoNnEeS$COORD_Y.2 | \ $Z $AW ' { print $1 "\n" $2 } ' \ $Z > $FCoOrDoNnEeS$COORD_Y.3 $Z $PAST $FCoOrDoNnEeS$COORD_Z.1 $FCoOrDoNnEeS$COORD_Z.2 | \ $Z $AW ' { print $1 "\n" $2 } ' \ $Z > $FCoOrDoNnEeS$COORD_Z.3 $Z # Les coordonnees ".3" sont celles de l'echelle joignant un brin a l'autre brin... # $Z FilSTmpB FNivEaUx $Z $CA $_____FDecimalesE | \ $Z $SE -e "s/^ *//" \ $Z -e "s/\.//" | \ $Z $GRE -v '^ *$' | \ $Z $SE -e "s/ //g" \ $Z -e "s/\(.\)/\1@/g" | \ $Z $R "@" "$K_NL" | \ $Z $GRE -v '^ *$' | \ $Z $HEA -$_____NPaires \ $Z > $FNivEaUx.1.1 $Z $CA $_____FDecimalesP | \ $Z $SE -e "s/^ *//" \ $Z -e "s/\.//" | \ $Z $GRE -v '^ *$' | \ $Z $SE -e "s/ //g" \ $Z -e "s/\(.\)/\1@/g" | \ $Z $R "@" "$K_NL" | \ $Z $GRE -v '^ *$' | \ $Z $HEA -$_____NPaires \ $Z > $FNivEaUx.2.1 $Z $CA $FNivEaUx.1.1 | \ $Z $xrv/AXPB.01$X ne=0 \ $Z fichier== \ $Z a=$_____ANiveauE b=$_____BNiveauE \ $Z formater=VRAI entiers=VRAI \ $Z > $FNivEaUx.1 $Z $CA $FNivEaUx.2.1 | \ $Z $xrv/AXPB.01$X ne=0 \ $Z fichier== \ $Z a=$_____ANiveauP b=$_____BNiveauP \ $Z formater=VRAI entiers=VRAI \ $Z > $FNivEaUx.2 $Z IfBasic ($NEXIST) ThenBasic $Z $xci/valeurs_inte$X p=1 d=$_____NPaires \ $Z vD=$_____ANiveauP vA=$_____BNiveauP \ $Z lineaire=VRAI \ $Z entiers=VRAI | \ $Z $xrv/neutre$X ne=0 \ $Z fichier== \ $Z exemplaires=2 \ $Z > $FNivEaUx.3 $Z ElseBasic $Z $PAST $FNivEaUx.1 $FNivEaUx.2 | \ $Z $AW ' { print $1 "\n" $2 } ' \ $Z > $FNivEaUx.3 $Z EndifBasic $Z $CA $FNivEaUx.1.1 | \ $Z $xrv/PUIX.01$X ne=0 \ $Z fichier== \ $Z exposant=$_____ERayonE | \ $Z $xrv/AXPB.01$X ne=0 \ $Z fichier== \ $Z a=$_____ARayonE b=$_____BRayonE \ $Z XPBA=VRAI \ $Z > $FNivEaUx$RAYON.1 $Z $CA $FNivEaUx.2.1 | \ $Z $xrv/PUIX.01$X ne=0 \ $Z fichier== \ $Z exposant=$_____ERayonP | \ $Z $xrv/AXPB.01$X ne=0 \ $Z fichier== \ $Z a=$_____ARayonP b=$_____BRayonP \ $Z XPBA=VRAI \ $Z > $FNivEaUx$RAYON.2 $Z IfBasic ($NEXIST) ThenBasic $Z $xci/valeurs_inte$X p=1 d=$_____NPaires \ $Z vD=$_____VRayon vA=$_____VRayon \ $Z lineaire=VRAI | \ $Z $xrv/neutre$X ne=0 \ $Z fichier== \ $Z exemplaires=2 \ $Z > $FNivEaUx$RAYON.3 $Z ElseBasic $Z $PAST $FNivEaUx$RAYON.1 $FNivEaUx$RAYON.2 | \ $Z $AW ' { print $1 "\n" $2 } ' \ $Z > $FNivEaUx$RAYON.3 $Z EndifBasic $Z @ NPoInTs = 2 * $_____NPaires $Z set MiNiMuM_R_3=`$xrv/extrema.01$X ne=$NPoInTs fichier=$FNivEaUx$RAYON.3 ms=VRAI` $Z set MaXiMuM_R_3=`$xrv/extrema.01$X ne=$NPoInTs fichier=$FNivEaUx$RAYON.3 Ms=VRAI` $Z set ArRoNdI=1000 $Z set MiNiMuM_R_3=`$xcg/MUL3.01$X a=$_____Grossissement b=$MiNiMuM_R_3 c=$ArRoNdI entiers=VRAI` $Z set MaXiMuM_R_3=`$xcg/MUL3.01$X a=$_____Grossissement b=$MaXiMuM_R_3 c=$ArRoNdI entiers=VRAI` $Z set ZChIfFrEs=`$xcg/MUL2.01$X a=$_____ZChiffres b=$ArRoNdI entiers=VRAI` $Z IfBasic ($_____ZChiffresAuto == $EXIST) ThenBasic $Z set _____ZChiffres=`calcul ($MaXiMuM_R_3+1)/$ArRoNdI` $Z ElseBasic $Z IfBasic (`$xcg/IFLT.01$X n1=$ZChIfFrEs n2=$MaXiMuM_R_3` == $EXIST) ThenBasic $Z EROR "Des chiffres risquent d'etre a l'interieur des spheres les plus grosses." $Z ElseBasic $Z EndifBasic $Z EndifBasic ####################################################################################################################################### # # # V I S U A L I S A T I O N D E L A D O U B L E H E L I C E : # # # ####################################################################################################################################### $Z alias ChAiNaGe 'set FiChIeR_A="\!:1" ; set FiChIeR_R="\!:2" ; \\ $Z $xrv/neutre$X ne=$_____NPaires \\ $Z fichier=$FiChIeR_A \\ $Z exemplaires=2 | \\ $Z $xrv/decalage.01$X ne=0 \\ $Z fichier== \\ $Z amplitude_decalage=1 | \\ $Z $HEA --lines=-2 \\ $Z > $FiChIeR_R ; \\ $Z unset FiChIeR_A FiChIeR_R' $Z # Commande destinee a permettre l'option "chainer=FAUX" ci-apres... # $Z ChAiNaGe $FCoOrDoNnEeS$COORD_X.1 $FCoOrDoNnEeS$COORD_X.1.chaine $Z ChAiNaGe $FCoOrDoNnEeS$COORD_Y.1 $FCoOrDoNnEeS$COORD_Y.1.chaine $Z ChAiNaGe $FCoOrDoNnEeS$COORD_Z.1 $FCoOrDoNnEeS$COORD_Z.1.chaine $Z ChAiNaGe $FNivEaUx.1 $FNivEaUx.1.chaine $Z ChAiNaGe $FNivEaUx$RAYON.1 $FNivEaUx$RAYON.1.chaine $Z # Ainsi on joint toutes les boules du brin "1" deux a deux... # $Z ChAiNaGe $FCoOrDoNnEeS$COORD_X.2 $FCoOrDoNnEeS$COORD_X.2.chaine $Z ChAiNaGe $FCoOrDoNnEeS$COORD_Y.2 $FCoOrDoNnEeS$COORD_Y.2.chaine $Z ChAiNaGe $FCoOrDoNnEeS$COORD_Z.2 $FCoOrDoNnEeS$COORD_Z.2.chaine $Z ChAiNaGe $FNivEaUx.2 $FNivEaUx.2.chaine $Z ChAiNaGe $FNivEaUx$RAYON.2 $FNivEaUx$RAYON.2.chaine $Z # Ainsi on joint toutes les boules du brin "2" deux a deux... # $Z $CA $FCoOrDoNnEeS$COORD_X.1.chaine $FCoOrDoNnEeS$COORD_X.2.chaine $FCoOrDoNnEeS$COORD_X.3 \ $Z > $FCoOrDoNnEeS$COORD_X.3.chaine $Z $CA $FCoOrDoNnEeS$COORD_Y.1.chaine $FCoOrDoNnEeS$COORD_Y.2.chaine $FCoOrDoNnEeS$COORD_Y.3 \ $Z > $FCoOrDoNnEeS$COORD_Y.3.chaine $Z $CA $FCoOrDoNnEeS$COORD_Z.1.chaine $FCoOrDoNnEeS$COORD_Z.2.chaine $FCoOrDoNnEeS$COORD_Z.3 \ $Z > $FCoOrDoNnEeS$COORD_Z.3.chaine $Z $CA $FNivEaUx.1.chaine $FNivEaUx.2.chaine $FNivEaUx.3 \ $Z > $FNivEaUx.3.chaine $Z $CA $FNivEaUx$RAYON.1.chaine $FNivEaUx$RAYON.2.chaine $FNivEaUx$RAYON.3 \ $Z > $FNivEaUx$RAYON.3.chaine $Z # Ainsi on trouve les boules du brin "1" jointes deux a deux, les boules du brin "2" # $Z # jointes deux a deux et enfin les barres joignant les boules brin "1" a celles du brin "2". # $Z set NPoInTs_X=`$CA $FCoOrDoNnEeS$COORD_X.3.chaine | $WCl` $Z set NPoInTs_Y=`$CA $FCoOrDoNnEeS$COORD_Y.3.chaine | $WCl` $Z set NPoInTs_Z=`$CA $FCoOrDoNnEeS$COORD_Z.3.chaine | $WCl` $Z set NPoInTs_chaine=`$xcg/MIN3.01$X x=$NPoInTs_X y=$NPoInTs_Y z=$NPoInTs_Z` $Z FilSTmpB ZBuFfEr $Z $xrv/particule.10$X npoints=$NPoInTs_chaine \ $Z LISTE_X=$FCoOrDoNnEeS$COORD_X.3.chaine \ $Z LISTE_Y=$FCoOrDoNnEeS$COORD_Y.3.chaine \ $Z TRANSLATION_OY=$_____TranslationY \ $Z LISTE_Z=$FCoOrDoNnEeS$COORD_Z.3.chaine \ $Z LISTE_NIVEAU=$FNivEaUx.3.chaine \ $Z LISTE_RAYON=$FNivEaUx$RAYON.3.chaine \ $Z grossissement=$_____Grossissement \ $Z Ar=$_____ARayon \ $Z p=$_____Palette \ $Z isoles=FAUX chainer=FAUX \ $Z ajuster_points=VRAI equidistance=VRAI \ $Z distance_minimale=$_____DistanceMini \ $Z Lz=1000 \ $Z ZOOM=$_____Zoom \ $Z Zminimum=$_____DepthCueing ZminimumT=$_____DepthCueing \ $Z Zmaximum=1 ZmaximumT=1 \ $Z N_au_carre=FAUX \ $Z editer_extrema_hors=FAUX \ $Z editer_mauvais_encadrement_niveaux_interpoles=FAUX \ $Z fond=VRAI F=$xTV/FOND \ $Z ZBuffer_initial=-100 \ $Z Z0=-100 \ $Z ZBuffer=VRAI Z=$ZBuFfEr ATTENTION=FAUX \ $Z $_____ParticulePara \ $Z chiffres=0 \ $Z R=$_____ImageR \ $Z $formatI $Z # Le parametre "ATTENTION=FAUX" est destine a eliminer le message edite par # $Z # par 'v $xrv/champs_5.1A$I PRINT_ATTENTION..c.est.le..Z.Buffer..qui.va.etre.memorise.' # ####################################################################################################################################### # # # E T I Q U E T T A G E D E S B O U L E S A V E C L E S C H I F F R E S : # # # ####################################################################################################################################### $Z set PaRaMeTrEs="$K_VIDE" $Z set PaRaMeTrEs="$PaRaMeTrEs"" p=$_____Palette" $Z set PaRaMeTrEs="$PaRaMeTrEs"" ajuster_points=VRAI equidistance=VRAI" $Z set PaRaMeTrEs="$PaRaMeTrEs"" distance_minimale=$_____DistanceMini" $Z set PaRaMeTrEs="$PaRaMeTrEs"" grossissement=$_____Grossissement" $Z set PaRaMeTrEs="$PaRaMeTrEs"" Lz=1000" $Z set PaRaMeTrEs="$PaRaMeTrEs"" ZOOM=$_____Zoom" $Z set PaRaMeTrEs="$PaRaMeTrEs"" Zminimum=$_____DepthCueing ZminimumT=$_____DepthCueing" $Z set PaRaMeTrEs="$PaRaMeTrEs"" Zmaximum=1 ZmaximumT=1" $Z set PaRaMeTrEs="$PaRaMeTrEs"" attenuation_au_bord=$_____AttenuationBord" $Z set PaRaMeTrEs="$PaRaMeTrEs"" N_au_carre=FAUX" $Z set PaRaMeTrEs="$PaRaMeTrEs"" editer_extrema_hors=FAUX" $Z set PaRaMeTrEs="$PaRaMeTrEs"" editer_mauvais_encadrement_niveaux_interpoles=FAUX" $Z set PaRaMeTrEs="$PaRaMeTrEs"" fond=VRAI F=$_____ImageR" $Z set PaRaMeTrEs="$PaRaMeTrEs"" Zfond=VRAI ZF=$ZBuFfEr ATTENTION=FAUX CAL1=FAUX" $Z set PaRaMeTrEs="$PaRaMeTrEs"" ZBuffer=VRAI Z=$ZBuFfEr ATTENTION=FAUX" $Z set PaRaMeTrEs="$PaRaMeTrEs"" $_____ParticulePara" $Z set PaRaMeTrEs="$PaRaMeTrEs"" chiffres=0" $Z # Les parametres "ATTENTION=FAUX CAL1=FAUX" sont destines a eliminer les messages edites # $Z # par 'v $xiii/files$FON VERIFICATION_HEURISTIQUE_DES_genere_Float' ainsi que ceux de # $Z # 'v $xrv/champs_5.1A$I PRINT_ATTENTION..c.est.le..Z.Buffer..qui.va.etre.memorise.' # $Z set PaRaMeTrEs_1="$K_VIDE" $Z set PaRaMeTrEs_1="$PaRaMeTrEs_1"" npoints=$_____NPaires" $Z set PaRaMeTrEs_1="$PaRaMeTrEs_1"" LISTE_X=$FCoOrDoNnEeS$COORD_X.1" $Z set PaRaMeTrEs_1="$PaRaMeTrEs_1"" LISTE_Y=$FCoOrDoNnEeS$COORD_Y.1" $Z set PaRaMeTrEs_1="$PaRaMeTrEs_1"" TRANSLATION_OY=$_____TranslationY" $Z set PaRaMeTrEs_1="$PaRaMeTrEs_1"" LISTE_Z=$FCoOrDoNnEeS$COORD_Z.1" $Z set PaRaMeTrEs_1="$PaRaMeTrEs_1"" LISTE_NIVEAU=$FNivEaUx.1" $Z set PaRaMeTrEs_1="$PaRaMeTrEs_1"" LISTE_RAYON=$FNivEaUx$RAYON.1" $Z set PaRaMeTrEs_1="$PaRaMeTrEs_1"" $PaRaMeTrEs" $Z set PaRaMeTrEs_2="$K_VIDE" $Z set PaRaMeTrEs_2="$PaRaMeTrEs_2"" npoints=$_____NPaires" $Z set PaRaMeTrEs_2="$PaRaMeTrEs_2"" LISTE_X=$FCoOrDoNnEeS$COORD_X.2" $Z set PaRaMeTrEs_2="$PaRaMeTrEs_2"" LISTE_Y=$FCoOrDoNnEeS$COORD_Y.2" $Z set PaRaMeTrEs_2="$PaRaMeTrEs_2"" TRANSLATION_OY=$_____TranslationY" $Z set PaRaMeTrEs_2="$PaRaMeTrEs_2"" LISTE_Z=$FCoOrDoNnEeS$COORD_Z.2" $Z set PaRaMeTrEs_2="$PaRaMeTrEs_2"" LISTE_NIVEAU=$FNivEaUx.2" $Z set PaRaMeTrEs_2="$PaRaMeTrEs_2"" LISTE_RAYON=$FNivEaUx$RAYON.2" $Z set PaRaMeTrEs_2="$PaRaMeTrEs_2"" $PaRaMeTrEs" $Z FilSTmpB FCoOrDoNnEeS_T $Z $xrv/particule.10$X \ $Z $PaRaMeTrEs_1 \ $Z isoles=VRAI chainer=FAUX \ $Z lister_les_points=VRAI lister_les_points_apres=VRAI \ $Z R=$xTV/HELI.31 \ $Z $formatI \ $Z > $FCoOrDoNnEeS_T.1 $Z # Pour definir la position des chiffres de la premiere constante ('e' par defaut). # $Z $xrv/particule.10$X \ $Z $PaRaMeTrEs_2 \ $Z isoles=VRAI chainer=FAUX \ $Z lister_les_points=VRAI lister_les_points_apres=VRAI \ $Z R=$xTV/HELI.31 \ $Z $formatI \ $Z > $FCoOrDoNnEeS_T.2 $Z # Pour definir la position des chiffres de la seconde constante ('pi' par defaut). # $Z $CA $FCoOrDoNnEeS_T.1 | \ $Z $AW ' { print $3 } ' | \ $Z $SE -e 's/^.*=//' \ $Z > $FCoOrDoNnEeS_T$COORD_X.1 $Z $CA $FCoOrDoNnEeS_T.1 | \ $Z $AW ' { print $4 } ' | \ $Z $SE -e 's/^.*=//' \ $Z > $FCoOrDoNnEeS_T$COORD_Y.1 $Z $CA $FCoOrDoNnEeS_T.1 | \ $Z $AW ' { print $5 } ' | \ $Z $SE -e 's/^.*=//' \ $Z > $FCoOrDoNnEeS_T$COORD_Z.1 $Z $CA $FCoOrDoNnEeS_T.2 | \ $Z $AW ' { print $3 } ' | \ $Z $SE -e 's/^.*=//' \ $Z > $FCoOrDoNnEeS_T$COORD_X.2 $Z $CA $FCoOrDoNnEeS_T.2 | \ $Z $AW ' { print $4 } ' | \ $Z $SE -e 's/^.*=//' \ $Z > $FCoOrDoNnEeS_T$COORD_Y.2 $Z $CA $FCoOrDoNnEeS_T.2 | \ $Z $AW ' { print $5 } ' | \ $Z $SE -e 's/^.*=//' \ $Z > $FCoOrDoNnEeS_T$COORD_Z.2 $Z set LChIfFrEs_E=`$CA $FNivEaUx.1.1 | $HEA -$_____NChiffres` $Z set LCoOrDoNnEeS_EX=`$CA $FCoOrDoNnEeS_T$COORD_X.1 | $HEA -$_____NChiffres` $Z set LCoOrDoNnEeS_EY=`$CA $FCoOrDoNnEeS_T$COORD_Y.1 | $HEA -$_____NChiffres` $Z set LCoOrDoNnEeS_EZ=`$CA $FCoOrDoNnEeS_T$COORD_Z.1 | $HEA -$_____NChiffres` $Z set LChIfFrEs_P=`$CA $FNivEaUx.2.1 | $HEA -$_____NChiffres` $Z set LCoOrDoNnEeS_PX=`$CA $FCoOrDoNnEeS_T$COORD_X.2 | $HEA -$_____NChiffres` $Z set LCoOrDoNnEeS_PY=`$CA $FCoOrDoNnEeS_T$COORD_Y.2 | $HEA -$_____NChiffres` $Z set LCoOrDoNnEeS_PZ=`$CA $FCoOrDoNnEeS_T$COORD_Z.2 | $HEA -$_____NChiffres` $Z FilSTmpB FEtIqUeTtAgE $Y $Z $CA $xcs/csh$Y \ $Z >> $FEtIqUeTtAgE $Z echo 'source $xrd/graph.01$vv$Y' \ $Z >> $FEtIqUeTtAgE $Z echo "set G_Alphabet=$_____Bibliotheque" \ $Z >> $FEtIqUeTtAgE $Z echo "G_K $_____KChiffres" \ $Z >> $FEtIqUeTtAgE $Z echo "G_Zoom $_____Zoom" \ $Z >> $FEtIqUeTtAgE $Z IfBasic ($_____Bibliotheque == 0) ThenBasic $Z set TrAnSlX=-0.002 $Z set TrAnSlY=-0.005 $Z ElseBasic $Z set TrAnSlX=0 $Z set TrAnSlY=0 $Z EndifBasic $Z set TrAnSlZ=$_____ZChiffres $Z set NiVeAu_R=$BLANC $Z set NiVeAu_V=$BLANC $Z set NiVeAu_B=$BLANC $Z set AGeNeRe_C="$K_VIDE" $Z set AGeNeRe_C="$AGeNeRe_C"" couronne=1" $Z set AGeNeRe_C="$AGeNeRe_C"" fond=VRAI" $Z set AGeNeRe_C="$AGeNeRe_C"" F=$_____ImageR" $Z set AGeNeRe_C="$AGeNeRe_C"" BZ=0.5" $Z set AGeNeRe_C="$AGeNeRe_C"" Zfond=VRAI ZF=$ZBuFfEr" $Z set AGeNeRe_C="$AGeNeRe_C"" ZBuffer=VRAI Z=$ZBuFfEr" $Z set AGeNeRe_C="$AGeNeRe_C"" ATTENTION=FAUX" $Z set AGeNeRe_C="$AGeNeRe_C"" $_____ArgsGenere" $Z alias GeNeRe_C 'set ChIfFrEX="\!:1" ; set ChIfFrEy="\!:2" ; set ChIfFrEZ="\!:3" ; \\ $Z echo "G_Cursor1 $ChIfFrEX $ChIfFrEY $ChIfFrEZ" \\ $Z >> $FEtIqUeTtAgE ; \\ $Z echo "G_Cursor2"" $NiVeAu_R "" $NiVeAu_V "" $NiVeAu_B " \\ $Z >> $FEtIqUeTtAgE ; \\ $Z echo "G_Cursor3"" $_____RChiffres" \\ $Z >> $FEtIqUeTtAgE ; \\ $Z echo "G_Quelc $K_QA""G_Message $K_QD$ChIfFrEC$K_QD$K_QA" \\ $Z >> $FEtIqUeTtAgE ; \\ $Z echo "G_Zoom 1" \\ $Z >> $FEtIqUeTtAgE ; \\ $Z unset ChIfFrEX ChIfFrEY ChIfFrEZ' $Z set DeCoMpTeUr=$_____NChiffres $Z set index=1 $Z while ($DeCoMpTeUr > 0) $Z set ChIfFrE_=$LChIfFrEs_E[$index] $Z IfBasic ($_____Bibliotheque == 0) ThenBasic $Z set ChIfFrEC=`echo "$ChIfFrE_" | $R "0" "O" | $SE -e "s/1/|/g"` $Z ElseBasic $Z set ChIfFrEC="$ChIfFrE_" $Z EndifBasic $Z set ChIfFrEX=`$xcg/ADD2.01$X a=$LCoOrDoNnEeS_EX[$index] b=$TrAnSlX` $Z set ChIfFrEY=`$xcg/ADD2.01$X a=$LCoOrDoNnEeS_EY[$index] b=$TrAnSlY` $Z set ChIfFrEZ=`$xcg/ADD2.01$X a=$LCoOrDoNnEeS_EZ[$index] b=$TrAnSlZ` $Z GeNeRe_C $ChIfFrEX $ChIfFrEY $ChIfFrEZ $Z # Ecriture des chiffres successifs de la deuxieme constante ('e' par defaut). # $Z set ChIfFrE_=$LChIfFrEs_P[$index] $Z IfBasic ($_____Bibliotheque == 0) ThenBasic $Z set ChIfFrEC=`echo "$ChIfFrE_" | $R "0" "O" | $SE -e "s/1/|/g"` $Z ElseBasic $Z set ChIfFrEC="$ChIfFrE_" $Z EndifBasic $Z set ChIfFrEX=`$xcg/ADD2.01$X a=$LCoOrDoNnEeS_PX[$index] b=$TrAnSlX` $Z set ChIfFrEY=`$xcg/ADD2.01$X a=$LCoOrDoNnEeS_PY[$index] b=$TrAnSlY` $Z set ChIfFrEZ=`$xcg/ADD2.01$X a=$LCoOrDoNnEeS_PZ[$index] b=$TrAnSlZ` $Z GeNeRe_C $ChIfFrEX $ChIfFrEY $ChIfFrEZ $Z # Ecriture des chiffres successifs de la premiere constante ('pi' par defaut). # $Z @ index = $index + 1 $Z @ DeCoMpTeUr = $DeCoMpTeUr - 1 $Z end $Z echo "G_Genere $_____ImageR $AGeNeRe_C" \ $Z >> $FEtIqUeTtAgE $Z echo "G_Delete" \ $Z >> $FEtIqUeTtAgE $Z source $FEtIqUeTtAgE $Z FilSTmpE FEtIqUeTtAgE $Z FilSTmpE FCoOrDoNnEeS_T $Z FilSTmpE ZBuFfEr $Z FilSTmpE FNivEaUx $Z FilSTmpE FCoOrDoNnEeS $Z FilSTmpE FTheta $Z set LCoOrDoNnEe_EX=`calcul ($LCoOrDoNnEeS_EX[1]-($_____LPondE2*$LCoOrDoNnEeS_EX[2]))/$_____LPondE1` $Z set LCoOrDoNnEe_EY=`calcul ($LCoOrDoNnEeS_EY[1]-($_____LPondE2*$LCoOrDoNnEeS_EY[2]))/$_____LPondE1` $Z set LCoOrDoNnEe_EZ=`calcul ($LCoOrDoNnEeS_EZ[1]-($_____LPondE2*$LCoOrDoNnEeS_EZ[2]))/$_____LPondE1` $Z set LCoOrDoNnEe_PX=`calcul ($LCoOrDoNnEeS_PX[1]-($_____LPondP2*$LCoOrDoNnEeS_PX[2]))/$_____LPondP1` $Z set LCoOrDoNnEe_PY=`calcul ($LCoOrDoNnEeS_PY[1]-($_____LPondP2*$LCoOrDoNnEeS_PY[2]))/$_____LPondP1` $Z set LCoOrDoNnEe_PZ=`calcul ($LCoOrDoNnEeS_PZ[1]-($_____LPondP2*$LCoOrDoNnEeS_PZ[2]))/$_____LPondP1` $Z # Le point d'ancrage L des legendes est defini par rapport au premier point D1 et au # $Z # second point D2 d'ancrage des deux premieres decimales tel que : # $Z # # $Z # L + D2 # $Z # D1 = -------- # $Z # 2 # $Z # Ceci fut generalise le 20240429093639 sous la forme : # $Z # # $Z # D1 = (L/2) + (D2/2) # $Z # # $Z # soit : # $Z # # $Z # D1 = (P1xL) + (P2xD2) # $Z # # $Z # avec par defaut : # $Z # # $Z # P1 = 1/2 # $Z # P2 = 1/2 # $Z # # $Z # et necessairement : # $Z # # $Z # P1+P2 = 1 # $Z # #