Векторная анимация в mo.js строится вокруг параметрического управления формой, временем и пространственным распределением элементов. Одним из ключевых механизмов визуальной композиции выступает угловое распределение частиц в радиальных эффектах. Именно оно определяет, как визуальный «веер» раскрывается из центральной точки, формируя плотность, направленность и динамику взрыва или всплеска.
Любое радиальное распределение в mo.js опирается на окружность как базовую систему координат. Каждый элемент получает угол поворота относительно центра, который задаётся в градусах. В простейшем виде распределение можно описать как разбиение полного круга:
Однако равномерное распределение — лишь частный случай. Основной инструмент художественной вариативности — ограничение сектора раскрытия, формирующего «веер».
В mo.js для эффекта веерного распределения используется ограничение углового диапазона, внутри которого генерируются дочерние элементы. Этот диапазон задаёт направление и плотность всплеска.
Ключевая идея заключается в том, что вместо полного круга используется сектор:
Чем меньше этот диапазон, тем более направленным становится эффект. Чем больше — тем ближе он к круговому взрыву.
В mo.js основной инструмент для радиальных эффектов —
Burst. Он позволяет управлять количеством элементов, их
радиусом и угловым распределением.
const burst = new mojs.Burst({
radius: { 0: 120 },
count: 12,
children: {
shape: 'circle',
radius: 6,
fill: 'white'
}
});
В данном случае угол распределения не ограничен, и элементы расходятся равномерно по окружности.
Для формирования веера вводится параметр углового диапазона через
angle и degree. Именно комбинация этих
значений позволяет контролировать сектор эмиссии.
const burst = new mojs.Burst({
radius: { 0: 150 },
count: 10,
angle: 180,
degree: 90,
children: {
shape: 'rect',
radius: 5
}
});
Здесь формируется полукруговое распределение с дополнительным ограничением раскрытия до 90°, что создаёт плотный направленный веер.
Параметр degree определяет ширину углового сектора,
внутри которого происходит генерация частиц. Он влияет не на поворот
всей системы, а на внутреннюю дисперсию элементов.
Механически это выглядит как:
Таким образом достигается контролируемая хаотичность.
При изменении angle меняется ориентация всего веера. Это
позволяет «поворачивать» раскрытие без изменения его формы.
angle: 45,
degree: 60
Такой набор параметров задаёт веер, направленный по диагонали, с узким углом разброса.
Комбинация этих значений используется для построения сложных сцен, где несколько Burst-эффектов пересекаются под разными углами, создавая многослойные композиции.
Параметр count тесно связан с углом раскрытия, хотя и не
влияет на него напрямую. При одинаковом секторе:
При узком угле увеличение count усиливает ощущение давления и направленной энергии.
Угол раскрытия может быть не статическим, а анимированным во времени. В mo.js поддерживается интерполяция параметров, что позволяет динамически расширять или сужать веер.
const burst = new mojs.Burst({
radius: { 0: 140 },
angle: { 0: 90 },
degree: { 10: 120 },
count: 14,
children: {
radius: 4
}
});
В такой конфигурации веер начинается как узкий направленный поток и постепенно раскрывается до широкого радиального всплеска.
Эффект раскрытия становится визуально устойчивым только при согласованной динамике угла и радиуса. Если радиус увеличивается быстрее, чем расширяется угол, возникает эффект «вытянутого луча». При обратной зависимости формируется эффект рассыпания.
Основные типы синхронизации:
Сложные сцены строятся через наложение нескольких Burst-объектов с разными углами раскрытия. При этом важно избегать симметрии, если требуется естественность движения.
new mojs.Burst({
angle: 0,
degree: 40
});
new mojs.Burst({
angle: 120,
degree: 70
});
new mojs.Burst({
angle: 240,
degree: 50
});
Пересечение таких вееров создаёт плотные зоны и визуальные акценты, усиливающие восприятие центра сцены.
Сужение угла раскрытия напрямую увеличивает плотность элементов в секторе. При фиксированном количестве частиц это приводит к следующим эффектам:
При экстремально малых значениях degree поведение приближается к линейной траектории, где радиальная природа почти исчезает.
Хотя угол задаёт геометрию, временные функции влияют на восприятие раскрытия. При нелинейных easing-функциях визуальный центр тяжести смещается:
Таким образом угол раскрытия становится не только пространственным, но и временным параметром композиции.