В мире программирования сочетание искусства и кода часто создает удивительные произведения. Если вы хотите создать романтическую анимацию для особенного дня или просто хотите продемонстрировать свои творческие способности с помощью кода, рисование анимированной формы сердца — отличный выбор. Эта статья поможет вам шаг за шагом реализовать эту анимацию с использованием библиотек Python и Matplotlib.
Прежде чем начать, убедитесь, что в вашей системе установлено следующее программное обеспечение и библиотеки:
pip install matplotlib
pip install numpy
Для начала нам необходимо импортировать необходимые библиотеки для построения графиков и математических расчетов:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation
Затем определите функцию для генерации координат формы сердца. Мы будем использовать полярные уравнения, чтобы нарисовать форму сердца:
def heart_shape(t):
x = 16 * np.sin(t) ** 3
y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)
return x, y
Установите основные параметры рисования, включая размер графика, цвет фона, диапазон осей и скрытую ось:
fig, ax = plt.subplots()
ax.set_facecolor('black') # Установить цвет фона на черный
fig.set_size_inches(6, 6) # Установить размер графики
ax.set_xlim(-20, 20) # Установить диапазон оси X
ax.set_ylim(-20, 20) # Установить диапазон оси Y
ax.axis('off') # Скрыть оси
Используйте класс FuncAnimation Matplotlib для создания эффекта:
t = np.linspace(0, 2 * np.pi, 1000) # Создайте 1000 точек от 0 до 2π
x, y = heart_shape(t) # Получите координаты x и y формы сердца.
line, = ax.plot([], [], 'r', lw=2) # Инициализация объект рисования, цвет красный
def init():
line.set_data([], []) # инициализировать пустые данные
return line,
def update(frame):
line.set_data(x[:frame],y[:frame]) # возобновлятьданные return line,
ani = FuncAnimation(fig, update, frames=len(t), init_func=init, blit=True) # Создать анимацию
использоватьplt.show()
Приходитьпоказать анимацию:
plt.show()
Вот полный код после объединения всех частей:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation
def heart_shape(t):
x = 16 * np.sin(t) ** 3
y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)
return x, y
fig, ax = plt.subplots()
ax.set_facecolor('black')
fig.set_size_inches(6, 6)
ax.set_xlim(-20, 20)
ax.set_ylim(-20, 20)
ax.axis('off')
t = np.linspace(0, 2 * np.pi, 1000)
x, y = heart_shape(t)
line, = ax.plot([], [], 'r', lw=2)
def init():
line.set_data([], [])
return line,
def update(frame):
line.set_data(x[:frame], y[:frame])
return line,
ani = FuncAnimation(fig, update, frames=len(t), init_func=init, blit=True)
plt.show()