#######################################################################################################################################
# #
# G E N E R A T I O N D ' U N A R B R E : #
# #
# #
# Author of '$xiirv/.TREE.11.$U' : #
# #
# Jean-Francois COLONNA (LACTAMME, 20130401080833). #
# #
#######################################################################################################################################
$Z setParam _____3D `GetParam $xci/valeurs_Arbre.01$X tridimensionnel`
$Z # Argument introduit le 20130417182041... #
$Z setParam _____X1 `GetParam $xci/valeurs_Arbre.01$X X1`
$Z setParam _____Y1 `GetParam $xci/valeurs_Arbre.01$X Y1`
$Z setParam _____Z1 `GetParam $xci/valeurs_Arbre.01$X Z1`
$Z # Argument introduit le 20130402110943... #
$Z setParam _____X2 `GetParam $xci/valeurs_Arbre.01$X X2`
$Z setParam _____Y2 `GetParam $xci/valeurs_Arbre.01$X Y2`
$Z setParam _____Z2 `GetParam $xci/valeurs_Arbre.01$X Z2`
$Z # Argument introduit le 20130402110943... #
$Z setParam _____Iterations 4
$Z setParam _____CDI `GetParam $xci/valeurs_Arbre.01$X conserver_direction_initiale`
$Z # Argument introduit le 20160321173655... #
$Z setParam _____NBranchesTheta 4
$Z setParam _____EvasementTheta $pis2
$Z setParam _____FEvasementTheta `GetParam $xci/valeurs_Arbre.01$X facteur_evasement_theta`
$Z # Argument introduit le 20160217174503... #
$Z setParam _____NBranchesPhi 1
$Z # Argument introduit le 20130417150217... #
$Z setParam _____EvasementPhi 0
$Z # Argument introduit le 20130417150217... #
$Z setParam _____FEvasementPhi `GetParam $xci/valeurs_Arbre.01$X facteur_evasement_phi`
$Z # Argument introduit le 20160217174503... #
$Z setParam _____Reduction 0.75
$Z setParam _____Graine `GetParam $xci/valeurs_Arbre.01$X graine`
$Z setParam _____BIBranchesTheta `GetParam $xci/valeurs_Arbre.01$X borne_inferieure_branches_theta`
$Z setParam _____BSBranchesTheta `GetParam $xci/valeurs_Arbre.01$X borne_superieure_branches_theta`
$Z setParam _____BIBranchesPhi `GetParam $xci/valeurs_Arbre.01$X borne_inferieure_branches_phi`
$Z # Argument introduit le 20130417151810... #
$Z setParam _____BSBranchesPhi `GetParam $xci/valeurs_Arbre.01$X borne_superieure_branches_phi`
$Z # Argument introduit le 20130417151810... #
$Z setParam _____BIRho `GetParam $xci/valeurs_Arbre.01$X borne_inferieure_rho`
$Z setParam _____BSRho `GetParam $xci/valeurs_Arbre.01$X borne_superieure_rho`
$Z setParam _____BITheta `GetParam $xci/valeurs_Arbre.01$X borne_inferieure_theta`
$Z setParam _____BSTheta `GetParam $xci/valeurs_Arbre.01$X borne_superieure_theta`
$Z setParam _____BIPhi `GetParam $xci/valeurs_Arbre.01$X borne_inferieure_phi`
$Z # Argument introduit le 20130417144053... #
$Z setParam _____BSPhi `GetParam $xci/valeurs_Arbre.01$X borne_superieure_phi`
$Z # Argument introduit le 20130417144053... #
$Z setParam _____BIZ `GetParam $xci/valeurs_Arbre.01$X borne_inferieure_Z`
$Z # Argument introduit le 20130402110943... #
$Z setParam _____BSZ `GetParam $xci/valeurs_Arbre.01$X borne_superieure_Z`
$Z # Argument introduit le 20130402110943... #
$Z setParam _____ArgumentsArbre "$K_VIDE"
$Z # Argument introduit le 20160324163608... #
$Z SETParam _____Complet $NEXIST
$Z # Argument introduit le 20160322153723 afin de pouvoir chosir entre '$xci/valeurs_Arbre.01$X' #
$Z # ('$NEXIST') et '$xci/valeurs_Arbre.01$Z' ('$EXIST') ce dernier etant le "mode Complet..." #
$Z setParam _____Eval "$K_VIDE"
$Z SETParam _____RayonAligne $NEXIST
$Z # Argument introduit le 20160325084105... #
$Z SETParam _____ERayonAligne 0.5
$Z # Argument introduit le 20160325090753... #
$Z SETParam _____FRayonAligne 0.004
$Z # Argument introduit le 20160325090753... #
$Z SETParam _____Rayon (0.080)
$Z # A compter du 20160321114643 l'argument '$_____Rayon' peut contenir plusieurs valeurs... #
$Z setParam _____Grossissement 1
$Z setParam _____Zoom 0.6
$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 FAUX
$Z setParam _____DeriveeX 0
$Z setParam _____DeriveeY 0
$Z setParam _____DeriveeZ 0
$Z setParam _____DistanceMini 0.005
$Z setParam _____Arbre "1/"
$Z # Argument introduit le 20130403080427... #
$Z setParam _____SousArbre "$K_VIDE"
$Z setParam _____NiveauE "$GRIS_8"
$Z setParam _____NiveauD "$GRIS_1"
$Z setParam _____Palette "$K_VIDE"
$Z setParam _____Fond "$K_VIDE"
$Z setParam _____NAuCarre VRAI
$Z setParam _____ParticulePara1 "$K_VIDE"
$Z setParam _____Redirection "$K_VIDE"
$Z # Parametre introduit le 20130403104021... #
$Z setParam _____FCoordonnees "$K_VIDE"
$Z # Parametre introduit le 20240908180545... #
$Z FileTmpB FiLeTmP_ARBRE
$Z set ChiffresFlot=8
$Z set ArGuMeNtS="$K_VIDE"
$Z set ArGuMeNtS="$ArGuMeNtS"" tridimensionnel=$_____3D"
$Z set ArGuMeNtS="$ArGuMeNtS"" X1=$_____X1"
$Z set ArGuMeNtS="$ArGuMeNtS"" Y1=$_____Y1"
$Z set ArGuMeNtS="$ArGuMeNtS"" Z1=$_____Z1"
$Z set ArGuMeNtS="$ArGuMeNtS"" X2=$_____X2"
$Z set ArGuMeNtS="$ArGuMeNtS"" Y2=$_____Y2"
$Z set ArGuMeNtS="$ArGuMeNtS"" Z2=$_____Z2"
$Z set ArGuMeNtS="$ArGuMeNtS"" iterations=$_____Iterations"
$Z set ArGuMeNtS="$ArGuMeNtS"" conserver_direction_initiale=$_____CDI"
$Z set ArGuMeNtS="$ArGuMeNtS"" nombre_branches_theta=$_____NBranchesTheta"
$Z set ArGuMeNtS="$ArGuMeNtS"" evasement_theta=$_____EvasementTheta"
$Z set ArGuMeNtS="$ArGuMeNtS"" facteur_evasement_theta=$_____FEvasementTheta"
$Z set ArGuMeNtS="$ArGuMeNtS"" nombre_branches_phi=$_____NBranchesPhi"
$Z set ArGuMeNtS="$ArGuMeNtS"" evasement_phi=$_____EvasementPhi"
$Z set ArGuMeNtS="$ArGuMeNtS"" facteur_evasement_phi=$_____FEvasementPhi"
$Z set ArGuMeNtS="$ArGuMeNtS"" facteur_reduction=$_____Reduction"
$Z set ArGuMeNtS="$ArGuMeNtS"" graine=$_____Graine"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_inferieure_branches_theta=$_____BIBranchesTheta"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_superieure_branches_theta=$_____BSBranchesTheta"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_inferieure_branches_phi=$_____BIBranchesPhi"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_superieure_branches_phi=$_____BSBranchesPhi"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_inferieure_rho=$_____BIRho"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_superieure_rho=$_____BSRho"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_inferieure_theta=$_____BITheta"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_superieure_theta=$_____BSTheta"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_inferieure_phi=$_____BIPhi"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_superieure_phi=$_____BSPhi"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_inferieure_Z=$_____BIZ"
$Z set ArGuMeNtS="$ArGuMeNtS"" borne_superieure_Z=$_____BSZ"
$Z set ArGuMeNtS="$ArGuMeNtS"" ChiffresFlot=$ChiffresFlot"
$Z set ArGuMeNtS="$ArGuMeNtS"" $_____ArgumentsArbre"
$Z # Liste d'arguments introduites le 20160322145838... #
$Z if ($_____Complet == $NEXIST) then
$Z # Test introduit le 20160322152943... #
#20160324163608____:$Z $xci/valeurs_Arbre.01$X \ #
#20160324163608____:$Z $ArGuMeNtS | \ #
#20160324163608____:$Z $GRE "=$_____Arbre" \ #
#20160324163608____:$Z > $FiLeTmP_ARBRE #
$Z $xci/valeurs_Arbre.01$X \
$Z $ArGuMeNtS | \
$Z $GRE "^Arborescence=$_____Arbre" \
$Z > $FiLeTmP_ARBRE
$Z # L'extraction de '$_____Arbre' a ete introduite le 20130403080427... #
$Z $CA $FiLeTmP_ARBRE | \
$Z $AW ' { print $1 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_ARBRE.filiation
$Z $CA $FiLeTmP_ARBRE | \
$Z $SE -e 's/^.* X1=\([^ ][^ ]*\) .*$/\1/' \
$Z > $FiLeTmP_ARBRE.X1$COORD_X
$Z $CA $FiLeTmP_ARBRE | \
$Z $SE -e 's/^.* Y1=\([^ ][^ ]*\) .*$/\1/' \
$Z > $FiLeTmP_ARBRE.Y1$COORD_Y
$Z $CA $FiLeTmP_ARBRE | \
$Z $SE -e 's/^.* Z1=\([^ ][^ ]*\) .*$/\1/' \
$Z > $FiLeTmP_ARBRE.Z1$COORD_Z
$Z $CA $FiLeTmP_ARBRE | \
$Z $SE -e 's/^.* X2=\([^ ][^ ]*\) .*$/\1/' \
$Z > $FiLeTmP_ARBRE.X2$COORD_X
$Z $CA $FiLeTmP_ARBRE | \
$Z $SE -e 's/^.* Y2=\([^ ][^ ]*\) .*$/\1/' \
$Z > $FiLeTmP_ARBRE.Y2$COORD_Y
$Z $CA $FiLeTmP_ARBRE | \
$Z $SE -e 's/^.* Z2=\([^ ][^ ]*\) .*$/\1/' \
$Z > $FiLeTmP_ARBRE.Z2$COORD_Z
$Z else
$Z # Acces au mode dit "complet" introduit le 20160322153723... #
$Z $xci/valeurs_Arbre.01$Z \
$Z "$ArGuMeNtS" \
$Z $EXIST $EXIST \
$Z > $FiLeTmP_ARBRE
$Z $CA $FiLeTmP_ARBRE | \
$Z $AW ' { print $1 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_ARBRE.X1$COORD_X
$Z $CA $FiLeTmP_ARBRE | \
$Z $AW ' { print $2 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_ARBRE.Y1$COORD_Y
$Z $CA $FiLeTmP_ARBRE | \
$Z $AW ' { print $3 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_ARBRE.Z1$COORD_Z
$Z $CA $FiLeTmP_ARBRE | \
$Z $AW ' { print $4 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_ARBRE.X2$COORD_X
$Z $CA $FiLeTmP_ARBRE | \
$Z $AW ' { print $5 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_ARBRE.Y2$COORD_Y
$Z $CA $FiLeTmP_ARBRE | \
$Z $AW ' { print $6 } ' | \
$Z $SE -e "s/^.*=//" \
$Z > $FiLeTmP_ARBRE.Z2$COORD_Z
$Z endif
$Z $PAST $FiLeTmP_ARBRE.X1$COORD_X \
$Z $FiLeTmP_ARBRE.X2$COORD_X | \
$Z $R "$K_TAB" "$K_BLANC" | \
$Z $R "$K_BLANC" "$K_NL" | \
$Z $GRE -v '^ *$' \
$Z > $FiLeTmP_ARBRE$COORD_X
$Z $PAST $FiLeTmP_ARBRE.Y1$COORD_Y \
$Z $FiLeTmP_ARBRE.Y2$COORD_Y | \
$Z $R "$K_TAB" "$K_BLANC" | \
$Z $R "$K_BLANC" "$K_NL" | \
$Z $GRE -v '^ *$' \
$Z > $FiLeTmP_ARBRE$COORD_Y
$Z $PAST $FiLeTmP_ARBRE.Z1$COORD_Z \
$Z $FiLeTmP_ARBRE.Z2$COORD_Z | \
$Z $R "$K_TAB" "$K_BLANC" | \
$Z $R "$K_BLANC" "$K_NL" | \
$Z $GRE -v '^ *$' \
$Z > $FiLeTmP_ARBRE$COORD_Z
$Z $xrv/UdisF3D.01$X \
$Z ne=0 \
$Z LISTE_X1=$FiLeTmP_ARBRE.X1$COORD_X \
$Z LISTE_Y1=$FiLeTmP_ARBRE.Y1$COORD_Y \
$Z LISTE_Z1=$FiLeTmP_ARBRE.Z1$COORD_Z \
$Z LISTE_X2=$FiLeTmP_ARBRE.X2$COORD_X \
$Z LISTE_Y2=$FiLeTmP_ARBRE.Y2$COORD_Y \
$Z LISTE_Z2=$FiLeTmP_ARBRE.Z2$COORD_Z \
$Z > $FiLeTmP_ARBRE.longueurs
$Z if ($_____RayonAligne == $NEXIST) then
$Z # Test introduit le 20160325084105... #
$Z if ($#_____Rayon <= 1) then
$Z $xrv/AXPB.01$X \
$Z ne=0 \
$Z homothetie=$_____Rayon \
$Z fichier=$FiLeTmP_ARBRE.longueurs \
$Z translation=0 \
$Z exemplaires=2 \
$Z > $FiLeTmP_ARBRE.rayons
$Z else
$Z $xrv/AXPB.01$X \
$Z ne=0 \
$Z homothetie=$_____Rayon[1] \
$Z fichier=$FiLeTmP_ARBRE.longueurs \
$Z translation=0 \
$Z > $FiLeTmP_ARBRE.rayons.1
$Z $xrv/AXPB.01$X \
$Z ne=0 \
$Z homothetie=$_____Rayon[2] \
$Z fichier=$FiLeTmP_ARBRE.longueurs \
$Z translation=0 \
$Z > $FiLeTmP_ARBRE.rayons.2
$Z $PAST $FiLeTmP_ARBRE.rayons.1 $FiLeTmP_ARBRE.rayons.2 | \
$Z $AW ' { print $1 "\n" $2 } ' \
$Z > $FiLeTmP_ARBRE.rayons
$Z # Ainsi, a compter du 20160321114643, le rayon d'une branche n'est plus necessairement #
$Z # constant... #
$Z endif
$Z else
$Z $CA $FiLeTmP_ARBRE | \
$Z $SE -e 's/^.* NumeroAligne=\([^ ][^ ]*\) .*$/\1/' \
$Z > $FiLeTmP_ARBRE.rayons.1
$Z # Recherche des differents "NumeroAligne"s. #
$Z $CA $FiLeTmP_ARBRE.rayons.1 | \
$Z $SOR -n | \
$Z $UNI -c | \
$Z $AW ' { print "s/^" $2 "$/" $1 "/" } ' \
$Z > $FiLeTmP_ARBRE.rayons$sed
$Z # Conversion des differents "NumeroAligne"s en leur nombre d'occurences. #
$Z $CA $FiLeTmP_ARBRE.rayons.1 | \
$Z $SE -f $FiLeTmP_ARBRE.rayons$sed | \
$Z $xrv/PUIX.01$X ne=0 \
$Z fichier== \
$Z exposant=$_____ERayonAligne | \
$Z $xrv/MUL2.11$X ne=0 \
$Z fichier2== \
$Z fichier1=$_____FRayonAligne \
$Z exemplaires=2 \
$Z > $FiLeTmP_ARBRE.rayons
$Z # Ainsi, plus un "NumeroAligne" est present, plus son rayon sera grand... #
$Z endif
$Z if ("$_____Eval" != "$K_VIDE") then
$Z eval "$_____Eval"
$Z else
$Z endif
$Z if ("$_____ParticulePara1" != "$K_VIDE") then
$Z set _____ParticulePara1=`eval echo "$_____ParticulePara1"`
$Z else
$Z endif
$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 set CoLoRiAgE="$K_VIDE"
$Z # A priori... #
$Z if ("$_____Palette" != "$K_VIDE") then
#20160322152744____:$Z if ("$_____SousArbre" == "$K_VIDE") then #
$Z if (("$_____SousArbre" == "$K_VIDE") || (! -e $FiLeTmP_ARBRE.filiation)) then
$Z $xci/valeurs_inte$X \
$Z premiere=1 derniere=$Npart \
$Z vD=$NOIR vA=$BLANC \
$Z lineaire=VRAI \
$Z entiers=VRAI \
$Z > $FiLeTmP_ARBRE.niveaux
$Z else
$Z if ("$_____SousArbre" == "$_____Arbre") then
$Z set _____NiveauE=$_____NiveauD
$Z # Introduit le 20130601142345 afin de pouvoir generer des arbres monochromes... #
$Z else
$Z endif
$Z set EgAl="="
$Z set DiFfErEnT="#"
$Z $CA $FiLeTmP_ARBRE.filiation | \
$Z $SE -e "s+^$_____SousArbre"'.*$'"+$EgAl+" \
$Z -e "s+^[^$EgAl].*"'$'"+$DiFfErEnT+" \
$Z -e "s+^$EgAl"'$'"+$_____NiveauE+" \
$Z -e "s+^$DiFfErEnT"'$'"+$_____NiveauD+" | \
$Z $xrv/neutre$X \
$Z ne=0 \
$Z fichier== \
$Z entiers=VRAI \
$Z exemplaires=2 \
$Z > $FiLeTmP_ARBRE.niveaux
$Z endif
$Z set CoLoRiAgE="$CoLoRiAgE"" LISTE_NIVEAU=$FiLeTmP_ARBRE.niveaux"
$Z set CoLoRiAgE="$CoLoRiAgE"" paletteA=$_____Palette"
$Z else
$Z endif
$Z if ($?_____ARotationZ == $EXIST) then
$Z # Argument introduit le 20130422105928 afin de pouvoir fixer automatiquement la verticalite #
$Z # du tronc de l'arbre ce qui est plus qu'utile lorsque l'arbre est aleatoire... #
$Z set RaCiNe_X1=`$CA $FiLeTmP_ARBRE.X1$COORD_X | $HEA -1`
$Z set RaCiNe_Y1=`$CA $FiLeTmP_ARBRE.Y1$COORD_Y | $HEA -1`
$Z set RaCiNe_X2=`$CA $FiLeTmP_ARBRE.X2$COORD_X | $HEA -1`
$Z set RaCiNe_Y2=`$CA $FiLeTmP_ARBRE.Y2$COORD_Y | $HEA -1`
$Z set RaCiNe_X1X2=`calcul $RaCiNe_X2-$RaCiNe_X1`
$Z set RaCiNe_Y1Y2=`calcul $RaCiNe_Y2-$RaCiNe_Y1`
$Z set _____RotationZ=`$xrv/XY_RT.01$X ne=1 LISTE_X=$RaCiNe_X1X2 LISTE_Y=$RaCiNe_Y1Y2 pRHO=0 pTHETA=1`
$Z set _____RotationZ=`calcul $pis2-$_____RotationZ`
$Z else
$Z endif
$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.rayons \
$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 cubique=$_____Cubique \
$Z derivees_automatiques=FAUX \
$Z LISTE_dX=$_____DeriveeX LISTE_dY=$_____DeriveeY 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 'eval' a ete introduit le 20130403104021 a cause de l'eventuelle '$_____Redirection'... #
$Z IfBasic ("$_____FCoordonnees" != "$K_VIDE") ThenBasic
$Z # Test introduit le 20240908180545... #
$Z execXYZ $CP $FiLeTmP_ARBRE%s $_____FCoordonnees%s
$Z # Ainsi, on conserve les coordonnees des extremites de tous les segments de l'arbre... #
$Z ElseBasic
$Z EndifBasic
$Z FileTmpE FiLeTmP_ARBRE