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