#######################################################################################################################################
# #
# C A R T E B R O W N I E N N E : #
# #
# #
# Author of '$xiirv/.CARB.11.2.$U' : #
# #
# Jean-Francois COLONNA (LACTAMME, 20150704095830). #
# #
#######################################################################################################################################
$Z SETParam _____FVoisins "$K_VIDE"
$Z # Parametre introduit le 20150708103722... #
$Z SETParam _____TriDimensionnel $NEXIST
$Z # Parametre introduit le 20150810130437... #
$Z SETParam _____TriPremiere 0
$Z # Parametre introduit le 20150810130437... #
$Z SETParam _____TriZmin $Zmin
$Z # Parametre introduit le 20150810134906... #
$Z SETParam _____TriZmax $Zmax
$Z # Parametre introduit le 20150810130437... #
$Z setParam _____Profondeur 0
$Z setParam _____NPointsT 10000
$Z setParam _____NVoisins 6
$Z setParam _____DistanceMin 0
$Z # Parametre introduit le 20150812095811... #
$Z setParam _____DistanceMax 0.02
$Z setParam _____NiveauNoeuds $BLANC
$Z SETParam _____SupIntersections $EXIST
$Z setParam _____EpsDeterminants `GetParam $xrv/intersection.11$X epsilon_determinants`
$Z # Parametre introduit le 20150804164212... #
$Z setParam _____EpsProdVectoriels `GetParam $xrv/intersection.11$X epsilon_produits_vectoriels`
$Z # Parametre introduit le 20150804164212... #
$Z SETParam _____Optimise $NEXIST
$Z SETParam _____DReference VRAI
$Z # Parametre introduit le 20150731095657... #
$Z setParam _____Pppp 0.5
$Z # Parametre introduit le 20150705093205... #
$Z setParam _____APerturbation 0.02
$Z # Parametre introduit le 20150710163433... #
$Z setParam _____Pprbs 0
$Z # Parametre introduit le 20150705093205... #
$Z # #
$Z # Les experiences ont montre qu'il n'y avait que tres peu de bonnes solutions, on a donc #
$Z # tout interet a les garder... #
$Z setParam _____Ppams 0.0
$Z # Parametre introduit le 20150705093205... #
$Z setParam _____OIterations 10000
$Z setParam _____EpsilonConvergence 0.1
$Z # Parametre introduit le 20150709112145... #
$Z setParam _____Eval "$K_VIDE"
$Z setParam _____Rayon 0.005
$Z setParam _____Grossissement 1.2
$Z SETParam _____Palette $xiP/arc_ciel.C1
$Z # Parametre introduit le 20150705103441... #
$Z # #
$Z # On notera deux valeurs particlieres de '$_____Palette' : #
$Z # #
$Z # RVB : Les composantes {R,V,B} sont choisies aleatoirement, #
$Z # XYZ : Les composantes {R,V,B} sont des combinaisons lineaires des #
$Z # coordonnees {X,Y,Z}. #
$Z # CAUSAL : Les composantes {R,V,B} sont fonction des directions en #
$Z # {theta,phi} des segments orientes. #
$Z # #
$Z set OuVeRtUrE_CoNe=0.5
$Z setParam _____MinPhi_ `calcul $pis2-$OuVeRtUrE_CoNe`
$Z # Parametre introduit le 20151023152209... #
$Z setParam _____MaxPhi_ `calcul $pis2+$OuVeRtUrE_CoNe`
$Z # Parametre introduit le 20151023152209... #
$Z setParam _____MinTheta `calcul $pis2-$OuVeRtUrE_CoNe`
$Z # Parametre introduit le 20151023152209... #
$Z setParam _____MaxTheta `calcul $pis2+$OuVeRtUrE_CoNe`
$Z # Parametre introduit le 20151023152209... #
$Z setParam _____Niveau0 $GRIS_2
$Z # Parametre introduit le 20151023152209... #
$Z setParam _____Niveau1 $GRIS_4
$Z # Parametre introduit le 20151023152209... #
$Z setParam _____Niveau2 $GRIS_8
$Z # Parametre introduit le 20151023152209... #
$Z SETParam _____PalettePT $xiP/cercle.35
$Z # Parametre introduit le 20151023152209 pour le cas "CAUSAL"... #
$Z setParam _____RougeX 1
$Z # Parametre introduit le 20150810172705... #
$Z setParam _____RougeY 0
$Z # Parametre introduit le 20150810172705... #
$Z setParam _____RougeZ 0
$Z # Parametre introduit le 20150810172705... #
$Z setParam _____VerteX 0
$Z # Parametre introduit le 20150810172705... #
$Z setParam _____VerteY 1
$Z # Parametre introduit le 20150810172705... #
$Z setParam _____VerteZ 0
$Z # Parametre introduit le 20150810172705... #
$Z setParam _____BleueX 0
$Z # Parametre introduit le 20150810172705... #
$Z setParam _____BleueY 0
$Z # Parametre introduit le 20150810172705... #
$Z setParam _____BleueZ 1
$Z # Parametre introduit le 20150810172705... #
$Z setParam _____GraineR 1789
$Z # Parametre introduit le 20150705103441... #
$Z setParam _____GraineV 1947
$Z # Parametre introduit le 20150705103441... #
$Z setParam _____GraineB 2001
$Z # Parametre introduit le 20150705103441... #
$Z setParam _____Zoom 1.0
$Z setParam _____RotationX 0
$Z setParam _____RotationY 0
$Z setParam _____RotationZ 0
$Z setParam _____TranslationX `GetParam $xrv/particule.10$X TRANSLATION_OX`
$Z setParam _____TranslationY `GetParam $xrv/particule.10$X TRANSLATION_OY`
$Z setParam _____TranslationZ `GetParam $xrv/particule.10$X TRANSLATION_OZ`
$Z setParam _____Cubique VRAI
$Z SETParam _____Derivee $NEXIST
$Z # Parametre introduit le 20150929132838... #
$Z setParam _____PonderationX `GetParam $xrv/XYZ_PseudoAleatoire.01$X ponderation`
$Z # Parametre introduit le 20160107095023... #
$Z setParam _____PonderationY `GetParam $xrv/XYZ_PseudoAleatoire.01$X ponderation`
$Z # Parametre introduit le 20160107095023... #
$Z setParam _____PonderationZ `GetParam $xrv/XYZ_PseudoAleatoire.01$X ponderation`
$Z # Parametre introduit le 20160107095023... #
$Z setParam _____DeriveeX 0
$Z setParam _____DeriveeY 0
$Z setParam _____DeriveeZ 0
$Z setParam _____DistanceMini 0.005
$Z setParam _____Fond "$K_VIDE"
$Z setParam _____NAuCarre FAUX
$Z setParam _____ParticulePara1 "$K_VIDE"
$Z setParam _____Redirection "$K_VIDE"
$Z SETParam _____Densite $NEXIST
$Z # Parametre introduit le 20150706142412... #
$Z SETParam _____Efacteur 4
$Z # Parametre introduit le 20150706142412... #
$Z SETParam _____IgnorerGD VRAI
$Z # Parametre introduit le 20150706163429. Il permet d'accelerer le calcul de la densite #
$Z # dans un rapport d'environ 4... #
$Z SETParam _____SeuilGD 0.1
$Z # Parametre introduit le 20150706163429... #
$Z SETParam _____PaletteD $xiP/cercle.35
$Z # Parametre introduit le 20150706142412... #
$Z SETParam _____Deplacer $NEXIST
$Z # Parametre introduit le 20201027115903... #
$Z setParam _____DeplacerGX 1111
$Z # Parametre introduit le 20201027115903... #
$Z setParam _____DeplacerXp +0.05
$Z # Parametre introduit le 20201027115903... #
$Z setParam _____DeplacerGY 3333
$Z # Parametre introduit le 20201027115903... #
$Z setParam _____DeplacerYp +0.05
$Z # Parametre introduit le 20201027115903... #
$Z setParam _____DeplacerGZ 5555
$Z # Parametre introduit le 20201027115903... #
$Z setParam _____DeplacerZp +0.05
$Z # Parametre introduit le 20201027115903... #
$Z FilSTmpB FiLeTmP_GRAPHE
$Z if ("$_____FVoisins" == "$K_VIDE") then
$Z # Possibilite introduite le 20150708103722... #
$Z if ($_____TriDimensionnel == $NEXIST) then
$Z # Possibilite introduite le 20150810130437... #
$Z $xrv/PointsVoisins_2D.01$X \
$Z nombre_points=$_____NPointsT \
$Z A=$_____ImageN \
$Z Z=$_____Profondeur \
$Z V=$_____NVoisins \
$Z Dm=$_____DistanceMin \
$Z DM=$_____DistanceMax \
$Z niveau=$_____NiveauNoeuds \
$Z trier_couple=VRAI \
$Z $formatI | \
$Z $SOR -u \
$Z > $FiLeTmP_GRAPHE.NOEUDS1
$Z # Generation de paires de noeuds voisins bidimensionnels. #
$Z # #
$Z # Le '$SOR -u' vient du fait que si le point 'A' est le voisin du point 'B', alors #
$Z # evidemment le point 'B' est le voisin du point 'A', ce qui fait que le couple {A,B} #
$Z # apparait deux fois (mais dans le meme ordre a cause de "trier_couple=VRAI"...). #
$Z else
$Z SformatI
$Z set PrEmIeRe=$_____TriPremiere
$Z set PrEmIeRe=`$xci/nombres$X p=$PrEmIeRe d=$PrEmIeRe`
$Z Format $_____ImageN.$PrEmIeRe
$Z eval "$Format"
$Z # Mise en place du format approprie... #
$Z $xrv/PointsVoisins_3D.01$X \
$Z nombre_points=$_____NPointsT \
$Z A=$_____ImageN. \
$Z premiere=$_____TriPremiere \
$Z nombre_voisins=$_____NVoisins \
$Z distance_minimale=$_____DistanceMin \
$Z distance_maximale=$_____DistanceMax \
$Z niveau=$_____NiveauNoeuds \
$Z trier_couple=VRAI \
$Z $formatI Zmax=$_____TriZmax | \
$Z $SOR -u \
$Z > $FiLeTmP_GRAPHE.NOEUDS1
$Z # Generation de paires de noeuds voisins tridimensionnels. #
$Z # #
$Z # Le '$SOR -u' vient du fait que si le point 'A' est le voisin du point 'B', alors #
$Z # evidemment le point 'B' est le voisin du point 'A', ce qui fait que le couple {A,B} #
$Z # apparait deux fois (mais dans le meme ordre a cause de "trier_couple=VRAI"...). #
$Z RformatI
$Z endif
$Z else
$Z $CA $_____FVoisins \
$Z > $FiLeTmP_GRAPHE.NOEUDS1
$Z # Recuperation d'une liste preexistante de paires de noeuds voisins. #
$Z endif
$Z $CA $FiLeTmP_GRAPHE.NOEUDS1 | \
$Z $AW ' { print $1 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.1.1$COORD_X
$Z $CA $FiLeTmP_GRAPHE.NOEUDS1 | \
$Z $AW ' { print $2 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.1.1$COORD_Y
$Z $CA $FiLeTmP_GRAPHE.NOEUDS1 | \
$Z $AW ' { print $3 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.1.1$COORD_Z
$Z $CA $FiLeTmP_GRAPHE.NOEUDS1 | \
$Z $AW ' { print $4 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.1.2$COORD_X
$Z $CA $FiLeTmP_GRAPHE.NOEUDS1 | \
$Z $AW ' { print $5 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.1.2$COORD_Y
$Z $CA $FiLeTmP_GRAPHE.NOEUDS1 | \
$Z $AW ' { print $6 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.1.2$COORD_Z
$Z if ($_____SupIntersections == $EXIST) then
$Z $xrv/intersection.11$Z \
$Z $FiLeTmP_GRAPHE.1.1 \
$Z $FiLeTmP_GRAPHE.1.2 \
$Z $FiLeTmP_GRAPHE.2.1 \
$Z $FiLeTmP_GRAPHE.2.2 \
$Z $_____EpsDeterminants \
$Z $_____EpsProdVectoriels \
$Z FAUX \
$Z FAUX
$Z # Suppression des paires definissant une arete en intersectant une autre et suppression des #
$Z # "pendants" (introduit sous cette forme le 20150817120526...). #
$Z else
$Z $CA $FiLeTmP_GRAPHE.1.1$COORD_X \
$Z > $FiLeTmP_GRAPHE.2.1$COORD_X
$Z $CA $FiLeTmP_GRAPHE.1.1$COORD_Y \
$Z > $FiLeTmP_GRAPHE.2.1$COORD_Y
$Z $CA $FiLeTmP_GRAPHE.1.1$COORD_Z \
$Z > $FiLeTmP_GRAPHE.2.1$COORD_Z
$Z $CA $FiLeTmP_GRAPHE.1.2$COORD_X \
$Z > $FiLeTmP_GRAPHE.2.2$COORD_X
$Z $CA $FiLeTmP_GRAPHE.1.2$COORD_Y \
$Z > $FiLeTmP_GRAPHE.2.2$COORD_Y
$Z $CA $FiLeTmP_GRAPHE.1.2$COORD_Z \
$Z > $FiLeTmP_GRAPHE.2.2$COORD_Z
$Z endif
$Z $PAST $FiLeTmP_GRAPHE.2.1$COORD_X \
$Z $FiLeTmP_GRAPHE.2.1$COORD_Y \
$Z $FiLeTmP_GRAPHE.2.1$COORD_Z \
$Z > $FiLeTmP_GRAPHE.1.NOEUDS3
$Z $PAST $FiLeTmP_GRAPHE.2.2$COORD_X \
$Z $FiLeTmP_GRAPHE.2.2$COORD_Y \
$Z $FiLeTmP_GRAPHE.2.2$COORD_Z \
$Z > $FiLeTmP_GRAPHE.2.NOEUDS3
$Z $CA $FiLeTmP_GRAPHE.1.NOEUDS3 $FiLeTmP_GRAPHE.2.NOEUDS3 | \
$Z $SOR -u \
$Z > $FiLeTmP_GRAPHE.NOEUDS3
$Z $CA $FiLeTmP_GRAPHE.NOEUDS3 | \
$Z $AW ' { print $1 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.3.1$COORD_X
$Z $CA $FiLeTmP_GRAPHE.NOEUDS3 | \
$Z $AW ' { print $2 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.3.1$COORD_Y
$Z $CA $FiLeTmP_GRAPHE.NOEUDS3 | \
$Z $AW ' { print $3 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.3.1$COORD_Z
$Z # Construction de la liste des points differents {X,Y,Z}... #
$Z # #
$Z # Avant le 20150706142412 cette construction n'avait lieu que si '$_____Optimise' (soit donc #
$Z # dans le 'if(...)' qui suit. Mais a cause de la nouvelle possibilite '$_____Densite', il #
$Z # faut la faire systematiquement, cela simplifie les choses... #
$Z set NPoInTsX=`$CA $FiLeTmP_GRAPHE.3.1$COORD_X | $WCl`
$Z set NPoInTsY=`$CA $FiLeTmP_GRAPHE.3.1$COORD_Y | $WCl`
$Z set NPoInTsZ=`$CA $FiLeTmP_GRAPHE.3.1$COORD_Z | $WCl`
$Z set NPoInTs=`$xcg/MIN3.01$X x=$NPoInTsX y=$NPoInTsY z=$NPoInTsZ`
$Z # Nombre de noeuds strictement differents. #
$Z if ($_____Optimise == $EXIST) then
$Z set NCoNnExX1=`$CA $FiLeTmP_GRAPHE.2.1$COORD_X | $WCl`
$Z set NCoNnExY1=`$CA $FiLeTmP_GRAPHE.2.1$COORD_Y | $WCl`
$Z set NCoNnExZ1=`$CA $FiLeTmP_GRAPHE.2.1$COORD_Z | $WCl`
$Z set NCoNnEx1=`$xcg/MIN3.01$X x=$NCoNnExX1 y=$NCoNnExY1 z=$NCoNnExZ1`
$Z set NCoNnExX2=`$CA $FiLeTmP_GRAPHE.2.2$COORD_X | $WCl`
$Z set NCoNnExY2=`$CA $FiLeTmP_GRAPHE.2.2$COORD_Y | $WCl`
$Z set NCoNnExZ2=`$CA $FiLeTmP_GRAPHE.2.2$COORD_Z | $WCl`
$Z set NCoNnEx2=`$xcg/MIN3.01$X x=$NCoNnExX2 y=$NCoNnExY2 z=$NCoNnExZ2`
$Z set NCoNnEx=`$xcg/MIN2.01$X a=$NCoNnEx1 b=$NCoNnEx2`
$Z # Nombre d'aretes strictement differentes. #
$Z $xrv/optimise.23$X ne=$NPoInTs \
$Z LISTE_X=$FiLeTmP_GRAPHE.3.1$COORD_X \
$Z LISTE_Y=$FiLeTmP_GRAPHE.3.1$COORD_Y \
$Z LISTE_Z=$FiLeTmP_GRAPHE.3.1$COORD_Z \
$Z nc=$NCoNnEx \
$Z CONNEXION_XA=$FiLeTmP_GRAPHE.2.1$COORD_X \
$Z CONNEXION_YA=$FiLeTmP_GRAPHE.2.1$COORD_Y \
$Z CONNEXION_ZA=$FiLeTmP_GRAPHE.2.1$COORD_Z \
$Z CONNEXION_XB=$FiLeTmP_GRAPHE.2.2$COORD_X \
$Z CONNEXION_YB=$FiLeTmP_GRAPHE.2.2$COORD_Y \
$Z CONNEXION_ZB=$FiLeTmP_GRAPHE.2.2$COORD_Z \
$Z utiliser_distance_reference=$_____DReference \
$Z probabilite_perturber_point=$_____Pppp \
$Z Xdi=-$_____APerturbation Ydi=-$_____APerturbation Zdi=-$_____APerturbation \
$Z Xdf=+$_____APerturbation Ydf=+$_____APerturbation Zdf=+$_____APerturbation \
$Z probabilite_refuser_bonne_solution=$_____Pprbs \
$Z probabilite_accepter_mauvaise_solution=$_____Ppams \
$Z iterations=$_____OIterations \
$Z epsilon_convergence=$_____EpsilonConvergence \
$Z lister_initiale_finale=VRAI \
$Z lister_distances=FAUX \
$Z message_trop_de_perturbations=FAUX \
$Z > $FiLeTmP_GRAPHE.NOEUDS4
$Z # Optimisation des distances sur les aretes... #
$Z # #
$Z # Le 20150705000930, les probabilites ont ete augmentees afin de favoriser l'optimisation. #
$Z # #
$Z # Le 20150709183758 a ete introduite l'edition des extrema des distances avant et apres... #
$Z # #
$Z # Le 20150817110055, je me demande s'il ne conviendrait pas de faire reference a #
$Z # '$xrv/intersection.11$X' et a '$xrv/SupPendants.11$X' apres '$xrv/optimise.23$X', #
$Z # l'ajout du 20150817122239 ci-apres... #
$Z $CA $FiLeTmP_GRAPHE.NOEUDS4 | \
$Z $AW ' { print $1 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.4.1$COORD_X
$Z $CA $FiLeTmP_GRAPHE.NOEUDS4 | \
$Z $AW ' { print $2 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.4.1$COORD_Y
$Z $CA $FiLeTmP_GRAPHE.NOEUDS4 | \
$Z $AW ' { print $3 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_GRAPHE.4.1$COORD_Z
$Z set ArGuMeNtS="$K_VIDE"
$Z set ArGuMeNtS="$ArGuMeNtS"" ne=$NCoNnEx"
$Z set ArGuMeNtS="$ArGuMeNtS"" ns=$NPoInTs"
$Z set ArGuMeNtS="$ArGuMeNtS"" RECHERCHER_OX=$FiLeTmP_GRAPHE.3.1$COORD_X"
$Z set ArGuMeNtS="$ArGuMeNtS"" RECHERCHER_OY=$FiLeTmP_GRAPHE.3.1$COORD_Y"
$Z set ArGuMeNtS="$ArGuMeNtS"" RECHERCHER_OZ=$FiLeTmP_GRAPHE.3.1$COORD_Z"
$Z set ArGuMeNtS="$ArGuMeNtS"" SUBSTITUTION_OX=$FiLeTmP_GRAPHE.4.1$COORD_X"
$Z set ArGuMeNtS="$ArGuMeNtS"" SUBSTITUTION_OY=$FiLeTmP_GRAPHE.4.1$COORD_Y"
$Z set ArGuMeNtS="$ArGuMeNtS"" SUBSTITUTION_OZ=$FiLeTmP_GRAPHE.4.1$COORD_Z"
$Z set ArGuMeNtS1="$K_VIDE"
$Z set ArGuMeNtS1="$ArGuMeNtS1"" LISTE_X=$FiLeTmP_GRAPHE.2.1$COORD_X"
$Z set ArGuMeNtS1="$ArGuMeNtS1"" LISTE_Y=$FiLeTmP_GRAPHE.2.1$COORD_Y"
$Z set ArGuMeNtS1="$ArGuMeNtS1"" LISTE_Z=$FiLeTmP_GRAPHE.2.1$COORD_Z"
$Z set ArGuMeNtS2="$K_VIDE"
$Z set ArGuMeNtS2="$ArGuMeNtS2"" LISTE_X=$FiLeTmP_GRAPHE.2.2$COORD_X"
$Z set ArGuMeNtS2="$ArGuMeNtS2"" LISTE_Y=$FiLeTmP_GRAPHE.2.2$COORD_Y"
$Z set ArGuMeNtS2="$ArGuMeNtS2"" LISTE_Z=$FiLeTmP_GRAPHE.2.2$COORD_Z"
$Z $xrv/substitue.11.x \
$Z $ArGuMeNtS \
$Z $ArGuMeNtS1 \
$Z pX=1 pY=0 pZ=0 \
$Z > $FiLeTmP_GRAPHE.6.1$COORD_X
$Z $xrv/substitue.11.x \
$Z $ArGuMeNtS \
$Z $ArGuMeNtS1 \
$Z pX=0 pY=1 pZ=0 \
$Z > $FiLeTmP_GRAPHE.6.1$COORD_Y
$Z $xrv/substitue.11.x \
$Z $ArGuMeNtS \
$Z $ArGuMeNtS1 \
$Z pX=0 pY=0 pZ=1 \
$Z > $FiLeTmP_GRAPHE.6.1$COORD_Z
$Z $xrv/substitue.11.x \
$Z $ArGuMeNtS \
$Z $ArGuMeNtS2 \
$Z pX=1 pY=0 pZ=0 \
$Z > $FiLeTmP_GRAPHE.6.2$COORD_X
$Z $xrv/substitue.11.x \
$Z $ArGuMeNtS \
$Z $ArGuMeNtS2 \
$Z pX=0 pY=1 pZ=0 \
$Z > $FiLeTmP_GRAPHE.6.2$COORD_Y
$Z $xrv/substitue.11.x \
$Z $ArGuMeNtS \
$Z $ArGuMeNtS2 \
$Z pX=0 pY=0 pZ=1 \
$Z > $FiLeTmP_GRAPHE.6.2$COORD_Z
$Z # Deplacement de tous les noeuds de toutes les aretes... #
$Z $xrv/intersection.11$Z \
$Z $FiLeTmP_GRAPHE.6.1 \
$Z $FiLeTmP_GRAPHE.6.2 \
$Z $FiLeTmP_GRAPHE.5.1 \
$Z $FiLeTmP_GRAPHE.5.2 \
$Z $_____EpsDeterminants \
$Z $_____EpsProdVectoriels \
$Z FAUX \
$Z FAUX
$Z # Suppression des paires definissant une arete en intersectant une autre et suppression des #
$Z # "pendants" (introduit le 20150817122239...). #
$Z else
$Z $CA $FiLeTmP_GRAPHE.2.1$COORD_X \
$Z > $FiLeTmP_GRAPHE.5.1$COORD_X
$Z $CA $FiLeTmP_GRAPHE.2.1$COORD_Y \
$Z > $FiLeTmP_GRAPHE.5.1$COORD_Y
$Z $CA $FiLeTmP_GRAPHE.2.1$COORD_Z \
$Z > $FiLeTmP_GRAPHE.5.1$COORD_Z
$Z $CA $FiLeTmP_GRAPHE.2.2$COORD_X \
$Z > $FiLeTmP_GRAPHE.5.2$COORD_X
$Z $CA $FiLeTmP_GRAPHE.2.2$COORD_Y \
$Z > $FiLeTmP_GRAPHE.5.2$COORD_Y
$Z $CA $FiLeTmP_GRAPHE.2.2$COORD_Z \
$Z > $FiLeTmP_GRAPHE.5.2$COORD_Z
$Z endif
$Z set LiMitEuR="@"
$Z $PAST $FiLeTmP_GRAPHE.5.1$COORD_X $FiLeTmP_GRAPHE.5.2$COORD_X | \
$Z $AW ' { print $1 "'"$LiMitEuR"'" $2 } ' | \
$Z $R "$LiMitEuR" "$K_NL" \
$Z > $FiLeTmP_GRAPHE$COORD_X
$Z $PAST $FiLeTmP_GRAPHE.5.1$COORD_Y $FiLeTmP_GRAPHE.5.2$COORD_Y | \
$Z $AW ' { print $1 "'"$LiMitEuR"'" $2 } ' | \
$Z $R "$LiMitEuR" "$K_NL" \
$Z > $FiLeTmP_GRAPHE$COORD_Y
$Z $PAST $FiLeTmP_GRAPHE.5.1$COORD_Z $FiLeTmP_GRAPHE.5.2$COORD_Z | \
$Z $AW ' { print $1 "'"$LiMitEuR"'" $2 } ' | \
$Z $R "$LiMitEuR" "$K_NL" \
$Z > $FiLeTmP_GRAPHE$COORD_Z
$Z set NpartX=`$CA $FiLeTmP_GRAPHE$COORD_X | $WCl`
$Z set NpartY=`$CA $FiLeTmP_GRAPHE$COORD_Y | $WCl`
$Z set NpartZ=`$CA $FiLeTmP_GRAPHE$COORD_Z | $WCl`
$Z set Npart=`$xcg/MIN3.01$X x=$NpartX y=$NpartY z=$NpartZ signe="$K_VIDE"`
$Z set CoLoRiAgE="$K_VIDE"
$Z if ("$_____Palette" == "RVB") then
$Z $xci/valeurs_alea$X \
$Z premiere=1 derniere=$Npart \
$Z inferieur=$NOIR_PLANCHER superieur=$BLANC \
$Z graine=$_____GraineR \
$Z entiers=VRAI message_borne_superieure_entiere=FAUX \
$Z > $FiLeTmP_GRAPHE$ROUGE
$Z $xci/valeurs_alea$X \
$Z premiere=1 derniere=$Npart \
$Z inferieur=$NOIR_PLANCHER superieur=$BLANC \
$Z graine=$_____GraineV \
$Z entiers=VRAI message_borne_superieure_entiere=FAUX \
$Z > $FiLeTmP_GRAPHE$VERTE
$Z $xci/valeurs_alea$X \
$Z premiere=1 derniere=$Npart \
$Z inferieur=$NOIR_PLANCHER superieur=$BLANC \
$Z graine=$_____GraineB \
$Z entiers=VRAI message_borne_superieure_entiere=FAUX \
$Z > $FiLeTmP_GRAPHE$BLEUE
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_ROUGE=$FiLeTmP_GRAPHE$ROUGE"
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_VERTE=$FiLeTmP_GRAPHE$VERTE"
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_BLEUE=$FiLeTmP_GRAPHE$BLEUE"
$Z else
$Z if ("$_____Palette" == "XYZ") then
$Z $xrv/LIN3.11$X \
$Z ne=$Npart \
$Z alpha=$_____RougeX \
$Z fichier1=$FiLeTmP_GRAPHE$COORD_X \
$Z beta=$_____RougeY \
$Z fichier2=$FiLeTmP_GRAPHE$COORD_Y \
$Z gamma=$_____RougeZ \
$Z fichier3=$FiLeTmP_GRAPHE$COORD_Z | \
$Z $xrv/normalise.01$X \
$Z ne=$Npart \
$Z fichier== \
$Z origine=$NOIR_PLANCHER \
$Z extremite=$BLANC \
$Z entiers=VRAI \
$Z > $FiLeTmP_GRAPHE$ROUGE
$Z $xrv/LIN3.11$X \
$Z ne=$Npart \
$Z alpha=$_____VerteX \
$Z fichier1=$FiLeTmP_GRAPHE$COORD_X \
$Z beta=$_____VerteY \
$Z fichier2=$FiLeTmP_GRAPHE$COORD_Y \
$Z gamma=$_____VerteZ \
$Z fichier3=$FiLeTmP_GRAPHE$COORD_Z | \
$Z $xrv/normalise.01$X \
$Z ne=$Npart \
$Z fichier== \
$Z origine=$NOIR_PLANCHER \
$Z extremite=$BLANC \
$Z entiers=VRAI \
$Z > $FiLeTmP_GRAPHE$VERTE
$Z $xrv/LIN3.11$X \
$Z ne=$Npart \
$Z alpha=$_____BleueX \
$Z fichier1=$FiLeTmP_GRAPHE$COORD_X \
$Z beta=$_____BleueY \
$Z fichier2=$FiLeTmP_GRAPHE$COORD_Y \
$Z gamma=$_____BleueZ \
$Z fichier3=$FiLeTmP_GRAPHE$COORD_Z | \
$Z $xrv/normalise.01$X \
$Z ne=$Npart \
$Z fichier== \
$Z origine=$NOIR_PLANCHER \
$Z extremite=$BLANC \
$Z entiers=VRAI \
$Z > $FiLeTmP_GRAPHE$BLEUE
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_ROUGE=$FiLeTmP_GRAPHE$ROUGE"
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_VERTE=$FiLeTmP_GRAPHE$VERTE"
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_BLEUE=$FiLeTmP_GRAPHE$BLEUE"
$Z else
$Z if ("$_____Palette" == "CAUSAL") then
$Z # Test introduit le 20151023152209... #
$Z set PaQ=2
$Z set SeLeCt2="$K_VIDE"
$Z set SeLeCt2="$SeLeCt2"" paquets=$PaQ"
$Z set SeLeCt2="$SeLeCt2"" Men_tete=FAUX"
$Z $xrv/un_sur_N.01$X \
$Z ne=$Npart \
$Z fichier=$FiLeTmP_GRAPHE$COORD_X \
$Z $SeLeCt2 \
$Z premier=VRAI dernier=FAUX \
$Z > $FiLeTmP_GRAPHE$COORD_X.1
$Z $xrv/un_sur_N.01$X \
$Z ne=$Npart \
$Z fichier=$FiLeTmP_GRAPHE$COORD_X \
$Z $SeLeCt2 \
$Z premier=FAUX dernier=VRAI \
$Z > $FiLeTmP_GRAPHE$COORD_X.2
$Z # Definition des coordonnees 'X' de l'origine ("1") et de l'extremite ("2") de chaque #
$Z # segment oriente. #
$Z $xrv/un_sur_N.01$X \
$Z ne=$Npart \
$Z fichier=$FiLeTmP_GRAPHE$COORD_Y \
$Z $SeLeCt2 \
$Z premier=VRAI dernier=FAUX \
$Z > $FiLeTmP_GRAPHE$COORD_Y.1
$Z $xrv/un_sur_N.01$X \
$Z ne=$Npart \
$Z fichier=$FiLeTmP_GRAPHE$COORD_Y \
$Z $SeLeCt2 \
$Z premier=FAUX dernier=VRAI \
$Z > $FiLeTmP_GRAPHE$COORD_Y.2
$Z # Definition des coordonnees 'Y' de l'origine ("1") et de l'extremite ("2") de chaque #
$Z # segment oriente. #
$Z $xrv/un_sur_N.01$X \
$Z ne=$Npart \
$Z fichier=$FiLeTmP_GRAPHE$COORD_Z \
$Z $SeLeCt2 \
$Z premier=VRAI dernier=FAUX \
$Z > $FiLeTmP_GRAPHE$COORD_Z.1
$Z $xrv/un_sur_N.01$X \
$Z ne=$Npart \
$Z fichier=$FiLeTmP_GRAPHE$COORD_Z \
$Z $SeLeCt2 \
$Z premier=FAUX dernier=VRAI \
$Z > $FiLeTmP_GRAPHE$COORD_Z.2
$Z # Definition des coordonnees 'Z' de l'origine ("1") et de l'extremite ("2") de chaque #
$Z # segment oriente. #
$Z @ NpartS2 = $Npart / $PaQ
$Z $xrv/SOUS.11$X \
$Z ne=$NpartS2 \
$Z fichier1=$FiLeTmP_GRAPHE$COORD_X.2 \
$Z fichier2=$FiLeTmP_GRAPHE$COORD_X.1 \
$Z > $FiLeTmP_GRAPHE$COORD_X.21
$Z $xrv/SOUS.11$X \
$Z ne=$NpartS2 \
$Z fichier1=$FiLeTmP_GRAPHE$COORD_Y.2 \
$Z fichier2=$FiLeTmP_GRAPHE$COORD_Y.1 \
$Z > $FiLeTmP_GRAPHE$COORD_Y.21
$Z $xrv/SOUS.11$X \
$Z ne=$NpartS2 \
$Z fichier1=$FiLeTmP_GRAPHE$COORD_Z.2 \
$Z fichier2=$FiLeTmP_GRAPHE$COORD_Z.1 \
$Z > $FiLeTmP_GRAPHE$COORD_Z.21
$Z # Conversion de chaque segment oriente en un vecteur. #
$Z $xrv/XYZ_RPT.01$X \
$Z ne=$NpartS2 \
$Z LISTE_X=$FiLeTmP_GRAPHE$COORD_X.21 \
$Z LISTE_Y=$FiLeTmP_GRAPHE$COORD_Y.21 \
$Z LISTE_Z=$FiLeTmP_GRAPHE$COORD_Z.21 \
$Z pRHO=0 pPHI=1 pTHETA=0 \
$Z > $FiLeTmP_GRAPHE.phi_
$Z $xrv/XYZ_RPT.01$X \
$Z ne=$NpartS2 \
$Z LISTE_X=$FiLeTmP_GRAPHE$COORD_X.21 \
$Z LISTE_Y=$FiLeTmP_GRAPHE$COORD_Y.21 \
$Z LISTE_Z=$FiLeTmP_GRAPHE$COORD_Z.21 \
$Z pRHO=0 pPHI=0 pTHETA=1 \
$Z > $FiLeTmP_GRAPHE.theta
$Z # Conversion des coordonnees cartesiennes en coordonnees spheriques. #
$Z $xrv/INCLcc.11$X \
$Z ne=$NpartS2 \
$Z fichierX=$FiLeTmP_GRAPHE.phi_ \
$Z fichierA=$_____MinPhi_ \
$Z fichierB=$_____MaxPhi_ \
$Z VRAI_FAUX=VRAI \
$Z > $FiLeTmP_GRAPHE.phi_.incl
$Z $xrv/INCLcc.11$X \
$Z ne=$NpartS2 \
$Z fichierX=$FiLeTmP_GRAPHE.theta \
$Z fichierA=$_____MinTheta \
$Z fichierB=$_____MaxTheta \
$Z VRAI_FAUX=VRAI \
$Z > $FiLeTmP_GRAPHE.theta.incl
$Z # Selection des 'theta's et des 'phi's situes a l'interieur d'un [min,max]... #
$Z $xrv/ADD2.11$X \
$Z ne=$NpartS2 \
$Z fichier1=$FiLeTmP_GRAPHE.phi_.incl \
$Z fichier2=$FiLeTmP_GRAPHE.theta.incl \
$Z > $FiLeTmP_GRAPHE.phi_.theta
$Z $xrv/neutre$X \
$Z ne=$NpartS2 \
$Z fichier=$FiLeTmP_GRAPHE.phi_.theta \
$Z exemplaires=$PaQ | \
$Z $SE -e 's/^+0$'"/$_____Niveau0/" \
$Z -e 's/^+1$'"/$_____Niveau1/" \
$Z -e 's/^+2$'"/$_____Niveau2/" \
$Z > $FiLeTmP_GRAPHE$NIVEAU
$Z # Pour chaque vecteur on choisit un niveau fonction de la situation de son {theta,phi} #
$Z # dans leur [min,max] respectifs... #
$Z set CoLoRiAgE="$CoLoRiAgE"" p=$_____PalettePT"
$Z else
$Z $xci/valeurs_inte$X \
$Z premiere=1 derniere=$Npart \
$Z lineaire=VRAI \
$Z vD=$NOIR_PLANCHER vA=$BLANC \
$Z entiers=VRAI \
$Z > $FiLeTmP_GRAPHE$NIVEAU
$Z set CoLoRiAgE="$CoLoRiAgE"" p=$_____Palette"
$Z endif
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_NIVEAU=$FiLeTmP_GRAPHE$NIVEAU"
$Z endif
$Z endif
$Z if ($_____Densite == $NEXIST) then
$Z # Test introduit le 20150706142412... #
$Z set ZoOm="ZOOM=$_____Zoom"
$Z else
$Z set ZoOm="zoom_automatique=VRAI"
$Z endif
$Z if ($_____Derivee == $EXIST) then
$Z # Test introduit le 20150706142412... #
$Z $xrv/XYZ_PseudoAleatoire.01$X \
$Z ne=$Npart \
$Z graine=$_____DeriveeX \
$Z ponderation=$_____PonderationX \
$Z LISTE_X=$FiLeTmP_GRAPHE$COORD_X \
$Z LISTE_Y=$FiLeTmP_GRAPHE$COORD_Y \
$Z LISTE_Z=$FiLeTmP_GRAPHE$COORD_Z \
$Z > $FiLeTmP_GRAPHE.dX
$Z set _____DeriveeX=$FiLeTmP_GRAPHE.dX
$Z $xrv/XYZ_PseudoAleatoire.01$X \
$Z ne=$Npart \
$Z graine=$_____DeriveeY \
$Z ponderation=$_____PonderationY \
$Z LISTE_X=$FiLeTmP_GRAPHE$COORD_X \
$Z LISTE_Y=$FiLeTmP_GRAPHE$COORD_Y \
$Z LISTE_Z=$FiLeTmP_GRAPHE$COORD_Z \
$Z > $FiLeTmP_GRAPHE.dY
$Z set _____DeriveeY=$FiLeTmP_GRAPHE.dY
$Z $xrv/XYZ_PseudoAleatoire.01$X \
$Z ne=$Npart \
$Z graine=$_____DeriveeZ \
$Z ponderation=$_____PonderationZ \
$Z LISTE_X=$FiLeTmP_GRAPHE$COORD_X \
$Z LISTE_Y=$FiLeTmP_GRAPHE$COORD_Y \
$Z LISTE_Z=$FiLeTmP_GRAPHE$COORD_Z \
$Z > $FiLeTmP_GRAPHE.dZ
$Z set _____DeriveeZ=$FiLeTmP_GRAPHE.dZ
$Z # Ainsi, les triplets de derivees sont lies aux triplets des coordonnees {X,Y,Z} de facon #
$Z # unique. Cela est parfait car chaque noeud {X,Y,Z} intervient plusieurs fois et il est #
$Z # bien que l'on retrouve les memes derivees lors de chaque occurence d'un meme noeud... #
$Z else
$Z endif
$Z if ($_____Deplacer == $EXIST) then
$Z # Test introduit le 20201027115903... #
$Z $xrv/XYZ_PseudoAleatoire.01$X \
$Z ne=$Npart \
$Z graine=$_____DeplacerGX \
$Z ponderation=$_____DeplacerXp \
$Z LISTE_X=$FiLeTmP_GRAPHE$COORD_X \
$Z LISTE_Y=$FiLeTmP_GRAPHE$COORD_Y \
$Z LISTE_Z=$FiLeTmP_GRAPHE$COORD_Z | \
$Z $xrv/ADD2.11$X \
$Z ne=$Npart \
$Z fichier1=$FiLeTmP_GRAPHE$COORD_X \
$Z fichier2== \
$Z > $FiLeTmP_GRAPHE.deplace$COORD_X
$Z $xrv/XYZ_PseudoAleatoire.01$X \
$Z ne=$Npart \
$Z graine=$_____DeplacerGY \
$Z ponderation=$_____DeplacerYp \
$Z LISTE_X=$FiLeTmP_GRAPHE$COORD_X \
$Z LISTE_Y=$FiLeTmP_GRAPHE$COORD_Y \
$Z LISTE_Z=$FiLeTmP_GRAPHE$COORD_Z | \
$Z $xrv/ADD2.11$X \
$Z ne=$Npart \
$Z fichier1=$FiLeTmP_GRAPHE$COORD_Y \
$Z fichier2== \
$Z > $FiLeTmP_GRAPHE.deplace$COORD_Y
$Z $xrv/XYZ_PseudoAleatoire.01$X \
$Z ne=$Npart \
$Z graine=$_____DeplacerGZ \
$Z ponderation=$_____DeplacerZp \
$Z LISTE_X=$FiLeTmP_GRAPHE$COORD_X \
$Z LISTE_Y=$FiLeTmP_GRAPHE$COORD_Y \
$Z LISTE_Z=$FiLeTmP_GRAPHE$COORD_Z | \
$Z $xrv/ADD2.11$X \
$Z ne=$Npart \
$Z fichier1=$FiLeTmP_GRAPHE$COORD_Z \
$Z fichier2== \
$Z > $FiLeTmP_GRAPHE.deplace$COORD_Z
$Z # Ainsi, les deplacements sont lies aux triplets des coordonnees {X,Y,Z} de facon #
$Z # unique. Cela est parfait car chaque noeud {X,Y,Z} intervient plusieurs fois et il est #
$Z # bien que l'on retrouve les memes deplacements lors de chaque occurence d'un meme noeud... #
$Z $DELETE $FiLeTmP_GRAPHE$COORD_X
$Z $DELETE $FiLeTmP_GRAPHE$COORD_Y
$Z $DELETE $FiLeTmP_GRAPHE$COORD_Z
$Z $MV $FiLeTmP_GRAPHE.deplace$COORD_X $FiLeTmP_GRAPHE$COORD_X
$Z $MV $FiLeTmP_GRAPHE.deplace$COORD_Y $FiLeTmP_GRAPHE$COORD_Y
$Z $MV $FiLeTmP_GRAPHE.deplace$COORD_Z $FiLeTmP_GRAPHE$COORD_Z
$Z else
$Z endif
$Z eval $xrv/particule.10$X np=1 iterations=$Npart \
$Z LISTE_X=$FiLeTmP_GRAPHE$COORD_X \
$Z LISTE_Y=$FiLeTmP_GRAPHE$COORD_Y \
$Z LISTE_Z=$FiLeTmP_GRAPHE$COORD_Z \
$Z LISTE_RAYON=$_____Rayon \
$Z grossissement=$_____Grossissement \
$Z $CoLoRiAgE \
$Z Lz=1000 \
$Z $ZoOm \
$Z ROTATION_OX=$_____RotationX \
$Z ROTATION_OY=$_____RotationY \
$Z ROTATION_OZ=$_____RotationZ \
$Z TRANSLATION_OX=$_____TranslationX \
$Z TRANSLATION_OY=$_____TranslationY \
$Z TRANSLATION_OZ=$_____TranslationZ \
$Z isoles=FAUX chainer=FAUX \
$Z ajuster_points=VRAI \
$Z equidistance=VRAI compatibilite_20051230=FAUX \
$Z distance_minimale=$_____DistanceMini \
$Z cubique=$_____Cubique \
$Z derivees_automatiques=FAUX \
$Z LISTE_dX=$_____DeriveeX \
$Z LISTE_dY=$_____DeriveeY \
$Z LISTE_dZ=$_____DeriveeZ \
$Z RVB=VRAI \
$Z N_AU_CARRE=$_____NAuCarre \
$Z editer_extrema_hors=FAUX \
$Z editer_mauvais_encadrement_niveaux_interpoles=FAUX \
$Z $_____Fond \
$Z $_____ParticulePara1 \
$Z R=$_____ImageR \
$Z chiffres=0 \
$Z $formatI \
$Z $_____Redirection
$Z # Le 20160203150635, je me demande a quoi sert l'option : #
$Z # #
$Z # dernier_premier=VRAI #
$Z # #
$Z # Est-elle vraiment utile ? Finalement, apres quelques tests le 20160204115935, je la #
$Z # supprime... #
$Z if ($_____Densite == $EXIST) then
$Z # Test introduit le 20150706142412... #
$Z $xrv/densite.01$X ne=$NPoInTs \
$Z LISTE_X=$FiLeTmP_GRAPHE.3.1$COORD_X \
$Z LISTE_Y=$FiLeTmP_GRAPHE.3.1$COORD_Y \
$Z LISTE_Z=$FiLeTmP_GRAPHE.3.1$COORD_Z \
$Z ajuster=VRAI \
$Z Efacteur=$_____Efacteur \
$Z ignorer_grandes_distances=$_____IgnorerGD \
$Z seuil_grandes_distances=$_____SeuilGD \
$Z image_unique=VRAI \
$Z Z=$_____Profondeur \
$Z R=$FiLeTmP_GRAPHE.DENSITE \
$Z $formatI
$Z $xci/acces$X A=$FiLeTmP_GRAPHE.DENSITE \
$Z standard=FAUX zero=FAUX \
$Z $formatI | \
$Z $xci/vraies_C$X \
$Z p=$_____PaletteD \
$Z R=$FiLeTmP_GRAPHE.DENSITE \
$Z $formatI
$Z execRVB $xci/multi_02.01$X \
$Z A1=$FiLeTmP_GRAPHE.DENSITE%s \
$Z A2=$_____ImageR%s \
$Z R=$_____ImageR%s \
$Z $formatI
$Z else
$Z endif
$Z FilSTmpE FiLeTmP_GRAPHE