-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFibonacci-number-draw-matplotlib.py
45 lines (39 loc) · 1.85 KB
/
Fibonacci-number-draw-matplotlib.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import matplotlib.pyplot as plt # A matplotlib könyvtár importálása
import math # Matematikai számításokhoz
# Számjegyekhez tartozó irányok
iranyok = {
"2": 270, "4": 180, "6": 0, "8": 90,
"1": 225, "3": 315, "7": 135, "9": 45
}
# Kezdeti Fibonacci-számok
fib1, fib2 = 0, 1
x_koord, y_koord = [0], [0] # Kezdő koordináták
jelenlegi_x, jelenlegi_y = 0, 0 # Aktuális pozíció
lepeshossz = 10 # Lépéshossz minden irányban
# Felhasználói bemenet
max_szam = int(input("Adja meg, meddig generáljam a Fibonacci-számokat: ")) # Határ bekérése
# Rajzterület inicializálása
abra, tengely = plt.subplots()
tengely.set_aspect('equal') # Egyenlő arányok
plt.axis('off') # A tengelyek kikapcsolása
(vonal,) = tengely.plot([], [], 'bo-', lw=1, markersize=2) # Üres vonal
# Animáció kézi vezérlése
for _ in range(max_szam):
print(f"Generálás folyamatban: Fibonacci szám: {fib1}") # Konzol állapotjelentés
for karakter in str(fib1): # Minden számjegy feldolgozása
irany = iranyok.get(karakter, None) # Irány lekérése
if irany is not None: # Ha van irány
dx = lepeshossz * round(math.cos(math.radians(irany)), 2)
dy = lepeshossz * round(math.sin(math.radians(irany)), 2)
jelenlegi_x += dx
jelenlegi_y += dy
x_koord.append(jelenlegi_x) # Új x koordináta hozzáadása
y_koord.append(jelenlegi_y) # Új y koordináta hozzáadása
fib1, fib2 = fib2, fib1 + fib2 # Fibonacci-számok frissítése
# A vonal frissítése
vonal.set_data(x_koord, y_koord)
# Tengelyek dinamikus frissítése
tengely.set_xlim(min(x_koord) - 10, max(x_koord) + 10)
tengely.set_ylim(min(y_koord) - 10, max(y_koord) + 10)
plt.pause(0.01) # Kis szünet a valós idejű frissítéshez
plt.show() # Az ábra végleges megjelenítése