🎨 Как рисовать фракталы в 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.