FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Un autre ensemble de fractales par IFS Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Un autre ensemble de fractales par IFS Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Un autre ensemble de fractales par IFS Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Un autre ensemble de fractales par IFS Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Un autre ensemble de fractales par IFS Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Un autre ensemble de fractales par IFS Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Un autre ensemble de fractales par IFS Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Un autre ensemble de fractales par IFS Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Un autre ensemble de fractales par IFS Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Un autre ensemble de fractales par IFS Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Un autre ensemble de fractales par IFS Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Un autre ensemble de fractales par IFS Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Un autre ensemble de fractales par IFS Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Un autre ensemble de fractales par IFS Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Un autre ensemble de fractales par IFS Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
LEGO Icons 10331 – Le martin-pêcheur
Voir le deal
35 €

 

 Un autre ensemble de fractales par IFS

Aller en bas 
2 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Un autre ensemble de fractales par IFS Empty
MessageSujet: Un autre ensemble de fractales par IFS   Un autre ensemble de fractales par IFS EmptyMar 22 Fév 2022 - 1:18

Comme d'habitude, tout est dans le code.
Régalez-vous!

Code:

rem ============================================================================
rem                    Fractal par IFS
rem ============================================================================
rem Un système de fonctions itérées est composé d’un ensemble de transformations,
rem w1, w2...wn.
rem Chacune de ces transformations peut être à peu près n’importe quelle
rem transformation affine normale.
rem La seule restriction est qu’il doit s’agir d’une transformation contractante.
rem Cela signifie que si vous appliquez la transformation, cela rapproche deux points.
rem Les transformations peuvent être écrites en notation matricielle comme suit :
rem
rem       | x |   | a  b | | x |   | e |
rem     w |   | = |      | |   | + |   |
rem       | y |   | c  d | | y |   | f |
rem
rem Chacune de ces transformations w1,w2...wn a une valeur p1,p2...pn qui
rem représente la probabilité qu’une transformation particulière soit choisie.
rem La somme de p1,p2...pn doit être égale à 1.
rem ============================================================================
rem Les équations d’un IFS sont :
rem        _______________________________
rem       |                               |
rem       | x(n+1) = a*x(n) + b*y(n) + e  |
rem       | y(n+1) = c*x(n) + d*y(n) + f  |
rem       |_______________________________|

rem Tout le problème consiste à déterminer les 6 coefficients a, b, c, d, e, f
rem et la probabilité pour chaque transformation
rem ============================================================================
dim a,b,c,d,e,f,p
dim x,y,xn,yn,iter,maxiter,i
label choix
maxiter = 50000 : ' modifier cette variable selon la vitesse de votre machine
width 0,1000 : height 0,700
picture 10 : width 10,600 : height 10,520 : 2d_target_is 10  
container_option 20 : top 20,20 : left 20,width_client(10)+20 : height 20,500 : width 20,300
font_name 20,"arial black" : caption 20,"Faites votre choix"
option  30 : caption 30,"Fougère I"
option  40 : caption 40,"Fougère II"
option  50 : caption 50,"Arbre I"
option  60 : caption 60,"Arbre II"
option  70 : caption 70,"Spirale"
option  80 : caption 80,"Type Mandelbrot"
option  90 : caption 90,"Arbre III"
option 100 : caption 100,"Rameau"
option 110 : caption 110,"Dragon"
option 120 : caption 120,"Christmas Tree"
option 130 : caption 130,"Fougère III"
option 140 : caption 140,"Fougère IV"
option 150 : caption 150,"Triangle de Sierpinski"
option 160 : caption 160,"Fougère V"
option 170 : caption 170,"Fougère VI"
option 180 : caption 180,"Fougère VII"
option 190 : caption 190,"Centipede"
option 200 : caption 200,"Levy C Curve"
option 210 : caption 210,"Sierpinski Carpet"
option 220 : caption 220,"Hexagone de Sierpinski"
option 230 : caption 230,"Test I"
option 240 : caption 240,"Test II"
option 250 : caption 250,"Une autre fougère"

for i = 30 to 250 step 10
    parent i,20 : top i,2*i-40 : left i,10 : width i,230 : on_click i,choix
next i
button 900 : top 900,height(0)-80 : left 900,width(10)+80 : caption 900,"Quitter"
on_click 900,choix
alpha 999 : top 999,height(0)-80 : left 999,20 : font_bold 999
font_name 999,"Arial" : font_color 999,255,0,0 : font_size 999,12
caption 999,"Papydall vous propose des Fractales tracées par IFS"

end
rem ============================================================================
Choix:
    select number_click
        case 30  : Fougere_I(250,520,50,50)
        case 40  : Fougere_II(250,520,50,50)
        case 50  : Arbre_I(300,400,180,180)
        case 60  : Arbre_II(300,300,60,60)
        case 70  : Spirale(300,450,30,40)
        case 80  : Mandelbrot_Like(250,60,380,420)
        case 90  : Arbre_III(10,500,500,500)
        case 100 : Rameau(300,320,120,120)
        case 110 : Dragon(200,300,300,300)
        case 120 : Christmas_Tree(100,500,450,450)
        case 130 : Fougere_III(300,450,120,60)
        case 140 : Fougere_IV(250,500,40,60)
        case 150 : Triangle_Sierpinski(50,450,500,500)
        case 160 : Fougere_V(250,500,80,70)
        case 170 : Fougere_VI(250,500,80,80)
        case 180 : Fougere_VII(300,450,100,60)
        case 190 : Centipede(300,450,40,40)
        case 200 : Levy_C_Curve(200,300,200,200)
        case 210 : Sierpinski_Carpet(100,650,400,400)
        case 220 : Sierpinski_Hexagon(100,480,450,450)
        case 230 : Test_I(100,400,450,450)
        case 240 : Test_II(20,550,600,600)
        case 250 : Une_Autre_Fougere(10,500,800,800)
        
        case 900 : terminate
    end_select
return
rem ============================================================================
SUB Fougere_I(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Fougère I : Tracé en cours ... "
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.1
           a = 0.0 : b = 0.0 : c = 0.0 : d = 0.16 : e = 0.0 : f = 0.0 : ' Tige
        else
           if (p >= 0.1) and (p < 0.18)
              a = 0.2 : b = -0.26 : c = 0.23 : d = 0.22 : e = 0.0 : f = 1.6 : ' Grandes folioles de gauche
           else
              if (p >= 0.18) and (p < 0.26)
                 a = -0.15 : b = 0.28 : c = 0.26 : d = 0.24 : e = 0.0 : f = 0.44 : ' Grandes folioles de droite
              else
                 a = 0.75 : b = 0.04 : c = -0.04 : d = 0.85 : e = 0.0 : f = 1.6  : ' Petites folioles
             end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn
    next iter
    caption 0,"Terminé"
    active 20
END_SUB
rem ============================================================================
SUB Fougere_II(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Fougère II : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.01
           a = 0.0 : b = 0.0 : c = 0.0 : d = 0.16 : e = 0.0 : f = 0.0 : ' Tige
        else
           if p < 0.08
              a = 0.2 : b = -0.26 : c = 0.23 : d = 0.22 : e = 0.0 : f = 1.6 : ' Grandes folioles de gauche
           else
              if p < 0.15
                 a = -0.15 : b = 0.28 : c = 0.26 : d = 0.24 : e = 0.0 : f = 0.44 : ' Grandes folioles de droite
              else
                 a = 0.85 : b = 0.04 : c = -0.04 : d = 0.85 : e = 0.0 : f = 1.6 : ' Petites folioles
             end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 0  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn
    next iter
    caption 0,"Terminé"
    active 20
END_SUB
rem ============================================================================
' Cette fougère s'appelle : la fougère Cyclosorus
SUB Fougere_III(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Fougère III : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.02
           a = 0.0 : b = 0.0 : c = 0.0 : d = 0.25 : e = 0.0 : f = -0.4 : ' Tige
        else
           if p < 0.09
              a = 0.035 : b = -0.2 : c = 0.16 : d = 0.04 : e = -0.09 : f = 0.02 : ' Grandes folioles de gauche
           else
              if p < 0.16
                 a = -0.04 : b = 0.2 : c = 0.16 : d = 0.04 : e = 0.083 : f = 0.12 : ' Grandes folioles de droite
              else
                 a = 0.95 : b = 0.005 : c = -0.005 : d = 0.93 : e = -0.002 : f = 0.5 : ' Petites folioles
             end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn
    next iter
    caption 0,"Terminé"
    active 20
END_SUB
rem ============================================================================
SUB Fougere_IV(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Fougère IV : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.04
           a = 0.0 : b = 0.0 : c = 0.0 : d = 0.16 : e = 0.0 : f = 0.04
        else
           if p < 0.08
              a = 0.2 : b = -0.29 : c = 0.23 : d = 0.22 : e = 0 : f = 1.6
           else
              if p < 0.16
                 a = -0.2 : b = 0.28 : c = 0.26 : d = 0.25 : e = 0 : f = 0.44
              else
                 a = 0.7 : b = 0.035 : c = -0.04 : d = 0.8 : e = 0 : f = 1.6
             end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn
    next iter
    caption 0,"Terminé"
    active 20
END_SUB
rem ============================================================================
SUB Fougere_V(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Fougère V : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.02
           a = 0.0 : b = 0.0 : c = 0.0 : d = 0.25 : e = 0.0 : f = -0.4
        else
           if p < 0.09
              a = 0.035 : b = -0.2 : c = 0.16 : d = 0.04 : e = -0.09 : f = 0.02
           else
              if p < 0.16
                 a = -0.04 : b = 0.2 : c = 0.16 : d = 0.04 : e = 0.083 : f = 0.12
              else
                 a = 0.95 : b = 0.005 : c = -0.005 : d = 0.93 : e = -0.002 : f = 0.5
             end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn
    next iter
    caption 0,"Terminé"
    active 20
END_SUB
rem ============================================================================
rem ============================================================================
' Culcitia Dubia
SUB Fougere_VI(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Fougère VI : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.02
           a = 0.0 : b = 0.0 : c = 0.0 : d = 0.25 : e = 0.0 : f = -0.14
        else
           if p < 0.09
              a = 0.09 : b = -0.28 : c = 0.3 : d = 0.11 : e = 0.0 : f = 0.6
           else
              if p < 0.16
                 a = -0.09 : b = 0.28 : c = 0.3 : d = 0.09 : e = 0.0 : f = 0.7
              else
                 a = 0.85 : b = 0.02 : c = -0.02 : d = 0.83 : e = 0.0 : f = 1
             end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn
    next iter
    caption 0,"Terminé"
    active 20
END_SUB
rem ============================================================================
' Fishbone Fern
SUB Fougere_VII(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Fougère VII : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.02
           a = 0.0 : b = 0.0 : c = 0.0 : d = 0.25 : e = 0.0 : f = -0.4
        else
           if p < 0.09
              a = 0.0035 : b = -0.11 : c = 0.27 : d = 0.01 : e = -0.05 : f = 0.005
           else
              if p < 0.16
                 a = -0.04 : b = 0.11 : c = 0.27 : d = 0.01 : e = 0.047 : f = 0.06
              else
                 a = 0.95 : b = 0.002 : c = -0.002 : d = 0.93 : e = -0.002 : f = 0.5
             end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn
    next iter
    caption 0,"Terminé"
    active 20
END_SUB
rem ============================================================================
SUB Arbre_I(offsetX,offsetY,scaleX,scaleY)
    dim_local r,s,theta,phi,e,f
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Arbre I : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.1
           r = 0.05 : s = 0.60 : theta = 0.0 : phi = 0.0 : e = 0.0 : f = 0.0
        else
           if (p >= 0.1) and (p < 0.2)
               r = 0.05 : s = -0.5 : theta = 0.0 : phi = 0.0 : e = 0.0 : f = 1.0
           else
              if (p >= 0.2) and (p < 0.4)
                  r = 0.6 : s = 0.5 : theta = 0.698 : phi = 0.698 : e = 0.0 : f = 0.6
              else
                 if (p >= 0.4) and (p < 0.6)
                     r = 0.5 : s = 0.45 : theta = 0.349 : phi = 0.3492 : e = 0.0 : f = 1.1
                 else
                    if (p >= 0.6) and (p < 0.8)
                       r = 0.5 : s = 0.55 : theta = -0.524 : phi = -0.524 : e = 0.0 : f = 1.0
                    else
                       r = 0.55 : s = 0.4 : theta = -0.698 : phi = -0.698 : e = 0.0 : f = 0.7
                    end_if
                 end_if
              end_if
           end_if
        end_if
        xn = r*cos(theta)*x - s*sin(phi)*y + e
        yn = r*sin(theta)*x + s*cos(phi)*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if      
        x = xn : y = yn
    next iter
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Arbre_II(offsetX,offsetY,scaleX,scaleY)    
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Arbre II : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.25
           a = 0.14 : b = 0.01 : c = 0.0 : d = 0.51 : e = -0.08 : f = -1.31
        else
           if p < 0.5
              a = 0.43 : b = 0.52 : c = -0.45 : d = 0.50 : e = 1.49 : f = -0.75
           else
              if p < 0.75
                 a = 0.45 : b = -0.49 : c = 0.47 : d = 0.47 : e = -1.62 : f = -0.74
              else
                 a = 0.49 : b = 0.0 : c = 0.0 : d = 0.51 : e = 0.02 : f = 1.62                    
              end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Spirale(offsetX,offsetY,scaleX,scaleY)    
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Spirale : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p <= 0.90
           a = 0.787879 : b = -0.424242 : c = 0.242424 : d = 0.859848 : e = 1.758647 : f = 1.408065
        else
            if p <= 0.95
               a = -0.121212 : b = 0.257576 : c = 0.151515 : d = 0.053030 : e = -6.721654 : f = 1.377236
            else
               a = 0.181818 : b = -0.136364 : c = 0.090909 : d = 0.181818 : e = 6.086107 : f = 1.568035
            end_if
        end_if      
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Mandelbrot_Like(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Type Mandelbrot : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p <= 0.5
           a = 0.202 : b = -0.805 : c = -0.689 : d = -0.342 : e = -0.373 : f = -0.653
        else
           a = 0.138 : b = 0.665 : c = -0.502 : d = -0.222 : e = 0.660 : f = -0.277
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Arbre_III(offsetX,offsetY,scaleX,scaleY)    
    inactive 20
    color 10,0,0,0 : 2d_pen_color 128,128,128
    caption 0,"Arbre III : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.2
           a = 0.195 : b = -0.488 : c = 0.344 : d = 0.443 : e = 0.4431 : f = 0.2452
        else
           if p < 0.4
              a = 0.462 : b = 0.414 : c = -0.252 : d = 0.361 : e = 0.2511 : f = 0.5692
           else
              if p < 0.6
                 a = -0.637 : b = 0.0 : c = 0.0 : d = 0.501 : e = 0.8562 : f = 0.2512
              else
                 if p < 0.8
                    a = -0.035 : b = 0.07 : c = -0.469 : d = 0.022 : e = 0.4884 : f = 0.5069
                 else
                    a = -0.058 : b = -0.07 : c = 0.453 : d = -0.111 : e = 0.5976 : f = 0.0969
                 end_if
              end_if
           end_if
        end_if        
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Rameau(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Rameau : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if (p >= 0) and (p <= .36)
           xn =  .490662 * x + .357636 * y + .992214
           yn = -.367636 * x + .490662 * y - .032411
        else
           if (p >= .37) and (p <= .99)
              xn = -.1878  * x - .893171 * y - .283457
              yn = -.67173 * x + .196847 * y + .612409
           else
              xn = -.22345  * x - .170637 * y + .900462
              yn =  .129271 * x + .118929 * y - .778578
           end_if
       end_if
       if iter > 20  : ' Pour éviter les premiers point parasites
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
       end_if
       x = xn : y = yn  : display
    next iter
    caption 0,"Terminé"
    active 20
END_SUB
rem ============================================================================
SUB Dragon(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0
    caption 0,"Dragon : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p <= 0.5
           a = 0.5 : b = -0.5 : c = 0.5 : d = 0.5 : e = 0.0 : f = 0.0
           2d_pen_color 255,0,0
        else
           a = -0.5 : b = -0.5 : c = 0.5 : d = -0.5 : e = 1.0 : f = 0.0
           2d_pen_color 255,255,0
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Christmas_Tree(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Christmas Tree : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 1/3
           a = 0.0 : b = -0.5 : c = 0.5 : d = 0.0 : e = 0.5 : f = 0.0
        else
           if p < 2/3
              a = 0.0 : b = 0.5 : c = -0.5 : d = 0.0 : e = 0.5 : f = 0.5
           else
              a = 0.5 : b = 0.0 : c = 0.0 : d = 0.5 : e = 0.25 : f = 0.5
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Triangle_Sierpinski(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Triangle de Sierpinski : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 1/3
           a = 0.5 : b = 0 : c = 0 : d = 0.5 : e = 0 : f = 0
           2d_pen_color 255,0,0
        else
           if p < 2/3
              a = 0.5 : b = 0 : c = 0 : d = 0.5 : e = 0.5 : f = 0
              2d_pen_color 0,255,0
           else
              a = 0.5 : b = 0.0 : c = 0.0 : d = 0.5 : e = 0.25 : f = 0.433
              2d_pen_color 0,0,255
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Centipede(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 255,255,0
    caption 0,"Centipede : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.787473
           a = 0.824074 : b = 0.281482 : c = -0.212346 : d = 0.864198 : e = -1.882290 : f = -0.110607          
        else
           a = 0.088272 : b = 0.520988 : c = -0.463889 : d = -0.377778 : e = 0.785360 : f = 8.095795
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20      
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if      
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Levy_C_Curve(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0
    caption 0,"Levy_C_Curce : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.5
           a = 0.5 : b = -0.5 : c = 0.5 : d = 0.5 : e = 0.0 : f = 0.0
           2d_pen_color 255,0,0          
        else
           a = 0.5 : b = 0.5 : c = -0.5 : d = 0.5 : e = 0.5 : f = 0.5
           2d_pen_color 255,255,0
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20        
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if        
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Sierpinski_Carpet(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 255,255,0
    caption 0,"Sierpinski Carpet : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.125
           a = 0.333 : b = 0.0 : c = 0.0 : d = 0.333 : e = 0.0 : f = 0.999          
        else
           if p < 0.25
              a = 0.333 : b = 0.0 : c = 0.0 : d = 0.333 : e = 0.333 : f = 0.999
           else
              if p < 0.375
                 a = 0.333 : b = 0.0 : c = 0.0 : d = 0.333 : e = 0.666 : f = 0.999
              else
                  if p < 0.5
                     a = 0.333 : b = 0.0 : c = 0.0 : d = 0.333 : e = 0.0 : f = 0.666
                  else
                     if p < 0.625
                        a = 0.333 : b = 0.0 : c = 0.0 : d = 0.33 : e = 0.666 : f = 0.666
                     else
                        if p < 0.75
                           a = 0.333 : b = 0.0 : c = 0.0 : d = 0.333 : e = 0.00 : f = 0.333
                        else
                           if p < 0.875
                              a = 0.333 : b = 0.0 : c = 0.0 : d = 0.333 : e = 0.333 : f = 0.333
                           else
                              a = 0.333 : b = 0.0 : c = 0.0 : d = 0.333 : e = 0.666 : f = 0.333
                           end_if
                        end_if
                     end_if
                  end_if
              end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20      
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if      
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Sierpinski_Hexagon(offsetX,offsetY,scaleX,scaleY)
    dim_local p1
    inactive 20
    color 10,0,0,0
    caption 0,"Hexagone de Sierpinski : Tracé en cours ..."
    p1 = 0.167
    for iter = 1 to maxiter
        p = rnd(1)
        if p < p1
           a = 0.33 : b = 0.0 : c = 0.0 : d = 0.33 : e = 0.046 : f = 0.131
           2d_pen_color 255,255,0          
        else
           if p < 2*p1
              a = 0.33 : b = 0.0 : c = 0.0 : d = 0.33 : e = 0.327 : f = -0.006
              2d_pen_color 255,0,0
           else
              if p < 3*p1
                 a = 0.33 : b = 0.0 : c = 0.0 : d = 0.33 : e = 0.044 : f = 0.487
                 2d_pen_color 0,255,0
              else
                  if p < 4*p1
                     a = 0.33 : b = 0.0 : c = 0.0 : d = 0.33 : e = 0.329 : f = 0.679
                     2d_pen_color 0,0,255
                  else
                     if p < 5*p1
                        a = 0.330 : b = 0.0 : c = 0.0 : d = 0.33 : e = 0.617 : f = 0.521
                        2d_pen_color 0,255,255
                     else
                        a = 0.33 : b = 0.0 : c = 0.0 : d = 0.33 : e = 0.621 : f = 0.164                        
                        2d_pen_color 255,0,255
                     end_if
                  end_if
              end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20      
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if      
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Test_I(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Test I : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 1/3
           a = 0.354 : b = 0.354 : c = -0.354 : d = 0.354 : e = -0.032 : f = 0.241
           2d_pen_color 255,0,0
        else
           if p < 2/3
              a = 0.5 : b = 0 : c = 0 : d = 0.5 : e = 0.247 : f = 0.374
              2d_pen_color 0,255,0
           else
              a = -0.354 : b = -0.354 : c = -0.354 : d = 0.354 : e = 1.027 : f = 0.243
              2d_pen_color 0,0,255
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Test_II(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 0,128,0
    caption 0,"Test II : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.24
           a = 0.158 : b = 0.375 : c = -0.423 : d = 0.164 : e = 0.106 : f = 0.375
           2d_pen_color 255,0,0        
        else
           a = 0.648 : b = 0.366 : c = -0.396 : d = 0.68 : e = 0.024 : f = 0.432
           2d_pen_color 0,0,255
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20
           2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn  
    next iter        
    caption 0,"terminé"
    active 20
END_SUB
rem ============================================================================
SUB Une_Autre_Fougere(offsetX,offsetY,scaleX,scaleY)
    inactive 20
    color 10,0,0,0 : 2d_pen_color 200,100,10
    caption 0,"Une autre Fougère : Tracé en cours ..."
    for iter = 1 to maxiter
        p = rnd(1)
        if p < 0.010
           a = 0.0 : b = -0.030 : c = 0.0 : d = 0.236 : e = 0.401 : f = 0.033
        else
           if p < 0.131
              a = -0.166 : b = -0.324 : c = -0.275 : d = 0.14 : e = 0.475 : f = 0.196
           else
              if p < 0.266
                 a = 0.202 : b = 0.3 : c = -0.287 : d = 0.192 : e = 0.296 : f = 0.225
              else
                 a = 0.793 : b = -0.05 : c = 0.054 : d = 0.855 : e = 0.076 : f = 0.067
             end_if
           end_if
        end_if
        xn = a*x + b*y + e
        yn = c*x + d*y + f
        if iter > 20  : ' Pour éviter les premiers point parasites
            2d_point offsetx + xn * scalex, offsety - yn * scaley : display
        end_if
        x = xn : y = yn
    next iter
    caption 0,"Terminé"
    active 20
END_SUB
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

Un autre ensemble de fractales par IFS Empty
MessageSujet: Re: Un autre ensemble de fractales par IFS   Un autre ensemble de fractales par IFS EmptyMar 22 Fév 2022 - 9:18

Merci encore papydall Smile

L'exemple "Type Mandelbrot" évoque un peu les figures fractales tirées de fonctions exponentielles ou trigonométriques alors qu'ici il n'y a que des fonctions linéaires !

En ce moment je me concentre sur un travail concernant la fonction de Lambert dont j'ai déjà donné une idée sous forme de fractale :  

https://www.unilim.fr/pages_perso/jean.debord/fbcroco/fractales_10.pdf

Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
 
Un autre ensemble de fractales par IFS
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» L'ensemble de Julia
» La beauté des fractales
» Animation sur l'ensemble de Julia
» Orbites de l’ensemble de Mandelbrot
» L'ensemble de Mandelbrot projeté sur une sphère

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: