#######################################################################################################################################
# #
# G E N E R A T I O N D ' U N E N T R E L A C S A P A R T I R D ' U N E I M A G E #
# O U D ' U N E S U R F A C E ( A R B I T R A I R E S ) : #
# #
# #
# Author of '$xiirv/.ENTR.61.1.$U' : #
# #
# Jean-Francois COLONNA (LACTAMME, 20051202094013). #
# #
#######################################################################################################################################
$Z setParam _____Graine 1234567
$Z setParam _____Increment 123
$Z setParam _____MinZ 0.0
$Z setParam _____MaxZ 1.0
$Z setParam _____NVoisins 3
$Z setParam _____NiveauR_D $GRIS_1
$Z setParam _____NiveauV_D $GRIS_1
$Z setParam _____NiveauB_D $GRIS_1
$Z setParam _____NiveauR_A $GRIS_8
$Z setParam _____NiveauV_A $GRIS_8
$Z setParam _____NiveauB_A $GRIS_8
$Z setParam _____RayonInf 0.01
$Z setParam _____RayonSup $_____RayonInf
$Z setParam _____Grossissement 1
$Z setParam _____Zoom 0.8
$Z setParam _____RotationOX 0.0
$Z setParam _____RotationOY 0.0
$Z setParam _____RotationOZ 0.0
$Z setParam _____Points 32
$Z setParam _____NombreR 1
$Z setParam _____Derivee 1.0
$Z setParam _____ParticulePara1 "$K_VIDE"
$Z # Parametre introduit le 20051230134713... #
$Z alias Graines 'set VaRiAbLe="\!*" ; \\
$Z GenRdn ; \\
$Z eval "set $VaRiAbLe=$GenRdnValeur" ; \\
$Z unset VaRiAbLe FiLeT'
$Z # Generateur des differentes graines ... #
$Z
$Z set GenRdnGraine=$_____Graine
$Z set GenRdnIncrement=$_____Increment
$Z # Parametrage du generateur aleatoire... #
$Z
$Z Graines Graine_S
$Z Graines Graine_P
$Z
$Z Graines Graine_Z
$Z
$Z Graines Graine_R
$Z Graines Graine_V
$Z Graines Graine_B
$Z
$Z Graines Graine_r
$Z if (($?_____SurfaceA == $EXIST) && ($?_____ImageA == $EXIST)) then
$Z # Test introduit le 20051217102608... #
$Z EROR "L'entrelacs ne peut etre defini simultanement par une Surface et par une Image \c"
$Z echo "(l'Image l'emporte sur la surface...)."
$Z else
$Z endif
$Z SETParam _____EntrelacsSurface $NEXIST
$Z # Definition passee de 'set' a 'SET' le 20150611134340 a cause du fait que cette variable #
$Z # figure plus loin dans un 'if(...)' qui lui-meme a l'interieur d'un autre 'if(...)' dans #
$Z # lequel la variable '$_____SurfaceA' est testee... #
$Z set N_Au_CaRrE=VRAI
$Z # Variable introduite le 20051226162037 pour simplifier l'acceleration temporaires du #
$Z # processus lors de tests de mise au point des parametres... #
$Z if ($?_____SurfaceA == $EXIST) then
$Z # Test introduit le 20051215093125... #
$Z set SurfaceEffective=$_____SurfaceA
$Z if (! -e $SurfaceEffective) then
$Z set SurfaceEffective=$xrs/$SurfaceEffective
$Z if (! -e $SurfaceEffective) then
$Z set SurfaceEffective=$SurfaceEffective$X
$Z # Possibilite introduite le 20051217182507 ; elle permet d'omettre '$xrs' et '$X'... #
$Z else
$Z endif
$Z else
$Z endif
$Z setParam _____Pu 0.5
$Z setParam _____Pv 0.5
$Z setParam _____SurfaceParam1 "$K_VIDE"
$Z # Parametre introduit le 20051215103312 et "detriple" le 20051223165420 afin de pouvoir #
$Z # controler de facon separee '$xTV/SURFACE.1' et '$xTV/SURFACE.2'. Ainsi, donc ce parametre #
$Z # controle '$xTV/SURFACE.1'... #
$Z setParam _____SurfaceParam2 "$K_VIDE"
$Z # Parametre introduit le 20051223165420 pour controler '$xTV/SURFACE.2'. #
$Z setParam _____SurfaceParam12 "$K_VIDE"
$Z # Parametre introduit le 20051223165420 pour controler '$xTV/SURFACE.1' et '$xTV/SURFACE.2'. #
$Z if ($_____EntrelacsSurface == $EXIST) then
$Z # Possibilite introduite le 20051220104453 pour placer l'entrelacs par rapport a la surface #
$Z # generatrice... #
$Z setParam _____RVB0 0.2
$Z # Introduit le 20051220220553... #
$Z setParam _____RayonSurface 0.030
$Z $DELETE $xTV/MAILLAGE
$Z $SurfaceEffective \
$Z np=1 \
$Z pu=$_____Pu pv=$_____Pv \
$Z eu=40 ev=40 \
$Z dpu=80 dpv=80 \
$Z lister_les_points=VRAI lister_les_points_apres=VRAI \
$Z TZliste=0.5 \
$Z carree=VRAI petit_carre=FAUX \
$Z RVB=FAUX RVB0=$_____RVB0 \
$Z Lz=1000 \
$Z ZOOM=$_____Zoom \
$Z rayon_de_visualisation=$_____RayonSurface \
$Z N_AU_CARRE=$N_Au_CaRrE \
$Z edc=VRAI \
$Z $_____SurfaceParam1 \
$Z $_____SurfaceParam12 \
$Z R=$xTV/SURFACE.1 chiffres=0 \
$Z CAL1=FAUX \
$Z $formatI | \
$Z $GRE -v '^ *$' \
$Z > $xTV/MAILLAGE
$Z # Le 20051223165420, {{eu,ev},{dpu,dpv}} ont vu leurs valeurs doubler et passer de #
$Z # {{20,20},{40,40}} a {{40,40},{80,80}}. On notera au passage que c'est ce rapport 40/80=1/2 #
$Z # qui fait que sur une image telle 'v $xiirv/ENTR.E1.0' il n'y a qu'un point sur deux pour #
$Z # la coordonnee 'u' et qu'un point sur deux pour la coordonnee 'v' (c'est-a-dire au total #
$Z # un point -ou noeud- sur quatre) du maillage {u,v} qui soit utilise comme point d'ancrage #
$Z # de l'entrelacs... #
$Z # #
$Z # Le "CAL1=FAUX" a ete introduit le 20051226114314 afin de permettre d'introduire comme #
$Z # '$SurfaceEffective' autre chose que des "vraies" surfaces (par exemple '$xrk/lorenz.11$X' #
$Z # qui ne reconnait pas les arguments relatifs aux coordonnees de parametrage {u,v}...). #
$Z set ZoomSurface="ZOOM=$_____Zoom"
$Z # Les deux occurences de '$SurfaceEffective' doivent avoir le meme zoom... #
$Z set ZoomParticule="$K_VIDE"
$Z set ZoomParticule="ZOOM=1"
$Z set ZoomParticule="$ZoomParticule sAX="`calcul $dimX/$dimY`
$Z set ZoomParticule="$ZoomParticule sAY="`calcul $dimX/$dimY`
$Z set ZoomParticule="$ZoomParticule sAZ=""1"
$Z # Par contre, dans le cas '$_____EntrelacsSurface == $EXIST', '$xrv/particule.10$X' ne #
$Z # peut avoir qu'un zoom "neutre", sous peine d'avoir finalement deux rapports de zoom #
$Z # en general differents : un pour '$xTV/Z_BUFFER' (egal a '$_____Zoom') et un autre pour #
$Z # l'entrelacs dans '$xrv/particule.10$X' egal au produit du zoom propre a ce dernier #
$Z # programme et du zoom de generation de '$xTV/SURFACE.2' (egal a '$_____Zoom'). Le rapport #
$Z # de zoom dit "neutre" est evidemment egal a 1 ; il est aussi necessaire d'utiliser des #
$Z # "super-echelles" relatives a 'OX' et a 'OY' egales a dimX/dimY ; cela vient de l'usage de #
$Z # "carree=VRAI petit_carre=FAUX" pour generer '$xTV/COORDONNEES' qui divise les coordonnees #
$Z # 'Y' par ce meme rapport (ce qui fait d'un cercle, une ellipse allongee horizontalement), #
$Z # mais comme les coordonnees sont mises dans [0,1], cela fait comme si les deux coordonnees #
$Z # 'X' et 'Y' avaient ete divisees par ce rapport. #
$Z $DELETE $xTV/MAILLAGE$COORD_X
$Z $DELETE $xTV/MAILLAGE$COORD_Y
$Z $DELETE $xTV/MAILLAGE$COORD_Z
$Z $CA $xTV/MAILLAGE | \
$Z $SE -e "s/^.* X=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' | \
$Z $xrv/neutre$X ne=0 \
$Z fichier== \
$Z exemplaires=2 \
$Z > $xTV/MAILLAGE$COORD_X
$Z # Le $xrv/neutre$X' precedent (ainsi que les six autres qui suivent) sont destinees a faire #
$Z # uniquement "exemplaires=2" car, en effet, il est necessaire de doubler chaque valeur #
$Z # puisque le '$xrv/particule.10$X' final fait un "isoles=FAUX". Ainsi donc les points ici #
$Z # recuperes, ayant ete doubles, donneront chacun naissanace a une chaine de longueur nulle... #
$Z $CA $xTV/MAILLAGE | \
$Z $SE -e "s/^.* Y=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' | \
$Z $xrv/neutre$X ne=0 \
$Z fichier== \
$Z exemplaires=2 \
$Z > $xTV/MAILLAGE$COORD_Y
$Z $CA $xTV/MAILLAGE | \
$Z $SE -e "s/^.* Z=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' | \
$Z $xrv/neutre$X ne=0 \
$Z fichier== \
$Z exemplaires=2 \
$Z > $xTV/MAILLAGE$COORD_Z
$Z $DELETE $xTV/MAILLAGE$ROUGE
$Z $DELETE $xTV/MAILLAGE$VERTE
$Z $DELETE $xTV/MAILLAGE$BLEUE
$Z $CA $xTV/MAILLAGE | \
$Z $SE -e "s/^.* ROUGE=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' | \
$Z $xrv/neutre$X ne=0 \
$Z fichier== \
$Z exemplaires=2 \
$Z > $xTV/MAILLAGE$ROUGE
$Z $CA $xTV/MAILLAGE | \
$Z $SE -e "s/^.* VERTE=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' | \
$Z $xrv/neutre$X ne=0 \
$Z fichier== \
$Z exemplaires=2 \
$Z > $xTV/MAILLAGE$VERTE
$Z $CA $xTV/MAILLAGE | \
$Z $SE -e "s/^.* BLEUE=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' | \
$Z $xrv/neutre$X ne=0 \
$Z fichier== \
$Z exemplaires=2 \
$Z > $xTV/MAILLAGE$BLEUE
$Z $DELETE $xTV/MAILLAGE$RAYON
$Z $CA $xTV/MAILLAGE | \
$Z $SE -e "s/^.* RAYON=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' | \
$Z $xrv/neutre$X ne=0 \
$Z fichier== \
$Z exemplaires=2 \
$Z > $xTV/MAILLAGE$RAYON
$Z else
$Z set ZoomSurface="$K_VIDE"
$Z # Dans ce cas, pour assurer la compatibilite anterieure au 20051220142511, il faut #
$Z # conserver le rapport de zoom par defaut... #
$Z endif
$Z $DELETE $xTV/COORDONNEES
$Z $SurfaceEffective \
$Z np=1 \
$Z pu=$_____Pu pv=$_____Pv \
$Z lister_les_points=VRAI lister_les_points_apres=VRAI \
$Z TZliste=0.5 \
$Z carree=VRAI petit_carre=FAUX \
$Z $ZoomSurface \
$Z N_AU_CARRE=$N_Au_CaRrE \
$Z $_____SurfaceParam2 \
$Z $_____SurfaceParam12 \
$Z R=$xTV/SURFACE.2 chiffres=0 \
$Z CAL1=FAUX \
$Z $formatI | \
$Z $GRE -v '^ *$' \
$Z > $xTV/COORDONNEES
$Z # Recuperation des coordonnees dans [0,1] (on notera le traitement specifique de la #
$Z # coordonnee 'Z' : 'v $xrv/champs_5.11$I TZliste') des points du maillage courant {u,v} #
$Z # de la surface... #
$Z # #
$Z # Le passage au format 'Std' fut introduit le 20051215130551 afin de garantir, par exemple, #
$Z # qu'une sphere reste une sphere. L'utilisation directe de '$format_Std' fut quant a elle #
$Z # introduite le 20051216090516. Le 20051216105730, cela fut remplace par action sur les #
$Z # "super-echelles"... #
$Z # #
$Z # L'option "N_AU_CARRE=" a ete introduite le 20051226162037... #
$Z $DELETE $xTV/COORD.1$COORD_X
$Z $DELETE $xTV/COORD.1$COORD_Y
$Z $DELETE $xTV/COORD.1$COORD_Z
$Z $CA $xTV/COORDONNEES | \
$Z $SE -e "s/^.* X=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' \
$Z > $xTV/COORD.1$COORD_X
$Z $CA $xTV/COORDONNEES | \
$Z $SE -e "s/^.* Y=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' \
$Z > $xTV/COORD.1$COORD_Y
$Z $CA $xTV/COORDONNEES | \
$Z $SE -e "s/^.* Z=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' \
$Z > $xTV/COORD.1$COORD_Z
$Z else
$Z endif
$Z setParam ZoomParticule "ZOOM=$_____Zoom"
$Z # Afin d'assurer la compatibilite anterieure au 20051220142511... #
$Z if ($?_____ImageA == $EXIST) then
$Z # Test introduit le 20051215091957... #
$Z alias GenList 'set Ex=\!:1 ; set Ey=\!:2 ; set FiR=\!:3 ; \\
$Z $DELETE $FiR ; \\
$Z $xci/liste_points$X A=$_____ImageA \\
$Z Cnormaliser=FAUX \\
$Z eX=$Ex eY=$Ey eZ=FAUX eNIVEAU=FAUX epoints=FAUX en_tete=FAUX \\
$Z >& $FiR ; \\
$Z unset Ex Ey FiR'
$Z # Le 20051204121509 le mode "Cnormaliser=FAUX" a ete introduit afin de conserver les #
$Z # coordonnees entieres et ainsi garantir la periodicite stricte, ce qui n'est plus vrai #
$Z # si les coordonnees sont normalisees (probleme d'arrondi...). Cela permet alors de #
$Z # garantir le bon fonctionnement de '$xrv/distance.02$X' ci-apres et donc de produire #
$Z # lorsque '$_____ImageA' est un reseau regulier ('v $xiirv/ENTR.71') une image '$_____ImageR' #
$Z # reguliere et symetrique. En effet, sinon, des points qui sont theoriquement a meme distance #
$Z # se retrouvent a des distances tres legerement differentes (l'epsilon d'arrondi introduit #
$Z # dans les operations de normalisation dans le cas "Cnormaliser=VRAI")... #
$Z GenList VRAI FAUX $xTV/COORD.1$COORD_X
$Z GenList FAUX VRAI $xTV/COORD.1$COORD_Y
$Z else
$Z endif
$Z alias GenAlea 'set No=\!:1 ; set Gr=\!:2 ; set FiG=\!:3 ; set In=\!:4 ; set Su=\!:5 ; set FiR=\!:6 ; \\
$Z $DELETE $FiR ; \\
$Z $xrv/val_alea.01$X ne=$No graine=$Gr \\
$Z LISTE_BORNES_INFERIEURES=$In LISTE_BORNES_SUPERIEURES=$Su \\
$Z LISTE_INCREMENTS_DE_LA_GRAINE=$FiG \\
$Z > $FiR ; \\
$Z unset No Gr In Su FiR'
$Z alias GenAleaC 'set No=\!:1 ; set Gr=\!:2 ; set FiG=\!:3 ; set In=\!:4 ; set Su=\!:5 ; set FiR=\!:6 ; \\
$Z $DELETE $FiR ; \\
$Z set InD=`calcul -($Su-$In)/$_____FBrownien` ; set SuD=`calcul +($Su-$In)/$_____FBrownien` ; \\
$Z $xrv/val_alea.01$X ne=$No graine=$Gr brownien=VRAI iterer=VRAI \\
$Z LISTE_BORNES_INFERIEURES_CUMULEES=$In LISTE_BORNES_SUPERIEURES_CUMULEES=$Su \\
$Z LISTE_BORNES_INFERIEURES=$InD LISTE_BORNES_SUPERIEURES=$SuD \\
$Z LISTE_INCREMENTS_DE_LA_GRAINE=$FiG \\
$Z > $FiR ; \\
$Z unset No Gr In Su InD SuD FiR'
$Z set NPointsX=`$CA $xTV/COORD.1$COORD_X | $WCl`
$Z set NPointsY=`$CA $xTV/COORD.1$COORD_Y | $WCl`
$Z set NPointsXY=`$xcg/MIN2.01$X x=$NPointsX y=$NPointsY entier=VRAI signe="$K_VIDE"`
$Z # Le 'signe="$K_VIDE"' a ete introduit le 20051206120145 a cause du '@ _____NVoisins' qui #
$Z # va suivre... #
$Z set MinZ=`$xci/coordonnees$X denormaliser=VRAI abscisse=FAUX ordonnee=FAUX profondeur=VRAI Zf=$_____MinZ`
$Z set MaxZ=`$xci/coordonnees$X denormaliser=VRAI abscisse=FAUX ordonnee=FAUX profondeur=VRAI Zf=$_____MaxZ`
$Z # Introduit le 20051204121509 afin que la coordonnee 'Z' soit denormalisee comme le sont #
$Z # les coordonnees {X,Y}... #
$Z if ($?_____ImageA == $EXIST) then
$Z # Test introduit le 20051215091957... #
$Z if ($?_____FBrownien == $EXIST) then
$Z GenAleaC $NPointsXY $Graine_Z 0 $MinZ $MaxZ $xTV/COORD.1$COORD_Z
$Z else
$Z GenAlea $NPointsXY $Graine_Z 0 $MinZ $MaxZ $xTV/COORD.1$COORD_Z
$Z endif
$Z else
$Z endif
$Z $DELETE $xTV/VOISINS
$Z if ($?_____SelectionV == $EXIST) then
$Z # Test introduit le 20051206115045... #
$Z $xrv/maj_un.01$X ne=$NPointsXY \
$Z fichier=$NEXIST \
$Z index=$_____SelectionV \
$Z valeur=$EXIST \
$Z > $xTV/VOISINS
$Z # Cas ou l'on ne va selectionner que les premiers voisins de rang '$_____SelectionV'... #
$Z @ _____NVoisins = $NPointsXY - 1
$Z else
$Z $xrv/neutre$X ne=$NPointsXY \
$Z fichier=$EXIST \
$Z > $xTV/VOISINS
$Z # Cas ou tous les premiers voisins sont selectionnables... #
$Z endif
$Z $DELETE $xTV/DISTANCES
$Z $xrv/distance.02$X ne=$NPointsXY \
$Z LISTE_X=$xTV/COORD.1$COORD_X \
$Z LISTE_Y=$xTV/COORD.1$COORD_Y \
$Z LISTE_Z=$xTV/COORD.1$COORD_Z \
$Z LISTE_VOISIN=$xTV/VOISINS \
$Z premiers_voisins=VRAI N=$_____NVoisins \
$Z editer_coordonnees_si_tri=VRAI bon_ordre_des_points_si_tri=FAUX | \
$Z $SOR \
$Z > $xTV/DISTANCES
$Z # Cette operation cree des couples de points {I,J} tels qu'ils soient proches l'un de #
$Z # l'autre. #
$Z # #
$Z # Le '$SOR -u' a ete introduit le 20051203103544 afin de reduire le nombre de points a #
$Z # traiter. On notera que ce '$SOR' (qu'il ait ou pas l'option "-u"...) change l'ordre #
$Z # des points et donc les couleurs et les rayons qu'ils leur sont attribuees par tirage #
$Z # aleatoire ci-apres. Cela fut note le 20051203111009 et fut la cause du recalcul de #
$Z # l'image 'v $xiirv/ENTR.61' sur '$LACT15' (le calcul precedent ayant ete fait sur #
$Z # '$LACT16' sans ce '$SOR'...). #
$Z # #
$Z # On notera le 20051203105339, que les possibilites suivantes : #
$Z # #
$Z # bon_ordre_des_points_si_tri=VRAI #
$Z # $SOR -u #
$Z # #
$Z # ont ete testees. Les consequences sont en fait la disparition de l'un des deux couples #
$Z # {I,J} et {J,I} (losrqu'ils sont presents tous les deux evidemment...). Or visuellement, #
$Z # cela fait deux liens distincts a cause de l'option "cubique=VRAI" lors de l'appel final #
$Z # a '$xrv/particule.10$X'. Il ne faut donc pas eliminer l'un des deux elements d'un couple #
$Z # qui apparait en double ; en resume, les deux couples {I,J} et {J,I} (losrqu'ils sont #
$Z # presents...) doivent donc etre conserves... #
$Z $DELETE $xTV/DISTANCES_I
$Z $DELETE $xTV/DISTANCES_J
$Z $CA $xTV/DISTANCES | \
$Z $SE -e "s/^.*pointI={//" \
$Z -e 's/^\([^ ][^ ]*\)} .*$/\1/' \
$Z > $xTV/DISTANCES_I
$Z # Recuperation de la liste des points 'I'. #
$Z $CA $xTV/DISTANCES | \
$Z $SE -e "s/^.*pointJ={//" \
$Z -e 's/^\([^ ][^ ]*\)} .*$/\1/' \
$Z > $xTV/DISTANCES_J
$Z # Recuperation de la liste des points 'J'. #
$Z $DELETE $xTV/DISTANCES_I$COORD_X
$Z $DELETE $xTV/DISTANCES_I$COORD_Y
$Z $DELETE $xTV/DISTANCES_I$COORD_Z
$Z if ($?_____ImageA == $EXIST) then
$Z set NoRmAlIsE=$xrv/cNORMALISE$X
$Z set NoRmAlIsE_pX="pX=1 pY=0 pZ=0"
$Z set NoRmAlIsE_pY="pX=0 pY=1 pZ=0"
$Z set NoRmAlIsE_pZ="pX=0 pY=0 pZ=1"
$Z else
$Z set NoRmAlIsE=$xrv/neutre$X
$Z set NoRmAlIsE_pX="$K_VIDE"
$Z set NoRmAlIsE_pY="$K_VIDE"
$Z set NoRmAlIsE_pZ="$K_VIDE"
$Z endif
$Z $CA $xTV/DISTANCES_I | \
$Z $R "," "$K_BLANC" | \
$Z $AW ' { print $1 } ' | \
$Z $NoRmAlIsE ne=0 \
$Z fichier== \
$Z $NoRmAlIsE_pX \
$Z > $xTV/DISTANCES_I$COORD_X
$Z $CA $xTV/DISTANCES_I | \
$Z $R "," "$K_BLANC" | \
$Z $AW ' { print $2 } ' | \
$Z $NoRmAlIsE ne=0 \
$Z fichier== \
$Z $NoRmAlIsE_pY \
$Z > $xTV/DISTANCES_I$COORD_Y
$Z $CA $xTV/DISTANCES_I | \
$Z $R "," "$K_BLANC" | \
$Z $AW ' { print $3 } ' | \
$Z $NoRmAlIsE ne=0 \
$Z fichier== \
$Z $NoRmAlIsE_pZ \
$Z > $xTV/DISTANCES_I$COORD_Z
$Z $DELETE $xTV/DISTANCES_J$COORD_X
$Z $DELETE $xTV/DISTANCES_J$COORD_Y
$Z $DELETE $xTV/DISTANCES_J$COORD_Z
$Z $CA $xTV/DISTANCES_J | \
$Z $R "," "$K_BLANC" | \
$Z $AW ' { print $1 } ' | \
$Z $NoRmAlIsE ne=0 \
$Z fichier== \
$Z $NoRmAlIsE_pX \
$Z > $xTV/DISTANCES_J$COORD_X
$Z $CA $xTV/DISTANCES_J | \
$Z $R "," "$K_BLANC" | \
$Z $AW ' { print $2 } ' | \
$Z $NoRmAlIsE ne=0 \
$Z fichier== \
$Z $NoRmAlIsE_pY \
$Z > $xTV/DISTANCES_J$COORD_Y
$Z $CA $xTV/DISTANCES_J | \
$Z $R "," "$K_BLANC" | \
$Z $AW ' { print $3 } ' | \
$Z $NoRmAlIsE ne=0 \
$Z fichier== \
$Z $NoRmAlIsE_pZ \
$Z > $xTV/DISTANCES_J$COORD_Z
$Z $DELETE $xTV/COORDONNEES$COORD_X
$Z $DELETE $xTV/COORDONNEES$COORD_Y
$Z $DELETE $xTV/COORDONNEES$COORD_Z
$Z $PAST $xTV/DISTANCES_I$COORD_X $xTV/DISTANCES_J$COORD_X | \
$Z $R "$K_TAB" "$K_BLANC" | \
$Z $R "$K_BLANC" "$K_NL" \
$Z > $xTV/COORDONNEES$COORD_X
$Z $PAST $xTV/DISTANCES_I$COORD_Y $xTV/DISTANCES_J$COORD_Y | \
$Z $R "$K_TAB" "$K_BLANC" | \
$Z $R "$K_BLANC" "$K_NL" \
$Z > $xTV/COORDONNEES$COORD_Y
$Z $PAST $xTV/DISTANCES_I$COORD_Z $xTV/DISTANCES_J$COORD_Z | \
$Z $R "$K_TAB" "$K_BLANC" | \
$Z $R "$K_BLANC" "$K_NL" \
$Z > $xTV/COORDONNEES$COORD_Z
$Z # Generation des coordonnees des points (en couple...). #
$Z # #
$Z # On notera la double transformation '$K_TAB' --> '$K_BLANC' --> '$K_NL' introduite le #
$Z # 20051205091859 afin de ne pas faire d'hypotheses implicites sur le separateur insere #
$Z # par '$R'... #
$Z set NPointsX=`$CA $xTV/COORDONNEES$COORD_X | $WCl`
$Z set NPointsY=`$CA $xTV/COORDONNEES$COORD_Y | $WCl`
$Z set NPointsZ=`$CA $xTV/COORDONNEES$COORD_Z | $WCl`
#20220615104124____:$Z set NPointsXYZ=`$xcg/MAX3.01$X x=$NPointsX y=$NPointsY z=$NPointsZ entier=VRAI` #
$Z set NPointsXYZ=`$xcg/MIN3.01$X x=$NPointsX y=$NPointsY z=$NPointsZ entier=VRAI`
$Z $DELETE $xTV/INCREMENT
$Z $xrv/LIN3.11$X ne=$NPointsXYZ \
$Z alpha=1e8 fichier1=$xTV/COORDONNEES$COORD_X \
$Z beta=1e4 fichier2=$xTV/COORDONNEES$COORD_Y \
$Z gamma=1e0 fichier3=$xTV/COORDONNEES$COORD_Z \
$Z formater=VRAI entiers=VRAI \
$Z > $xTV/INCREMENT
$Z # Ceci est destine a generer une liste '$xTV/INCREMENT' de valeurs entieres telle qu'avec #
$Z # une forte probabilite, deux points {X1,Y1,Z1} et {X2,Y2,Z2} differents donneront dans #
$Z # cette liste des valeurs entieres differentes. Inversement, un meme point {X,Y,Z}, s'il #
$Z # figure plusieurs fois dans les fichiers '$xTV/COORDONNEES*', aura toujours la meme "clef" #
$Z # entiere dans '$xTV/INCREMENT' ce qui permettra alors dans 'GenAlea' et 'GenAleaC' de #
$Z # generer les memes valeurs aleatoires pour ce point, meme donc si ce dernier apparait #
$Z # plusieurs fois... #
$Z # #
$Z # Le 20051221102243, je note que c'est ce dispositif qui fait que, par exemple, les deux #
$Z # images 'v $xiirv/ENTR.C2' et 'v $xiirv/ENTR.C2.0' n'ont pas les memes couleurs en ce qui #
$Z # concerne l'entrelacs car, en effet, ces deux images ne sont pas calculees avec les memes #
$Z # echelles ; cela fait que les coordonnees des points identiques different d'une image a #
$Z # l'autre. Cela est vrai aussi pour 'v $xiirv/ENTR.D1' et 'v $xiirv/ENTR.D1.0' ou encore #
$Z # pour 'v $xiirv/ENTR.E1' et 'v $xiirv/ENTR.E1.0'. Pour que les couleurs (et les rayons #
$Z # lorsqu'ils sont aleatoires...), il suffit de faire que '$_____Zoom' soit egal au rapport #
$Z # de zoom par defaut de '$SurfaceEffective' qui peut etre connu grace a : #
$Z # #
$Z # GetParam $SurfaceEffective ZOOM #
$Z # #
$Z GenAlea $NPointsXYZ $Graine_R $xTV/INCREMENT $_____NiveauR_D $_____NiveauR_A $xTV/COULEURS$ROUGE
$Z GenAlea $NPointsXYZ $Graine_V $xTV/INCREMENT $_____NiveauV_D $_____NiveauV_A $xTV/COULEURS$VERTE
$Z GenAlea $NPointsXYZ $Graine_B $xTV/INCREMENT $_____NiveauB_D $_____NiveauB_A $xTV/COULEURS$BLEUE
$Z # Generation des couleurs des points... #
$Z GenAlea $NPointsXYZ $Graine_r $xTV/INCREMENT $_____RayonInf $_____RayonSup $xTV/RAYONS
$Z # Generation des rayons des points... #
$Z if ($?_____SurfaceA == $EXIST) then
$Z if ($_____EntrelacsSurface == $EXIST) then
$Z $CA $xTV/MAILLAGE$COORD_X \
$Z >>! $xTV/COORDONNEES$COORD_X
$Z $CA $xTV/MAILLAGE$COORD_Y \
$Z >>! $xTV/COORDONNEES$COORD_Y
$Z $CA $xTV/MAILLAGE$COORD_Z \
$Z >>! $xTV/COORDONNEES$COORD_Z
$Z $CA $xTV/MAILLAGE$ROUGE \
$Z >>! $xTV/COULEURS$ROUGE
$Z $CA $xTV/MAILLAGE$VERTE \
$Z >>! $xTV/COULEURS$VERTE
$Z $CA $xTV/MAILLAGE$BLEUE \
$Z >>! $xTV/COULEURS$BLEUE
$Z $CA $xTV/MAILLAGE$RAYON \
$Z >>! $xTV/RAYONS
$Z set NPointsX=`$CA $xTV/COORDONNEES$COORD_X | $WCl`
$Z set NPointsY=`$CA $xTV/COORDONNEES$COORD_Y | $WCl`
$Z set NPointsZ=`$CA $xTV/COORDONNEES$COORD_Z | $WCl`
#20220615104124____:$Z set NPointsXYZ=`$xcg/MAX3.01$X x=$NPointsX y=$NPointsY z=$NPointsZ entier=VRAI` #
$Z set NPointsXYZ=`$xcg/MIN3.01$X x=$NPointsX y=$NPointsY z=$NPointsZ entier=VRAI`
$Z $DELETE $xTV/MAILLAGE$COORD_X
$Z $DELETE $xTV/MAILLAGE$COORD_Y
$Z $DELETE $xTV/MAILLAGE$COORD_Z
$Z $DELETE $xTV/MAILLAGE$ROUGE
$Z $DELETE $xTV/MAILLAGE$VERTE
$Z $DELETE $xTV/MAILLAGE$BLEUE
$Z $DELETE $xTV/MAILLAGE$RAYON
$Z else
$Z endif
$Z else
$Z endif
$Z $xrv/particule.10$X np=1 iterations=$NPointsXYZ \
$Z LISTE_X=$xTV/COORDONNEES$COORD_X \
$Z LISTE_Y=$xTV/COORDONNEES$COORD_Y \
$Z LISTE_Z=$xTV/COORDONNEES$COORD_Z \
$Z grossissement=$_____Grossissement \
$Z LISTE_RAYON=$xTV/RAYONS \
$Z LISTE_ROUGE=$xTV/COULEURS$ROUGE \
$Z LISTE_VERTE=$xTV/COULEURS$VERTE \
$Z LISTE_BLEUE=$xTV/COULEURS$BLEUE \
$Z Lz=1000 \
$Z $ZoomParticule \
$Z ROTATION_OX=$_____RotationOX \
$Z ROTATION_OY=$_____RotationOY \
$Z ROTATION_OZ=$_____RotationOZ \
$Z isoles=FAUX chainer=FAUX \
$Z ajuster_points=VRAI points=$_____Points nombreR=$_____NombreR \
$Z equidistance=VRAI compatibilite_20051230=FAUX \
$Z cubique=VRAI LISTE_dX=$_____Derivee LISTE_dY=$_____Derivee LISTE_dZ=$_____Derivee \
$Z RVB=VRAI \
$Z N_AU_CARRE=$N_Au_CaRrE \
$Z $_____ParticulePara1 \
$Z R=$_____ImageR \
$Z chiffres=0 \
$Z CAL1=FAUX \
$Z $formatI
$Z # Visualisation de l'entrelacs. Le 20051213153400, l'option "equidistance=VRAI" a ete #
$Z # introduite... #
$Z # #
$Z # L'option "N_AU_CARRE=" a ete introduite le 20051226162037... #
$Z # #
$Z # L'extension '$_____ParticulePara1' a ete introduite le 20051230134713 pour l'image #
$Z # 'v $xiirv/ENTR.D1', de meme que le parametre "compatibilite_20051230=VRAI". Mais le #
$Z # 20051231094529, celui-ci est devenu "compatibilite_20051230=FAUX", ayant ete introduit #
$Z # via '$_____ParticulePara1' dans la description de toutes les images qui le demandaient #
$Z # dans 'v $xiirv/$Fnota compatibilite_20051230'. On notera que cela pourrait etre tout #
$Z # simplement supprime ci-dessus car il s'agit en effet de la valeur par defaut de ce #
$Z # parametre ('GetParam $xrv/particule.10$X compatibilite_20051230')... #
$Z if ($?_____SurfaceA == $EXIST) then
$Z # Test introduit le 20051215093125... #
$Z $DELETE $xTV/COORDONNEES
$Z else
$Z endif
$Z $DELETE $xTV/COORD.1$COORD_X
$Z $DELETE $xTV/COORD.1$COORD_Y
$Z $DELETE $xTV/COORD.1$COORD_Z
$Z $DELETE $xTV/DISTANCES
$Z $DELETE $xTV/DISTANCES_I
$Z $DELETE $xTV/DISTANCES_J
$Z $DELETE $xTV/DISTANCES_I$COORD_X
$Z $DELETE $xTV/DISTANCES_I$COORD_Y
$Z $DELETE $xTV/DISTANCES_I$COORD_Z
$Z $DELETE $xTV/DISTANCES_J$COORD_X
$Z $DELETE $xTV/DISTANCES_J$COORD_Y
$Z $DELETE $xTV/DISTANCES_J$COORD_Z
$Z $DELETE $xTV/COORDONNEES$COORD_X
$Z $DELETE $xTV/COORDONNEES$COORD_Y
$Z $DELETE $xTV/COORDONNEES$COORD_Z
$Z $DELETE $xTV/INCREMENT
$Z $DELETE $xTV/COULEURS$ROUGE
$Z $DELETE $xTV/COULEURS$VERTE
$Z $DELETE $xTV/COULEURS$BLEUE
$Z $DELETE $xTV/RAYONS