####################################################################################################################################### # # # V I S U A L I S A T I O N D ' U N Z O O M S U R L ' E N S E M B L E D E M A N D E L B R O T # # D A N S L E S " P S E U D O - Q U A T E R N I O N S " : # # # # # # Author of '$xiirc/.MANE.B1.1.$U' : # # # # Jean-Francois Colonna (LACTAMME, 20110117130008). # # # ####################################################################################################################################### $Z setParam _____Xarrivee -0.15293 $Z setParam _____Yarrivee +1.03980 $Z setParam _____ListeNumeros (0000 0015 0030 0045 0060 0075 0090 0105 0120) $Z # Parametre introduit le 20110119082037... # $Z SETParam _____MinProportion 0.15 $Z # Parametre introduit le 20110118095743... # $Z SET cPremiere=1 $Z SET cDerniere=128 $Z @ Nimages = $cDerniere - $cPremiere $Z @ Nimages = $Nimages + 1 $Z set ItErAtIoN_0=14 $Z set ItErAtIoN_N=100 $Z FilSTmpB FLiStE_FeNeTrEs $Z FilSTmpB ZoOm_MaNdElBrOt $Z SformatI #20110117150934____:$Z Puh # #20110117164543____:$Z Puq # $Z Puh $Z # Afin de minimiser le temps de calcul... # $Z $xrc/mandel.01$X \ $Z xbga=$_____Xarrivee ybga=$_____Yarrivee \ $Z xhda=$_____Xarrivee yhda=$_____Yarrivee \ $Z N=$Nimages \ $Z arguments=FAUX \ $Z editer_fenetre_courante=VRAI \ $Z xbg_ybg_xhd_yhd=VRAI \ $Z R=$ZoOm_MaNdElBrOt. \ $Z $formatI \ $Z >>& $FLiStE_FeNeTrEs $Z RformatI $Z FilSTmpE ZoOm_MaNdElBrOt $Z set LiStE_NuMeRoS=($_____ListeNumeros) $Z set NItErAtIoNs=$LiStE_NuMeRoS[$#LiStE_NuMeRoS] $Z set NItErAtIoNs=`echo "$NItErAtIoNs" | $SE -e 's/^0*\(..*\)$/\1/'` $Z foreach NuMeRo_CoUrAnT ($LiStE_NuMeRoS) $Z set NuMeRo_FeNeTrE=`echo "$NuMeRo_CoUrAnT" | $SE -e 's/^0*\(..*\)$/\1/'` $Z set FeNeTrE=`$CA $FLiStE_FeNeTrEs | $GRE " $NuMeRo_FeNeTrE *: "` $Z set FeNeTrE=`echo "$FeNeTrE" | $SE -e "s/^.*AvantHomothetie='//" -e "s/'"'.*$//'` $Z # Definition de la fenetre de calcul associe au numero courant... # $Z SETv ItErAtIoNs=$UNDEF $Z set ItErAtIoNs=`calculINS ((($ItErAtIoN_N-$ItErAtIoN_0)/$NItErAtIoNs)*$NuMeRo_FeNeTrE)+$ItErAtIoN_0` $Z # Definition du nombre d'iterations a effectuer. # $Z SformatI #20110117150934____:$Z Puh # #20110117164543____:$Z Puq # $Z Puh $Z # Afin de minimiser les temps de calcul dans les phases de recherche de parametres # $Z # ci-apres ('$ItErAtIoNs' et '$J_DePaRt')... # $Z SET MiNPrOpOrTiOn=$_____MinProportion $Z set PaS_ItErAtIoNs=2 $Z # Si la proportion de points pour J=0 est inferieure ou egale a ce minimum, le nombre # $Z # d'iteration est diminue... # $Z SET NTeNtAtIvEs=0 $Z SETv NMaXTeNtAtIvEs=$UNDEF $Z set NMaXTeNtAtIvEs=`calculINS $ItErAtIoNs/$PaS_ItErAtIoNs` $Z # En fait, '$NMaXTeNtAtIvEs' ne sert pas a grand chose puisque '$ItErAtIoNs' decroit # $Z # systematiquement et que le 'while(...)' ci-apres teste le signe de '$ItErAtIoNs', mais # $Z # on ne sait jamais... # $Z set ReChErChEr=$EXIST $Z while (($ReChErChEr == $EXIST) && ($ItErAtIoNs > 0)) $Z # Recherche du nombre d'iterations '$ItErAtIoNs' afin de garantir une certaine proportion # $Z # de points appartenant a l'ensemble et ce pour J=0 (et aussi K=0)... # $Z @ NTeNtAtIvEs = $NTeNtAtIvEs + 1 $Z FilSTmpB ImAgE #20110118075620____:$Z SETv ImAgE=$UNDEF # $Z SETv ImAgE=$NOIR $Z # Le 'SETv' a ete introduit le 20110118074225 pour le bon fonctionnement de # $Z # 'v $Falias_listG SETv'. La valeur de '$ImAgE' (via le 'SETv') doit etre compatible avec # $Z # l'usage qui en sera fait ci-apres avec '$xci/comptage$X' lors du 'listG' (qui fait un # $Z # 'source' de tous les {'set','SET','SETv','if(...)',...}). # $Z $xrc/mandel.41$X \ $Z images=1 \ $Z iterations=$ItErAtIoNs \ $Z COMPOSANTE_J=0 \ $Z K=0 \ $Z exposant=1 \ $Z fenetres_depart_arrivee_identiques=VRAI \ $Z $FeNeTrE \ $Z produit_non_theorique=VRAI \ $Z eRho=2 \ $Z pTheta=2 pPhi=2 pAlpha=2 \ $Z tTheta=0 tPhi=0 tAlpha=0 \ $Z visualiser_appartenance=VRAI \ $Z R=$ImAgE \ $Z chiffres=0 \ $Z $formatI $Z SET PrOpOrTiOn=`$xci/comptage$X A=$ImAgE origine=$NOIR_PLANCHER proportion=VRAI Prme=VRAI` $Z if ($NTeNtAtIvEs < $NMaXTeNtAtIvEs) then $Z if (`$xcg/IFLE.01$X n1=$PrOpOrTiOn n2=$MiNPrOpOrTiOn` == $EXIST) then $Z @ ItErAtIoNs = $ItErAtIoNs - $PaS_ItErAtIoNs $Z else $Z set ReChErChEr=$NEXIST $Z # Le nombre d'iterations est suffisant, on arrete... # $Z endif $Z else $Z set ReChErChEr=$NEXIST $Z # On a fait trop de tentatives, on arrete... # $Z endif $Z FilSTmpE ImAgE $Z end $Z if ($ItErAtIoNs <= 0) then $Z set ItErAtIoNs=1 $Z else $Z endif $Z set J_DePaRt=2 $Z set PaS_J=`calculNS $J_DePaRt/2` $Z SET NTeNtAtIvEs=0 $Z set NMaXTeNtAtIvEs=30 $Z # Etant donne que l'on reduit le pas de 'J' par division par 2, il apparait que 2^10=1024 # $Z # est trop faible et qu'il faut au moins 20... # $Z set ReChErChEr=$EXIST $Z while ($ReChErChEr == $EXIST) $Z # Recherche du 'J' de depart '$J_DePaRt' afin de garantir qu'il y ait pour ce 'J' tres peu # $Z # de points appartenant a l'ensemble pour le nombre d'iterations '$ItErAtIoNs' determine # $Z # dans le 'while(...)' precedent... # $Z @ NTeNtAtIvEs = $NTeNtAtIvEs + 1 $Z FilSTmpB ImAgE $Z $xrc/mandel.41$X \ $Z images=1 \ $Z iterations=$ItErAtIoNs \ $Z COMPOSANTE_J=$J_DePaRt \ $Z K=0 \ $Z exposant=1 \ $Z fenetres_depart_arrivee_identiques=VRAI \ $Z $FeNeTrE \ $Z produit_non_theorique=VRAI \ $Z eRho=2 \ $Z pTheta=2 pPhi=2 pAlpha=2 \ $Z tTheta=0 tPhi=0 tAlpha=0 \ $Z visualiser_appartenance=VRAI \ $Z R=$ImAgE \ $Z chiffres=0 \ $Z $formatI $Z SET NoMbRe=`$xci/comptage$X A=$ImAgE origine=$NOIR_PLANCHER Prme=VRAI` #20110117155124____:$Z if ($NoMbRe == 0) then # $Z # Il faut reduire le 'J' de depart... # #20110117155124____:$Z else # $Z # On a trouve le 'J' de depart... # #20110117155124____:$Z endif # $Z if ($NTeNtAtIvEs < $NMaXTeNtAtIvEs) then $Z if ($NoMbRe == 0) then $Z set J_DePaRt=`calculNS $J_DePaRt-$PaS_J` $Z # Il faut reduire le 'J' de depart... # $Z else $Z set J_DePaRt=`calculNS $J_DePaRt+$PaS_J` $Z # On a trouve le 'J' de depart... # $Z endif $Z $Z set PaS_J=`calculNS $PaS_J/2` $Z else $Z set ReChErChEr=$NEXIST $Z # On a fait trop de tentatives, on arrete... # $Z endif $Z FilSTmpE ImAgE $Z end $Z RformatI $Z FilSTmpB CoMpOsAnTe_J $Z $xci/valeurs_inte$X p=$cPremiere d=$cDerniere \ $Z vD=$J_DePaRt vA=0 \ $Z cubique=FAUX \ $Z >> $CoMpOsAnTe_J $Z FilSTmpB _____ImageT1 $Z $xrc/mandel.41$X \ $Z images=$Nimages \ $Z iterations=$ItErAtIoNs \ $Z COMPOSANTE_J=$CoMpOsAnTe_J \ $Z K=0 \ $Z exposant=1 \ $Z fenetres_depart_arrivee_identiques=VRAI \ $Z $FeNeTrE \ $Z produit_non_theorique=VRAI \ $Z eRho=2 \ $Z pTheta=2 pPhi=2 pAlpha=2 \ $Z tTheta=0 tPhi=0 tAlpha=0 \ $Z visualiser_appartenance=VRAI \ $Z R=$_____ImageT1. \ $Z $formatI $Z FilSTmpE CoMpOsAnTe_J $Z _____include(_____xiirc/.MANE.41.1._____U) $Z _____include(_____xiirc/.MANE.41.2._____U) $Z _____include(_____xiirc/.MANE.41.3._____U) $Z set _____ImageTT=$_____ImageTo $Z set _____RotationX=0 $Z set _____imagesR=$__________imagesR.$NuMeRo_CoUrAnT $Z SET _____Detruire_=$EXIST $Z SET _____Detruire_1=$EXIST $Z SET _____Detruire_2=$NEXIST $Z SET _____Detruire_2_1=$EXIST $Z _____include(_____xiirc/.MANE.41.4._____U) $Z execRVB $MV $_____imagesR.2%s $_____imagesR%s $Z FilSTmpE _____ImageT1 $Z end $Z FilSTmpE FLiStE_FeNeTrEs