Deutsch   English   Français   

15. Fraktales

 

 

TU APPRENDS ICI...

 

à t’orienter dans des codes de programme plus complexes et à effectuer certaines adaptations. Les formules utilisées dans les exemples suivants ont été inventées par des mathématiciens célèbres.

 

 

EXEMPLES

 

Les fractales sont des images générées par ordinateur qui présentent une autosimilarité, c’est-à-dire que certaines parties de l’image sont des copies réduites de l’image entière.
Le terme fractal a été introduit en 1975 par le mathématicien Benoît Mandelbrot et provient du latin fractus (« brisé »), en référence à la dimension fractale.

Dans la géométrie traditionnelle :

  • une ligne est unidimensionnelle,
  • une surface est bidimensionnelle,
  • un espace est tridimensionnel.

Les images fractales possèdent souvent une dimension non entière.
Les fractales les plus intéressantes sont obtenues à partir de transformations non linéaires. Ces fractales sont généralement calculées de manière itérative et utilisent souvent des nombres complexes.

Tu trouveras ci-dessous le code complet de quelques fractales célèbres, sans commentaire supplémentaire. Même sans étudier le code en détail, tu peux admirer ces belles images et créer des fractales avec d’autres couleurs.

Example 1: Fougère

Programme:     

# Farn.py

from gpanel import *
import random

def farn():
    z = 0
    n = 0
    while n < nbPoints:
        r = random.random()
        c = "black"
        if r < 0.01:
            c = "yellow"
            z = f(z, 0, 0, 0, 0.16, 0, 0) # Stiel
        elif r < 0.86:
            c = "lime"
            z = f(z, 0.85, 0.04, -0.04, 0.85, 0, 1.60) # symmetry
        elif r > 0.86 and r < 0.93:
            c = "red"
            z = f(z, 0.20, -0.26, 0.23, 0.22, 0, 1.60)  # left leaves
        elif r > 0.93:
            c = "blue"
            z = f(z, -0.15, 0.28, 0.26, 0.24, 0, 1.44) # right leaves
        setColor(c)
        point(z)
        n += 1

def f(z, a, b, c, d, e, f):
    re = a * z.real + b * z.imag + e
    im = c * z.real + d * z.imag + f
    return complex(re, im)

makeGPanel(-3.5, 3.5, 0, 10)
bgColor("black")
nbPoints = 40000
farn()
Copy to clipboard


Example 2
: Julia

Programme:      

# Julia.py

from gpanel import *

def putPixel(z, c):
  setColor(c)
  point(z.real, z.imag)

maxIter = 100
maxNorm = 50.0
step = 0.005
range = 2.0
makeGPanel(-range, range, -range, range)
c = complex(-0.5, -0.5)
z0 = complex(-range, -range)

while z0.imag < range: # outer loop in imag direction
    z0 = complex(-range, z0.imag + step)
    while z0.real < range: # inner loop in real direction
        z0 = z0 + step
        z = z0;
        it = 0
        while (z.real * z.real + z.imag * z.imag) < maxNorm and it < maxIter:
            z = z * z + c
            it = it + 1
        if it < 3:
            putPixel(z0, "darkblue")
        elif it < 5:
            putPixel(z0, "lime")
        elif it < 8:
            putPixel(z0, "red")
        elif it < 12:
            putPixel(z0, "blue")
        elif it < 100:
             putPixel(z0, "yellow")
        else:
            putPixel(z0, "black")
Copy to clipboard

 

Example 3: Mandelbrot


Programme:      

#Mandelbrot.py

from gpanel import *
    
def mandelbrot(c):
    z = 0
    for it in range(maxIterations):
        z = z*z + c
        if abs(z) > R: # diverging
            return it
    return maxIterations

maxIterations = 50
R = 2
xmin = -2
xmax = 1
xstep = 0.003
ymin = -1.5
ymax = 1.5
ystep = 0.003

makeGPanel(xmin, xmax, ymin, ymax)
y = ymin
while y <= ymax:
    x = xmin
    while x <= xmax:
        c = x + y*1j
        itCount = mandelbrot(c)
        if itCount == maxIterations: # inside Mandelbrot set
            setColor("yellow")
        else: # outside Mandelbrot set
           setColor((30 * itCount) % 256, 
                      (4 * itCount) % 256, 
                      (255 - (30 * itCount)) % 256)
        point(c)
        x += xstep
    y += ystep
Copy to clipboard

 

 

À FAIRE PAR TOI-MÊME

 

1)


Dessine des fractales de Mandelbrot avec différentes couleurs.