Падающие снежинки
Ночной фон заполняется звёздами — массив случайных точек разного размера и прозрачности, которые отрисовываются один раз и остаются статичными.
Снежинки генерируются процедурно. Каждая состоит из шести лучей, построенных рекурсивной функцией drawArm: от центра рисуется отрезок, затем на конце создаются две ветки под углом, и так далее до заданной глубины. Таким образом каждый луч представляет собой фрактальное дерево Пифагора. Глубина и размер каждой снежинки случайны, поэтому все они выглядят по-разному.
Движение снежинок реализовано через requestAnimationFrame. Помимо падения вниз, у каждой снежинки есть горизонтальное смещение, основанное на простой функции шума (интерполяция случайных значений с косинусной сглаживающей). Это создаёт эффект лёгкого покачивания от ветра. Также каждая снежинка медленно вращается.
При достижении нижней границы экрана снежинка пересоздаётся сверху с новыми случайными параметрами. Управление анимацией — кнопки «Старт» и «Стоп».
