🎨 Как рисовать фракталы в Python: простое руководство с примерами и кодом

Чтобы рисовать фракталы в Python, вам понадобится использовать библиотеку matplotlib. Вот простой пример кода, который рисует фрактал Коха:

import matplotlib.pyplot as plt

def draw_koch_curve(x1, y1, x2, y2, depth):
    if depth == 0:
        plt.plot([x1, x2], [y1, y2], 'k')
    else:
        x1_new = (2 * x1 + x2) / 3
        y1_new = (2 * y1 + y2) / 3
        x2_new = (x1 + 2 * x2) / 3
        y2_new = (y1 + 2 * y2) / 3
        x3 = (x1_new + x2_new) / 2 - (y2_new - y1_new) * (3**0.5) / 6
        y3 = (y1_new + y2_new) / 2 + (x2_new - x1_new) * (3**0.5) / 6
        
        draw_koch_curve(x1, y1, x1_new, y1_new, depth - 1)
        draw_koch_curve(x1_new, y1_new, x3, y3, depth - 1)
        draw_koch_curve(x3, y3, x2_new, y2_new, depth - 1)
        draw_koch_curve(x2_new, y2_new, x2, y2, depth - 1)

plt.figure(figsize=(6, 6))
draw_koch_curve(0, 0, 1, 0, 4)
plt.axis('scaled')
plt.show()

Войдите в интерактивную оболочку Python или выполните этот код в среде разработки, и вы увидите фрактал Коха, нарисованный на графике. Вы можете экспериментировать с параметрами, такими как координаты начала и конца, а также глубина рекурсии, чтобы создавать разные фракталы.

Детальный ответ

Как рисовать фракталы в Python

Фракталы - удивительные геометрические структуры, которые могут быть созданы при помощи рекурсивных алгоритмов. Они отличаются симметрией и повторяющимися паттернами на разных масштабах. В Python существует несколько способов рисовать фракталы с помощью графической библиотеки, такой как Turtle или Pygame. В этой статье мы рассмотрим, как можно рисовать фракталы с помощью Pygame.

Установка Pygame

Прежде чем начать рисовать фракталы, нам необходимо установить библиотеку Pygame. Для этого выполните следующую команду в вашей командной строке:

pip install pygame

После успешной установки Pygame мы готовы приступить к созданию фракталов.

Рисование фрактала Мандельброта

Один из самых известных фракталов - это фрактал Мандельброта. Он обладает интересной и красивой структурой. Давайте рассмотрим, как можно нарисовать фрактал Мандельброта в Python с помощью Pygame.

Прежде всего, нам нужно импортировать библиотеку Pygame и определить размер окна:

import pygame

width = 800
height = 800

window = pygame.display.set_mode((width, height))
pygame.display.set_caption("Фрактал Мандельброта")

Затем мы определяем функцию, которая будет проверять, принадлежит ли точка к фракталу Мандельброта:

def mandelbrot(c):
    z = 0
    n = 0
    while abs(z) < 2 and n < 100:
        z = z*z + c
        n += 1
    return n

Далее нам нужно определить границы, в пределах которых будут генерироваться точки фрактала:

x_min = -2.0
x_max = 2.0
y_min = -2.0
y_max = 2.0

Теперь мы можем создать цикл, который будет проходить по каждой точке в окне и определять цвет этой точки на основе значения, возвращаемого функцией mandelbrot:

for x in range(width):
    for y in range(height):
        Re = x * (x_max - x_min) / (width - 1) + x_min
        Im = y * (y_max - y_min) / (height - 1) + y_min
        c = complex(Re, Im)
        m = mandelbrot(c)
        
        color = (m % 8 * 32, m % 16 * 16, m % 32 * 8)
        window.set_at((x, y), color)

Наконец, мы можем добавить основной цикл отображения окна:

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    pygame.display.flip()
    
pygame.quit()

Полный код для рисования фрактала Мандельброта в Python с использованием Pygame выглядит следующим образом:

import pygame

width = 800
height = 800

window = pygame.display.set_mode((width, height))
pygame.display.set_caption("Фрактал Мандельброта")

def mandelbrot(c):
    z = 0
    n = 0
    while abs(z) < 2 and n < 100:
        z = z*z + c
        n += 1
    return n

x_min = -2.0
x_max = 2.0
y_min = -2.0
y_max = 2.0

for x in range(width):
    for y in range(height):
        Re = x * (x_max - x_min) / (width - 1) + x_min
        Im = y * (y_max - y_min) / (height - 1) + y_min
        c = complex(Re, Im)
        m = mandelbrot(c)
        
        color = (m % 8 * 32, m % 16 * 16, m % 32 * 8)
        window.set_at((x, y), color)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    pygame.display.flip()
    
pygame.quit()

Заключение

В этой статье мы рассмотрели, как рисовать фракталы в Python с использованием библиотеки Pygame. Мы изучили, как нарисовать фрактал Мандельброта, используя рекурсивный алгоритм. Вы также можете экспериментировать с различными фракталами и настраивать их параметры, чтобы создавать уникальные и красивые изображения. Надеюсь, что эта статья помогла вам понять процесс рисования фракталов в Python.

Видео по теме

Выращиваю Фракталы на Python [ Turtle ]

ТОП способов Ускорить Код Python. На примере построения Фрактала Мандельброта в Pygame

#14. Рисуем множество Мандельброта | Фракталы на Python

Похожие статьи:

🐍 Python: Что такое nan в Python

Как проверить тип данных в питоне: простые способы и советы

🔎 Как правильно ввести число с клавиатуры в Python?

🎨 Как рисовать фракталы в Python: простое руководство с примерами и кодом

Как закрыть текущую вкладку в Selenium Python

5 причин, почему Python стал популярным в машинном обучении 🐍

🐍 Зачем самка питона обвивается вокруг отложенных яиц? 🥚