Пэйринг и персонажи
Метки
Описание
Есть граница, после которой звезда больше не может удерживать саму себя. Давление растёт, свет становится нестабильным, и однажды всё сжимается до точки, где уже нельзя вернуться к прежнему состоянию.
Они не замечают, в какой момент переходят эту границу.
Сначала — просто совпадение траекторий, затем — устойчивая орбита, потом — притяжение, которое нельзя объяснить формулами. Маленькие жесты, тихие взгляды, забота, спрятанная между строк и расчётов.
Предел.
Примечания
*Строго говоря, предел Чандрасекара — это верхний предел массы холодного невращающегося белого карлика, определяемый условием равенства сил давления вырожденного электронного газа и гравитации.
Звёзды ниже предела Чандрасекара становятся стабильными белыми карликами, оставаясь такими на протяжении всей остальной истории Вселенной (при условии отсутствия внешних сил).
Звёзды, превышающие этот предел, могут превратиться в нейтронные звёзды или чёрные дыры.
_________
– Я слепое старое животное – на ошибки смотрю, но вскользь.
– Работа – отвести душу и успокоиться.
– Напоминаю – я не физик, не астроном, и, вообще, позорник физмат, так что снимаю с себя погоны ответственности за все, сказанное здесь.
• Пока работа находится "в процессе", она НЕ ЗАБРОШЕНА. Главы выходят с большим разрывом, разнящимся стилем повествования и ТД, потому что автор еблан и имеет свои дела и обязанности.
Посвящение
Преданным читателям. Звёздам. Константам. Чувствам.
3.3 Irritating heat
28 июля 2026, 07:56
import matplotlib
matplotlib.use('TkAgg')
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
size = 500
view = 15.0
x = np.linspace(-view, view, size)
y = np.linspace(-view, view, size)
X, Y = np.meshgrid(x, y)
R = np.sqrt(X**2 + Y**2)
n_frames = 150
collapse_end = 60
explosion_peak = 75
bh_formed = 90
fig, ax = plt.subplots(figsize=(8, 8), facecolor='black')
ax.axis('off')
im = ax.imshow(np.zeros((size, size)), cmap='gist_heat',
extent=[-view, view, -view, view], vmin=0, vmax=2.2)
title = ax.set_title('', color='white', fontsize=13)
def animate(frame):
image = np.zeros((size, size))
if frame < collapse_end:
t = frame / collapse_end
star_radius = 6.0 * (1 - 0.85 * t)
brightness = 1.2 + 0.5 * t
image = brightness * np.exp(-(R**2) / (2 * star_radius**2))
title.set_text(f'Коллапс ядра звезды... (t={t:.2f})')
elif frame < explosion_peak:
t = (frame - collapse_end) / (explosion_peak - collapse_end)
shock_radius = 1.0 + 13.0 * t
shock_width = 1.5
image = 2.2 * np.exp(-((R - shock_radius)2) / (2 * shock_width**2))
core_radius = 0.8 * (1 - t)
image += 2.0 * np.exp(-(R**2) / (2 * max(core_radius, 0.1)**2))
title.set_text('ВЗРЫВ СВЕРХНОВОЙ')
else:
t = min((frame - explosion_peak) / (bh_formed - explosion_peak), 1.0)
r_s = 1.0
shock_radius = 14.0 * t + 4.0
if shock_radius < view * 1.5:
shock_fade = max(1.0 - t, 0.15)
image += shock_fade * 1.5 * np.exp(-((R - shock_radius) 2) / 8.0)
disk_inner, disk_outer = 1.8, 6.0
disk_mask = (R > disk_inner) & (R < disk_outer)
disk_brightness = np.clip(1.0 - (R - disk_inner) / (disk_outer - disk_inner), 0, 1) 1.3
image[disk_mask] += (disk_brightness[disk_mask]) * min(t * 1.5, 1.0)
image[R < r_s] = 0
image += np.exp(-((R - r_s * 1.4) 2) / 0.02) * min(t * 1.5, 1.0)
title.set_text('Чёрная дыра сформирована')
im.set_data(image)
return [im]
anim = FuncAnimation(fig, animate, frames=n_frames, interval=40, blit=False, repeat=True)
plt.tight_layout()
plt.show()
Что еще можно почитать
Пока нет отзывов.