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