tite fractale

tests_complexes.py

télécharger

Attention ! Cet interpréteur n’est pas totalement compatible avec Python3.

Theme:

 

Version inerte :

import tkinter
from math import sqrt, acos, asin

# Constantes:
w, h = 400, 400
x_min, x_max = -1, 1
y_min, y_max = -1, 1
finesse = 20
i = 1j  # 1j est la notation pour i en Python

# Vérification divisibilité et divers calculs:
assert(not (w % finesse) and not (h % finesse))
w_cell, h_cell = w//finesse, h//finesse
x_step, y_step = (x_max - x_min)/finesse, (y_max - y_min)/finesse
x_nb_cells, y_nb_cells = w//w_cell, h//h_cell

# Conversion cellule -> nombre complexe:
def cell_to_complex(x_cell, y_cell):
    a = x_min + x_cell * x_step
    b = y_min + y_cell * y_step
    return a + b * 1j

# Conversion triplet d’entiers -> code couleur hexa:
def RVB_to_hexa(r, v, b):
    return '#%02x%02x%02x' % (r, v, b)

# Mise en place de la fenêtre graphique:
root = tkinter.Tk()
root.title('Tester ses complexes')
canvas = tkinter.Canvas(root, width=w, height=h)
canvas.pack()

def draw_cell(x_cell, y_cell, color):
    x = x_cell * w_cell
    y = h - y_cell * h_cell  # in canvas, y=0 is at the top
    canvas.create_rectangle((x, y, x + w_cell, y + h_cell), width=0, fill=color)

def nice_exit(event=None):
    root.destroy()
    exit()

root.bind('q', nice_exit)

# Quelques raccourcis mathématiques:
def pr(z): return z.real
def pi(z): return z.imag
def m(z): return 0  # À modifier !

# Quelques tests:
def test1(z):
    if pr(z) == pi(z):
        return True
    else:
        return False

def test2(z):
    if pr(z) == -pi(z):
        return True
    # Par défaut, Python retourne None, considéré comme faux.

def test3(z):
    if -pi(z) - 0.01 < pr(z) < -pi(z) + 0.01:
        return True

def test4(z):
    a = 0.5 - 0.5*i
    if pr(z-a)**2 + pi(z-a)**2 < 1:
        return True

def test5(z):
    if sqrt(pr(z)**2 + pi(z)**2) >= 0.5 and pr(z)**2 + pi(z)**2 <= 1:
        return True

# Parcours des cellules:
for y_cell in range(0, y_nb_cells):
    print("Traitement ligne", y_cell + 1, "...")
    for x_cell in range(0, x_nb_cells):
        z = cell_to_complex(x_cell, y_cell)
        if test1(z):
            color = "white"
        else:
            color = "black"
        draw_cell(x_cell, y_cell, color)

root.mainloop()









Page générée le 27/05/2021, 09h53'27" (page virtuelle).
historique global