Решён
Как построить график функции в виде сердца?

Нужно нарисовать сердце с помощью математической функции. Хочу сделать анимацию для девушки на 14 февраля в Python (matplotlib).

Гуглил, нашел какие то параметрические уравнения, но они выдают кривое нечто. Может кто знает красивую формулу которая реально похожа на сердечко?

UPDATE: Сделал по формуле от @второго ответа, получилось круто! Девушка в восторге)
Решение
89
Эксперт • 1 ответ

Самое красивое сердце получается из параметрических уравнений:

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(0, 2*np.pi, 1000)
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)

plt.figure(figsize=(8, 8))
plt.plot(x, y, 'r', linewidth=2)
plt.fill(x, y, 'red', alpha=0.3)
plt.axis('equal')
plt.axis('off')
plt.show()

Это так называемая "сердечная кривая" (heart curve). Коэффициенты 16, 13, 5, 2, 1 подобраны так чтобы пропорции были идеальные.

Если хочешь анимацию - добавь цикл который постепенно увеличивает диапазон t от 0 до 2π, будет эффект рисования.

Аватар Евгений Математик

Вау, это прям идеально! Спасибо!

11
Эксперт • 1 ответ

Классика жанра - кардиоида в полярных координатах: r = 1 - sin(θ)

Но она дает такое... каплевидное сердце. Не очень романтично выглядит если честно.

24
Участник • 3 ответа

Есть еще неявная функция: (x² + y² - 1)³ - x²y³ = 0

Но ее сложнее строить, нужен contour plot. Для matplotlib проще параметрическая как выше написали.

Написать ответ

Премодерация гостей

Вы отвечаете как гость. Ваш ответ будет скрыт до проверки модератором. Чтобы ответ появился сразу и вы получали репутацию — войдите в аккаунт.

Будьте вежливы и соблюдайте правила платформы.