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