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