From 461f343b7afef1a5a65c4154596a208b81380294 Mon Sep 17 00:00:00 2001 From: erjemin Date: Sat, 5 Sep 2026 21:16:42 +0300 Subject: [PATCH] =?UTF-8?q?minor:=20=D1=8F=D0=B4=D1=80=D0=BE=20(10)=20?= =?UTF-8?q?=D0=BC=D0=B8=D0=BA=D1=80=D0=BE=D0=BE=D0=BF=D1=82=D0=B8=D0=BC?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D1=80=D0=B6=D0=BA=D0=B8=20=D0=B8=20=D0=B4=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hypn0/hypn0_site/services/halftone.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/hypn0/hypn0_site/services/halftone.py b/hypn0/hypn0_site/services/halftone.py index c3e5746..2096e07 100644 --- a/hypn0/hypn0_site/services/halftone.py +++ b/hypn0/hypn0_site/services/halftone.py @@ -125,10 +125,6 @@ def generate_halftone_svg( - seed: сид для детерминированного распределения анимаций TODO ПОЧИНИТЬ-УЛУЧШИТЬ: - ПОЧИНИЛИ ДЛЯ ПРОСТЫХ ФИГУР - max_radius (радиус точки): - - шаг ячейки STEP = 20, базовый радиус R0 = 10 - - при d=0 .. 10 -- зазор между точками - - при d>10 -- перекрытие и наползание точек - angle: сейчас это просто поворот картинки. Нужно чтобы: - нужно чтобы это был поворт картинки (т.е. ряды-столбцы были со смещение-поворотом, как при полиграфии) - blink: что-то страннное. пока не понял @@ -224,6 +220,8 @@ def generate_halftone_svg( defs_html = "".join(defs_list) # 4. Формирование групп и CSS классов задержек + # Список простых чисел для создания богатой апериодической полиритмии мерцания + PRIME_DELAYS = [0, 0.1, 0.3, 0.5, 0.7, 1.1, 1.3, 1.7, 1.9, 2.3, 2.9, 3.1] duration = max(0.4, 2.5 - (blink * 0.19)) if is_animated else 1.0 groups = [] animation_classes = [] @@ -235,7 +233,12 @@ def generate_halftone_svg( continue anim_index = group_elements[0][3] - delay = (anim_index / animation_variants) * duration * 1.5 if is_animated else 0.0 + if is_animated: + prime_base = PRIME_DELAYS[anim_index % len(PRIME_DELAYS)] + # Масштабируем задержку относительно длительности анимации с округлением до десятых + delay = round(prime_base * (duration / 2.0), 1) + else: + delay = 0.0 # Генерируем правило задержки в CSS if is_animated: @@ -263,7 +266,7 @@ def generate_halftone_svg( clean_color = f"#{clean_color}" # Добавляем альфа-канал в hex при необходимости или используем CSS opacity - fill_style = f"fill:{clean_color};stroke:{clean_color};opacity:{opacity:.2f};" + fill_style = f"fill:{clean_color};stroke:{clean_color};opacity:{opacity:.1f};" if is_animated: # Управление паузой/запуском через CSS Custom Property --hypn0-play.