🎨 Как Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„Ρ€Π°ΠΊΡ‚Π°Π»Ρ‹ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌ ΠΈ создаём ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ·ΠΎΡ€Ρ‹

Как Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„Ρ€Π°ΠΊΡ‚Π°Π»Ρ‹ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅?

Для рисования Ρ„Ρ€Π°ΠΊΡ‚Π°Π»ΠΎΠ² Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ 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. ΠœΡ‹ установили Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, создали ΠΎΠΊΠ½ΠΎ для рисования, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ‡Π΅Ρ€Π΅ΠΏΠ°ΡˆΠΊΡƒ, написали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для рисования Ρ„Ρ€Π°ΠΊΡ‚Π°Π»Π° ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои собствСнныС Ρ„Ρ€Π°ΠΊΡ‚Π°Π»Ρ‹ ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΈΡ… красотой ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π’Ρ‹Ρ€Π°Ρ‰ΠΈΠ²Π°ΡŽ Π€Ρ€Π°ΠΊΡ‚Π°Π»Ρ‹ Π½Π° Python [ Turtle ]

#14. РисуСм мноТСство ΠœΠ°Π½Π΄Π΅Π»ΡŒΠ±Ρ€ΠΎΡ‚Π° | Π€Ρ€Π°ΠΊΡ‚Π°Π»Ρ‹ Π½Π° Python

ВОП способов Π£ΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Код Python. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ построСния Π€Ρ€Π°ΠΊΡ‚Π°Π»Π° ΠœΠ°Π½Π΄Π΅Π»ΡŒΠ±Ρ€ΠΎΡ‚Π° Π² Pygame

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸš€ΠšΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ шаг Π² Ρ†ΠΈΠΊΠ»Π΅ for python: совСты ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

πŸ” Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ дСйствия Π² Python: пошаговоС руководство

πŸ“” Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой Π±Π»ΠΎΠΊΠ½ΠΎΡ‚ Π½Π° Python: пошаговоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

🎨 Как Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„Ρ€Π°ΠΊΡ‚Π°Π»Ρ‹ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌ ΠΈ создаём ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ·ΠΎΡ€Ρ‹

πŸ” Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ курсора python: пошаговоС руководство

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ round Π² Python: всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ

πŸ” Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ div Π² Python? Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ div Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ