#######################################################################################################################################
# #
# Q U A D R A G U L A T I O N D ' U N A R B R E #
# G R A C E A L A B I J E C T I O N D E S C H A E F F E R : #
# #
# #
# Author of '$xiirv/.QUAD.11.2.$U' : #
# #
# Jean-Francois Colonna (LACTAMME, 20150624093241). #
# #
#######################################################################################################################################
$Z SETParam _____SupRedondants $NEXIST
$Z # Parametre introduit le 20150628181208... #
$Z SETParam _____ListerNoeudsEtiquettes $EXIST
$Z # Parametre introduit le 20150626112221... #
$Z SETParam _____VisualiserArbre $EXIST
$Z SETParam _____VisualiserGraphe $EXIST
$Z if (($_____VisualiserArbre == $NEXIST) && ($_____VisualiserGraphe == $NEXIST)) then
$Z EROR "Rien n'est a visualiser, tout sera donc visualise."
$Z SET _____VisualiserArbre=$EXIST
$Z SET _____VisualiserGraphe=$EXIST
$Z else
$Z endif
$Z setParam _____Eval "$K_VIDE"
$Z setParam _____RayonA 0.020
$Z # Le 20150629114547 les rayons de l'Arbre et du Graphe ont ete differencies... #
$Z setParam _____RayonG 0.018
$Z # Le 20150629114547 les rayons de l'Arbre et du Graphe ont ete differencies... #
$Z setParam _____Grossissement 2
$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 _____CDeriveeX $NEXIST
$Z # Parametre introduit le 20150626205206... #
$Z SETParam _____CDeriveeY $NEXIST
$Z # Parametre introduit le 20150626205206... #
$Z setParam _____DeriveeXA 0
$Z setParam _____DeriveeYA 0
$Z setParam _____DeriveeZA 0
$Z setParam _____DeriveeXB 0
$Z setParam _____DeriveeYB 0
$Z setParam _____DeriveeZB 0
$Z setParam _____DistanceMini 0.005
$Z setParam _____Couronne `GetParam $xrv/particule.10$X couronne`
$Z # Parametre introduit le 20191015141056... #
$Z setParam _____SousArbre "$K_VIDE"
$Z setParam _____NiveauE "$GRIS_8"
$Z setParam _____NiveauD "$GRIS_1"
$Z setParam _____ARouge $GRIS_8
$Z setParam _____AVerte $GRIS_8
$Z setParam _____ABleue $GRIS_8
$Z SETParam _____CGraine 1789
$Z SETParam _____GRouge $GRIS_8
$Z # Lorsque {$_____GRouge,$_____GVerte,$_____GBleue} sont tous les trois egaux a '$GRIS_0' #
$Z # (ATTENTION : '$GRIS_0' n'est pas egal a '0', mais a '000'), alors les trois niveaux de #
$Z # gris sont tires au sort (cela permet de differencier plus facilement les differents arcs). #
$Z SETParam _____GVerte $GRIS_6
$Z # Lorsque {$_____GRouge,$_____GVerte,$_____GBleue} sont tous les trois egaux a '$GRIS_0' #
$Z # (ATTENTION : '$GRIS_0' n'est pas egal a '0', mais a '000'), alors les trois niveaux de #
$Z # gris sont tires au sort (cela permet de differencier plus facilement les differents arcs). #
$Z SETParam _____GBleue $GRIS_0
$Z # Lorsque {$_____GRouge,$_____GVerte,$_____GBleue} sont tous les trois egaux a '$GRIS_0' #
$Z # (ATTENTION : '$GRIS_0' n'est pas egal a '0', mais a '000'), alors les trois niveaux de #
$Z # gris sont tires au sort (cela permet de differencier plus facilement les differents arcs). #
$Z setParam _____Fond "$K_VIDE"
$Z setParam _____NAuCarre VRAI
$Z setParam _____ParticulePara1 "$K_VIDE"
$Z setParam _____Redirection "$K_VIDE"
$Z $CA $FiLeTmP_ARBRE | \
$Z $SE -e "s/^.*NumeroNoeud=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' \
$Z > $FiLeTmP_ARBRE.NUMEROS
$Z $CA $FiLeTmP_ARBRE | \
$Z $GRE " NumeroPere=" | \
$Z $SE -e "s/^.* NumeroPere=//" \
$Z -e 's/\( *\)NumeroNoeud=\([^ ][^ ]*\) .*$/\1\2/' | \
$Z $SOR -u -n \
$Z > $FiLeTmP_ARBRE.ARETES_ARBRE
$Z $CA $FiLeTmP_ARBRE | \
$Z $SE -e "s/^.*EtiquetteNoeud=//" \
$Z -e 's/^\([^ ][^ ]*\) .*$/\1/' \
$Z > $FiLeTmP_ARBRE.ETIQUETTES
$Z if ($_____ListerNoeudsEtiquettes == $EXIST) then
$Z $PAST $FiLeTmP_ARBRE.NUMEROS $FiLeTmP_ARBRE.ETIQUETTES | \
$Z $AW ' { print "NumeroNoeud=" $1 " EtiquetteNoeud=" $2 } '
$Z else
$Z endif
$Z if ($_____SupRedondants == $EXIST) then
$Z # Test introduit le 20150629101303... #
$Z set TrIeR_NoEuDs=VRAI
$Z else
$Z # Test introduit le 20150629101303... #
$Z set TrIeR_NoEuDs=FAUX
$Z endif
$Z $xrv/QuadrangulationArbre.11$X \
$Z ne=0 \
$Z numeros=$FiLeTmP_ARBRE.NUMEROS \
$Z etiquettes=$FiLeTmP_ARBRE.ETIQUETTES \
$Z aretes=VRAI \
$Z trier_noeuds=$TrIeR_NoEuDs \
$Z editer_dernier_numero=FAUX \
$Z formater=VRAI signe="$K_VIDE" | \
$Z $SOR -u \
$Z > $FiLeTmP_ARBRE.ARETES_GRAPHE
$Z # Le 20150628181208709 j'ai supprime les "+" devant les numeros car, en effet, pour que le #
$Z # tri numerique fonctionne correctement il faut que les nombres de plus d'un chiffre ne #
$Z # soient pas signes... #
$Z # #
$Z # ATTENTION, ne surtout pas utiliser : #
$Z # #
$Z # $SOR -u -n #
$Z # #
$Z # Le 20150629101303 j'ai supprime l'edition du dernier numero afin de ne pas revenir sur #
$Z # la racine de quadragulation... #
$Z $CA $FiLeTmP_ARBRE | \
$Z $SE -e "s/^.*NumeroNoeud=//" \
$Z -e "s/^\([^ ][^ ]*\) .*\( X2=\)/\1\2/" \
$Z -e "s/[XYZ]2=//g" \
$Z > $FiLeTmP_ARBRE.NOEUDS
$Z if ($_____SupRedondants == $EXIST) then
$Z # Test introduit le 20150628181208... #
$Z set MaRqUeUr="_"
$Z $CA $FiLeTmP_ARBRE.NOEUDS | \
$Z $AW ' { print $1 " " $2 "'"$MaRqUeUr"'" $3 "'"$MaRqUeUr"'" $4 } ' | \
$Z $SOR --key=2 \
$Z > $FiLeTmP_ARBRE.NOEUDS_TRIES
$Z $CA $FiLeTmP_ARBRE.NOEUDS_TRIES | \
$Z $UNI --skip-fields=1 \
$Z > $FiLeTmP_ARBRE.NOEUDS_UNIQUES
$Z set NNoEuDs=`$CA $FiLeTmP_ARBRE.NOEUDS_UNIQUES | $WCl`
$Z set NoEuD=1
$Z while ($NoEuD <= $NNoEuDs)
$Z set NoEuDu=`(listMN $FiLeTmP_ARBRE.NOEUDS_UNIQUES $NoEuD $NoEuD) | $AW ' { print $1 }'`
$Z set XYZu=`(listMN $FiLeTmP_ARBRE.NOEUDS_UNIQUES $NoEuD $NoEuD) | $AW ' { print $2 }'`
$Z $CA $FiLeTmP_ARBRE.NOEUDS_TRIES | \
$Z $GRE " $XYZu"'$' | \
$Z $AW ' { print "s/^" $1 " /'"$NoEuDu "'/" } ' \
$Z >>! $FiLeTmP_ARBRE$sed
$Z $CA $FiLeTmP_ARBRE.NOEUDS_TRIES | \
$Z $GRE " $XYZu"'$' | \
$Z $AW ' { print "s/ " $1 "$/'" $NoEuDu"'/" } ' \
$Z >>! $FiLeTmP_ARBRE$sed
$Z # Construction d'une table de conversion remplacant tous les numeros de noeud correspondant #
$Z # a un meme point {X,Y,Z} par le premier d'entre-eux. Ainsi dans cet exemple : #
$Z # #
$Z # #
$Z # N=5 #
$Z # #
$Z # * #
$Z # | #
$Z # | #
$Z # | #
$Z # | #
$Z # | #
$Z # | #
$Z # N=4 | N=6 #
$Z # N=3 *-------------------*-------------------* N=7 #
$Z # N=2 | N=8 #
$Z # | #
$Z # | #
$Z # | #
$Z # | #
$Z # N=0 | #
$Z # | #
$Z # * N=1 * N=9 #
$Z # #
$Z # #
$Z # (qui est un arbre ternaire) les noeuds {2,4,6,8} sont un seul noeud (2) et de meme les #
$Z # noeuds {1,9} sont un seul noeud (1)... #
$Z @ NoEuD = $NoEuD + 1
$Z end
$Z $CA $FiLeTmP_ARBRE.ARETES_ARBRE | \
$Z $SE -f $FiLeTmP_ARBRE$sed | \
$Z $AW ' { print $1 } ' \
$Z > $FiLeTmP_ARBRE.ARETES_ARBRE.1
$Z $CA $FiLeTmP_ARBRE.ARETES_ARBRE | \
$Z $SE -f $FiLeTmP_ARBRE$sed | \
$Z $AW ' { print $2 } ' \
$Z > $FiLeTmP_ARBRE.ARETES_ARBRE.2
$Z $xrv/MIN2.11$X ne=0 \
$Z fichier1=$FiLeTmP_ARBRE.ARETES_ARBRE.1 \
$Z fichier2=$FiLeTmP_ARBRE.ARETES_ARBRE.2 \
$Z formater=VRAI signe="$K_VIDE" \
$Z > $FiLeTmP_ARBRE.ARETES_ARBRE.min
$Z $xrv/MAX2.11$X ne=0 \
$Z fichier1=$FiLeTmP_ARBRE.ARETES_ARBRE.1 \
$Z fichier2=$FiLeTmP_ARBRE.ARETES_ARBRE.2 \
$Z formater=VRAI signe="$K_VIDE" \
$Z > $FiLeTmP_ARBRE.ARETES_ARBRE.max
$Z $DELETE $FiLeTmP_ARBRE.ARETES_ARBRE
$Z $PAST $FiLeTmP_ARBRE.ARETES_ARBRE.min $FiLeTmP_ARBRE.ARETES_ARBRE.max | \
$Z $AW ' { print $1 " " $2 } ' | \
$Z $SOR -u \
$Z > $FiLeTmP_ARBRE.ARETES_ARBRE
$Z # Ainsi les aretes sont rangees par numero croissant de leurs noeuds... #
$Z $CA $FiLeTmP_ARBRE.ARETES_GRAPHE | \
$Z $SE -f $FiLeTmP_ARBRE$sed | \
$Z $AW ' { print $1 } ' \
$Z > $FiLeTmP_ARBRE.ARETES_GRAPHE.1
$Z $CA $FiLeTmP_ARBRE.ARETES_GRAPHE | \
$Z $SE -f $FiLeTmP_ARBRE$sed | \
$Z $AW ' { print $2 } ' \
$Z > $FiLeTmP_ARBRE.ARETES_GRAPHE.2
$Z $xrv/MIN2.11$X ne=0 \
$Z fichier1=$FiLeTmP_ARBRE.ARETES_GRAPHE.1 \
$Z fichier2=$FiLeTmP_ARBRE.ARETES_GRAPHE.2 \
$Z formater=VRAI signe="$K_VIDE" \
$Z > $FiLeTmP_ARBRE.ARETES_GRAPHE.min
$Z $xrv/MAX2.11$X ne=0 \
$Z fichier1=$FiLeTmP_ARBRE.ARETES_GRAPHE.1 \
$Z fichier2=$FiLeTmP_ARBRE.ARETES_GRAPHE.2 \
$Z formater=VRAI signe="$K_VIDE" \
$Z > $FiLeTmP_ARBRE.ARETES_GRAPHE.max
$Z $DELETE $FiLeTmP_ARBRE.ARETES_GRAPHE
$Z $PAST $FiLeTmP_ARBRE.ARETES_GRAPHE.min $FiLeTmP_ARBRE.ARETES_GRAPHE.max | \
$Z $AW ' { print $1 " " $2 } ' | \
$Z $SOR -u \
$Z > $FiLeTmP_ARBRE.ARETES_GRAPHE
$Z # Ainsi les aretes sont rangees par numero croissant de leurs noeuds... #
$Z else
$Z endif
$Z if ($_____VisualiserArbre == $EXIST) then
$Z set NArEtEs_ArBrE=`$CA $FiLeTmP_ARBRE.ARETES_ARBRE | $WCl`
$Z $CA $FiLeTmP_ARBRE.ARETES_ARBRE \
$Z >>! $FiLeTmP_ARBRE.ARETES_SELECTION
$Z else
$Z set NArEtEs_ArBrE=0
$Z endif
$Z if ($_____VisualiserGraphe == $EXIST) then
$Z set NArEtEs_GrApHe=`$CA $FiLeTmP_ARBRE.ARETES_GRAPHE | $WCl`
$Z $CA $FiLeTmP_ARBRE.ARETES_GRAPHE \
$Z >>! $FiLeTmP_ARBRE.ARETES_SELECTION
$Z else
$Z set NArEtEs_GrApHe=0
$Z endif
$Z set NArEtEs=`$CA $FiLeTmP_ARBRE.ARETES_SELECTION | $WCl`
$Z set ArEtE=1
$Z set DeRiVeEs_ArBrE=0
$Z set DiViSe=0.1
$Z set GrAiNe=$_____CGraine
$Z set CInFeRiEuRe=$GRIS_1
$Z set CSuPeRiEuRe=$GRIS_8
$Z alias CoulAlea '$xci/valeurs_alea$X \\
$Z premiere=1 derniere=1 \\
$Z inferieur=$CInFeRiEuRe superieur=$CSuPeRiEuRe \\
$Z graine=$GrAiNe \\
$Z entiers=VRAI message_borne_superieure_entiere=FAUX \\
$Z '
$Z # Generation d'une composante chromatique aleatoire... #
$Z # #
$Z # On notera que cet alias ne peut contenir : #
$Z # #
$Z # @ GrAiNe = $GrAiNe + 13 #
$Z # #
$Z # qui serait ineffectif dans : #
$Z # #
$Z # set CRoUgE=`CoulAlea` #
$Z # #
$Z # puisqu'execute dans un sous-shell... #
$Z while ($ArEtE <= $NArEtEs)
$Z set NoEuDA=`(listMN $FiLeTmP_ARBRE.ARETES_SELECTION $ArEtE $ArEtE) | $AW ' { print $1 }'`
$Z set NoEuDB=`(listMN $FiLeTmP_ARBRE.ARETES_SELECTION $ArEtE $ArEtE) | $AW ' { print $2 }'`
$Z set NoEuD_AB=`$xcg/SOUA.01$X a=$NoEuDA b=$NoEuDB signe="$K_VIDE"`
$Z set NoEuD_AB=`$xcg/LOGX.01$X facteur=1 x=$NoEuD_AB translateur=1`
$Z # Introduit le 20150629103728 afin de pouvoir faire la difference entre deux arcs joignant #
$Z # la meme paire de noeuds via les dervivees associees. Ainsi, plus les numeros de neuds #
$Z # de 'A' et de 'B" sont differents, plus les derivees en 'A' et en 'B' seront importantes... #
$Z set Co_XA=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDA " | $AW ' { print $2 } '`
$Z echo "$Co_XA" \
$Z >>! $FiLeTmP_ARBRE$COORD_X
$Z set Co_YA=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDA " | $AW ' { print $3 } '`
$Z echo "$Co_YA" \
$Z >>! $FiLeTmP_ARBRE$COORD_Y
$Z set Co_ZA=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDA "| $AW ' { print $4 } '`
$Z echo "$Co_ZA" \
$Z >>! $FiLeTmP_ARBRE$COORD_Z
$Z # Recuperation du noeud 'A' de l'arete courante. #
$Z set Co_XB=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDB " | $AW ' { print $2 } '`
$Z echo "$Co_XB" \
$Z >>! $FiLeTmP_ARBRE$COORD_X
$Z set Co_YB=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDB " | $AW ' { print $3 } '`
$Z echo "$Co_YB" \
$Z >>! $FiLeTmP_ARBRE$COORD_Y
$Z set Co_ZB=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDB " | $AW ' { print $4 } '`
$Z echo "$Co_ZB" \
$Z >>! $FiLeTmP_ARBRE$COORD_Z
$Z # Recuperation du noeud 'B' de l'arete courante. #
$Z if (($NArEtEs_ArBrE != 0) && ($ArEtE <= $NArEtEs_ArBrE)) then
$Z echo "$_____ARouge\n$_____ARouge" \
$Z >>! $FiLeTmP_ARBRE$ROUGE
$Z echo "$_____AVerte\n$_____AVerte" \
$Z >>! $FiLeTmP_ARBRE$VERTE
$Z echo "$_____ABleue\n$_____ABleue" \
$Z >>! $FiLeTmP_ARBRE$BLEUE
$Z echo "$DeRiVeEs_ArBrE\n$DeRiVeEs_ArBrE" \
$Z >>! $FiLeTmP_ARBRE.DERIVEES$COORD_X
$Z echo "$DeRiVeEs_ArBrE\n$DeRiVeEs_ArBrE" \
$Z >>! $FiLeTmP_ARBRE.DERIVEES$COORD_Y
$Z echo "$DeRiVeEs_ArBrE\n$DeRiVeEs_ArBrE" \
$Z >>! $FiLeTmP_ARBRE.DERIVEES$COORD_Z
$Z echo "$_____RayonA\n$_____RayonA" \
$Z >>! $FiLeTmP_ARBRE$RAYON
$Z # Cas des aretes appartenant a l'arbre. #
$Z else
$Z if ( ($_____GRouge == $GRIS_0) \
$Z && ($_____GVerte == $GRIS_0) \
$Z && ($_____GBleue == $GRIS_0) \
$Z ) then
$Z set CRoUgE=`CoulAlea`
$Z @ GrAiNe = $GrAiNe + 13
$Z set CVeRtE=`CoulAlea`
$Z @ GrAiNe = $GrAiNe + 13
$Z set CBlEuE=`CoulAlea`
$Z @ GrAiNe = $GrAiNe + 13
$Z else
$Z set CRoUgE=$_____GRouge
$Z set CVeRtE=$_____GVerte
$Z set CBlEuE=$_____GBleue
$Z endif
$Z echo "$CRoUgE\n$CRoUgE" \
$Z >>! $FiLeTmP_ARBRE$ROUGE
$Z echo "$CVeRtE\n$CVeRtE" \
$Z >>! $FiLeTmP_ARBRE$VERTE
$Z echo "$CBlEuE\n$CBlEuE" \
$Z >>! $FiLeTmP_ARBRE$BLEUE
$Z set DeRiVeE_XA=$_____DeriveeXA
$Z set DeRiVeE_YA=$_____DeriveeYA
$Z set DeRiVeE_ZA=$_____DeriveeZA
$Z set DeRiVeE_XB=$_____DeriveeXB
$Z set DeRiVeE_YB=$_____DeriveeYB
$Z set DeRiVeE_ZB=$_____DeriveeZB
$Z if ($_____CDeriveeX == $EXIST) then
$Z # Le possible calcul des derivees en 'X' a ete introduit le 20150626205206... #
$Z set DeRiVeE_XA=`$xcg/SOUS.01$X a=$Co_XA b=$Co_XB signe="$K_VIDE"`
$Z # L'absence du signe du resultat est destine a permettre le test suivant par rapport a '0'... #
$Z if ($DeRiVeE_XA == 0) then
$Z set DeRiVeE_XA=1
$Z else
$Z endif
$Z set DeRiVeE_XA=`$xcg/MUL3.01$X a=$_____DeriveeXA b=$DeRiVeE_XA c=$NoEuD_AB`
$Z set DeRiVeE_ZA=`$xcg/MUL3.01$X a=$_____DeriveeZA b=$DeRiVeE_XA c=$NoEuD_AB`
$Z # ATTENTION : cette valeur de '$DeRiVeE_ZA' peut etre "ecrasee" plus loin... #
$Z set DeRiVeE_XB=`$xcg/SOUS.01$X a=$Co_XB b=$Co_XA signe="$K_VIDE"`
$Z # L'absence du signe du resultat est destine a permettre le test suivant par rapport a '0'... #
$Z if ($DeRiVeE_XB == 0) then
$Z set DeRiVeE_XB=1
$Z else
$Z endif
$Z set DeRiVeE_XB=`$xcg/MUL3.01$X a=$_____DeriveeXB b=$DeRiVeE_XB c=$NoEuD_AB`
$Z set DeRiVeE_ZB=`$xcg/MUL3.01$X a=$_____DeriveeZB b=$DeRiVeE_XB c=$NoEuD_AB`
$Z # ATTENTION : cette valeur de '$DeRiVeE_ZB' peut etre "ecrasee" plus loin... #
$Z else
$Z endif
$Z if ($_____CDeriveeY == $EXIST) then
$Z # Le possible calcul des derivees en 'X' a ete introduit le 20150626205206... #
$Z set DeRiVeE_YA=`$xcg/SOUS.01$X a=$Co_YA b=$Co_YB signe="$K_VIDE"`
$Z # L'absence du signe du resultat est destine a permettre le test suivant par rapport a '0'... #
$Z if ($DeRiVeE_YA == 0) then
$Z set DeRiVeE_YA=1
$Z else
$Z endif
$Z set DeRiVeE_YA=`$xcg/MUL3.01$X a=$_____DeriveeYA b=$DeRiVeE_YA c=$NoEuD_AB`
$Z set DeRiVeE_ZA=`$xcg/MUL3.01$X a=$_____DeriveeZA b=$DeRiVeE_YA c=$NoEuD_AB`
$Z # ATTENTION : cette valeur de '$DeRiVeE_ZA' peut "ecraser" la valeur precedente... #
$Z set DeRiVeE_YB=`$xcg/SOUS.01$X a=$Co_YB b=$Co_YA signe="$K_VIDE"`
$Z # L'absence du signe du resultat est destine a permettre le test suivant par rapport a '0'... #
$Z if ($DeRiVeE_YB == 0) then
$Z set DeRiVeE_YB=1
$Z else
$Z endif
$Z set DeRiVeE_YB=`$xcg/MUL3.01$X a=$_____DeriveeYB b=$DeRiVeE_YB c=$NoEuD_AB`
$Z set DeRiVeE_ZB=`$xcg/MUL3.01$X a=$_____DeriveeZB b=$DeRiVeE_YB c=$NoEuD_AB`
$Z # ATTENTION : cette valeur de '$DeRiVeE_ZB' peut "ecraser" la valeur precedente... #
$Z else
$Z endif
$Z echo "$DeRiVeE_XA\n$DeRiVeE_XB" \
$Z >>! $FiLeTmP_ARBRE.DERIVEES$COORD_X
$Z echo "$DeRiVeE_YA\n$DeRiVeE_YB" \
$Z >>! $FiLeTmP_ARBRE.DERIVEES$COORD_Y
$Z echo "$DeRiVeE_ZA\n$DeRiVeE_ZB" \
$Z >>! $FiLeTmP_ARBRE.DERIVEES$COORD_Z
$Z echo "$_____RayonG\n$_____RayonG" \
$Z >>! $FiLeTmP_ARBRE$RAYON
$Z # Cas des aretes appartenant au graphe (qui contient donc certaines aretes de l'arbre, mais #
$Z # pas toutes... #
$Z endif
$Z @ ArEtE = $ArEtE + 1
$Z end
$Z set CoLoRiAgE="$K_VIDE"
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_ROUGE=$FiLeTmP_ARBRE$ROUGE"
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_VERTE=$FiLeTmP_ARBRE$VERTE"
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_BLEUE=$FiLeTmP_ARBRE$BLEUE"
$Z set DeRiVeEs="$K_VIDE"
$Z set DeRiVeEs="$DeRiVeEs"" LISTE_dX=$FiLeTmP_ARBRE.DERIVEES$COORD_X"
$Z set DeRiVeEs="$DeRiVeEs"" LISTE_dY=$FiLeTmP_ARBRE.DERIVEES$COORD_Y"
$Z set DeRiVeEs="$DeRiVeEs"" LISTE_dZ=$FiLeTmP_ARBRE.DERIVEES$COORD_Z"
$Z set NpartX=`$CA $FiLeTmP_ARBRE$COORD_X | $WCl`
$Z set NpartY=`$CA $FiLeTmP_ARBRE$COORD_Y | $WCl`
$Z set NpartZ=`$CA $FiLeTmP_ARBRE$COORD_Z | $WCl`
$Z set Npart=`$xcg/MIN3.01$X x=$NpartX y=$NpartY z=$NpartZ`
$Z eval $xrv/particule.10$X np=1 iterations=$Npart \
$Z dernier_premier=VRAI \
$Z LISTE_X=$FiLeTmP_ARBRE$COORD_X \
$Z LISTE_Y=$FiLeTmP_ARBRE$COORD_Y \
$Z LISTE_Z=$FiLeTmP_ARBRE$COORD_Z \
$Z LISTE_RAYON=$FiLeTmP_ARBRE$RAYON \
$Z grossissement=$_____Grossissement \
$Z $CoLoRiAgE \
$Z Lz=1000 \
$Z ZOOM=$_____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 couronne=$_____Couronne \
$Z cubique=$_____Cubique \
$Z derivees_automatiques=FAUX \
$Z $DeRiVeEs \
$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 FilSTmpE FiLeTmP_ARBRE