π¨ ΠΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΠΊΡΠ°Π»Ρ Π² ΠΠΈΡΠΎΠ½Π΅: ΠΈΠ·ΡΡΠ°Π΅ΠΌ ΠΈ ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ·ΠΎΡΡ
ΠΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΠΊΡΠ°Π»Ρ Π² ΠΏΠΈΡΠΎΠ½Π΅?
ΠΠ»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΊΡΠ°Π»ΠΎΠ² Π² ΠΏΠΈΡΠΎΠ½Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ turtle. ΠΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΠΊΡΠ°Π» "ΠΊΡΠΈΠ²Π°Ρ ΠΠΎΡ Π°":
import turtle
def koch_curve(t, length, depth):
if depth == 0:
t.forward(length)
else:
koch_curve(t, length/3, depth-1)
t.left(60)
koch_curve(t, length/3, depth-1)
t.right(120)
koch_curve(t, length/3, depth-1)
t.left(60)
koch_curve(t, length/3, depth-1)
t = turtle.Turtle()
t.speed(0)
t.up()
t.goto(-200, 0)
t.down()
koch_curve(t, 400, 4)
turtle.done()
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ΅ΡΠ΅ΠΏΠ°ΡΠΊΡ ΠΈ ΡΠΈΡΡΠ΅Ρ ΠΊΡΠΈΠ²ΡΡ ΠΠΎΡ Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π³Π»ΡΠ±ΠΈΠ½Ρ.
Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΠΈΡΠΎΠ½Π΅ Π΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° matplotlib, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΊΡΠ°Π»ΠΎΠ². ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΊΡΠ°Π»Π° "ΡΠ½Π΅ΠΆΠΈΠ½ΠΊΠ° ΠΠΎΡ Π°" Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ matplotlib:
import matplotlib.pyplot as plt
def koch_snowflake(ax, x1, y1, x2, y2, depth):
if depth == 0:
ax.plot([x1, x2], [y1, y2], color='black')
else:
x11 = (2 * x1 + x2) / 3
y11 = (2 * y1 + y2) / 3
x21 = (x1 + 2 * x2) / 3
y21 = (y1 + 2 * y2) / 3
x31 = (x11 + x21) / 2 + (y21 - y11) * (3 ** 0.5) / 6
y31 = (y11 + y21) / 2 + (x11 - x21) * (3 ** 0.5) / 6
koch_snowflake(ax, x1, y1, x11, y11, depth - 1)
koch_snowflake(ax, x11, y11, x31, y31, depth - 1)
koch_snowflake(ax, x31, y31, x21, y21, depth - 1)
koch_snowflake(ax, x21, y21, x2, y2, depth - 1)
fig, ax = plt.subplots()
koch_snowflake(ax, 0, 0, 1, 0, 4)
ax.set_aspect('equal')
plt.show()
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ matplotlib.pyplot Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ½Π΅ΠΆΠΈΠ½ΠΊΠΈ ΠΠΎΡ Π°.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΠΊΡΠ°Π»Ρ Π² ΠΏΠΈΡΠΎΠ½Π΅
Π€ΡΠ°ΠΊΡΠ°Π»Ρ - ΡΡΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ΠΌ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ ΡΠ΅Π±Ρ ΠΏΡΠΈ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΊΡΠ°ΡΠΈΠ²ΡΠ΅ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ·ΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΠΊΡΠ°Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python.
1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Turtle
ΠΠ»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΊΡΠ°Π»ΠΎΠ² ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Turtle. ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Python Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅. ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Turtle, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅:
pip install turtle
2. ΠΠΌΠΏΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Turtle, ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ Π΅Π΅ Π² Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
import turtle
3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π§ΡΠΎΠ±Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΠΊΡΠ°Π», Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
window = turtle.Screen()
window.title("ΠΠΎΠΉ ΡΡΠ°ΠΊΡΠ°Π»")
window.bgcolor("white")
ΠΠ΄Π΅ΡΡ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠΊΠ½Π°, ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ Π·Π°Π΄Π°Π΅ΠΌ Π±Π΅Π»ΡΠΉ ΡΠ²Π΅Ρ ΡΠΎΠ½Π°.
4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅ΠΏΠ°ΡΠΊΠΈ
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ΅ΡΠ΅ΠΏΠ°ΡΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Ρ ΡΡΠ°ΠΊΡΠ°Π». ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
fractal_turtle = turtle.Turtle()
fractal_turtle.speed(0)
fractal_turtle.penup()
fractal_turtle.setposition(-200, -200)
fractal_turtle.pendown()
fractal_turtle.pensize(2)
ΠΠ΄Π΅ΡΡ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ΅ΡΠ΅ΠΏΠ°ΡΠΊΠΈ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΡΡ, ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΠΌ ΠΏΠ΅ΡΠΎ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π² Π»Π΅Π²ΡΠΉ Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ³ΠΎΠ» ΠΎΠΊΠ½Π°, ΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΠ΅ΡΠΎ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π·Π°Π΄Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΈΠ½Ρ ΠΏΠ΅ΡΠ°.
5. Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΠΊΡΠ°Π»Π°
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ Π½Π°ΡΠ°ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΠΊΡΠ°Π»Π°. ΠΠ΄Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΠΊΡΠ°Π» ΠΠ΅Π²ΠΈ:
def draw_levy_fractal(turtle, length, depth):
if depth == 0:
turtle.forward(length)
else:
turtle.left(45)
draw_levy_fractal(turtle, length/2, depth-1)
turtle.right(90)
draw_levy_fractal(turtle, length/2, depth-1)
turtle.left(45)
draw_levy_fractal(fractal_turtle, 200, 5)
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΡΠΈΡΡΠ΅Ρ ΡΡΠ°ΠΊΡΠ°Π» ΠΠ΅Π²ΠΈ. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΠ΅ΠΏΠ°ΡΠΊΡ, Π΄Π»ΠΈΠ½Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ΅ΠΊΡΡΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ Π»ΠΈΠ½ΠΈΡ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ, ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅ΡΠ΅ΠΏΠ°ΡΠΊΡ Π½Π° 45 Π³ΡΠ°Π΄ΡΡΠΎΠ², ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΌΡ ΡΠ΅Π±Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ Π»ΠΈΠ½ΠΈΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅ΡΠ΅ΠΏΠ°ΡΠΊΡ Π½Π° 45 Π³ΡΠ°Π΄ΡΡΠΎΠ² Π² ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Ρ.
6. ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠΎΡΠ»Π΅ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΊΡΠ°Π»Π° Π·Π°ΠΊΠΎΠ½ΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
turtle.done()
ΠΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π·Π°ΠΊΡΠΎΠ΅Ρ ΠΎΠΊΠ½ΠΎ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
7. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΠΊΠ°ΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΠΊΡΠ°Π»Ρ Π² Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Turtle. ΠΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΎΠΊΠ½ΠΎ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ΅ΡΠ΅ΠΏΠ°ΡΠΊΡ, Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΊΡΠ°Π»Π° ΠΈ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π’Π΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ°ΠΊΡΠ°Π»Ρ ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΡΡΡΡ ΠΈΡ ΠΊΡΠ°ΡΠΎΡΠΎΠΉ ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΡΡ.