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