Дві фази, два різних фізичні завдання
Спектральна границя вибуху феєрверків насправді складається з двох симуляцій, які пов'язані між собою. Спочатку вона поводиться як твердий пролітаючий предмет: труба гармати надає їй фіксовану початкову швидкість, і з моменту, коли вона проходить мить від носа, вона рухається за законами балістики під дією сили тяжіння та опору повітря, як і куля з гармати. Потім, на певній висоті та в певний час, встановленому внутрішнім запалом, вона перестає бути одним об'єктом і стає сотнями незалежних проектилів – зірок, які успадковують швидкість оболонки під час вибуху та потім відлітають навколо, керуючись власними законами.
Фаза запуску є стандартною балістикою твердого тіла з квадратичним опором: a = g - (k/m) v |v|. Опір повітря має велике значення для оболонки, яка рухається зі швидкістю 40-70 метрів на секунду в повітрі, тому симуляція, яка застосовує лише силу тяжіння, помітно перемахне над справжньою вершиною. Висота оболонки під час вибуху регулюється часом запалу, а не ціллю – піротехніки встановлюють час запалу на тривалість горіння, яка відповідає секундам, необхідним для досягнення бажаної висоти; типова оболонка об'ємом 3 дюйми (75 мм) вибухає приблизно на 100 метрів у висоту після приблизно 3-4 секунд польоту.
Вибух феєрверкового снаряда: радіальна кінематика та рух снаряду
Всередині снаряда зірки упаковані в сферичну або півсферичну оболонку навколо невеликого центрального заряду. Коли часник спалахує, він запалює цей заряд, і щойно утворена хвиля тиску відштовхує кожну зірку назовні вздовж лінії від центру снаряда через положення зірки в упаковці – саме тому добре сконструйований снаряд виробляє майже ідеальну розширену сферу замість випадкового розбризкування. Спеціальні геометрії пакування — кільце зірок, серце чи посмішка — несуть таку саму радіальну симетрію в небо як впізнавану форму.
// per-star velocity immediately after burst const theta = Math.random() * Math.PI * 2; const phi = Math.acos(2 * Math.random() - 1); // uniform point on a sphere star.vx = shell.vx + burstSpeed * Math.sin(phi) * Math.cos(theta); star.vy = shell.vy + burstSpeed * Math.sin(phi) * Math.sin(theta); star.vz = shell.vz + burstSpeed * Math.cos(phi);
Зоряне падіння: сила тяжіння, опір повітря та згорання
Після виходу зі шкаралупи кожна зоря стає мініатюрним снарядом: гравітація притягує її вниз, а опір повітря сповільнює швидкість розгону, і вона самостійно горить протягом певного часу – зазвичай від півсекунди до кількох секунд – перш ніж згаснути. Цей час горіння, а не швидкість розриву, обмежує те, наскільки великим може бути квітка світла: зірки, які летять швидко, але горять короткий час, роблять різкий, загострений вибух; зірки, що горять повільно, прокладають довгі, пониклі смуги, оскільки гравітація тягне всю форму вниз у вигляді краплі. Ефекти верби та пальми виникають через зорі, які горить повільно, з високим коефіцієнтом опору повітря; потріскування та ефект блискіток додають вторинний мікровибух, що відбувається всередині часу горіння кожної зірки.
Хімічні набори задають колір, фізика – форму
Два ефекти незалежні один від одного, і симуляція може розглядати їх окремо. Колір виникає завдяки металічним солям у складі зірки, які випромінюють світло з характерних довжин хвиль при нагріванні від горіння – стронцій для червоного, барій для зеленого, медь для синього, натрій для жовтого – отже, колір є властивістю кожної зірки, постійною протягом усього її польоту. Форма визначається виключно кінематикою вище: кут запуску та швидкість встановлюють, куди летить снаряд, час горіння розпалу визначає, коли і як високо відкривається розпал, а геометрія вибуху-заряду визначає, чи летітимуть зірки у формі сфери, кільця або більш складної структури.
Що моделює симуляція
На цьому сайті модель зберігає фізичну правдивість, одночасно залишаючись достатньо швидкою для сотень одночасних зірок: постійна гравітація, лінійне горіння запалу у часі та спрощений термін опору замість повної аеродинамічної моделі падаючого вугілля. Ігноруються вітрові зсуви та незначна асиметрія, яку реальні корпуси отримують від неідеального пакування зірок, обидва з яких моделюються професійним програмним забезпеченням для проектування феєрверків, оскільки для одного корпусу на темному полотні ці деталі непомітні неочима, але обчислювально дорогі кожному кадру.
Frequently asked questions
Чому феєрверки падають кривими слідами замість прямих ліній?
Кожна зірка запускається з точки вибуху прямою радіальним напрямком, але гравітація одразу починає викривляти цей шлях у параболу, а тертя повітря зменшує швидкість вибуху. Поєднання цих факторів згинає початковий радіальний розпилення в знайомі опуклі дуги.
Що визначає розмір вибуху?
Швидкість вибуху встановлює початкову швидкість росту радіуса, але час горіння – скільки кожна зірка продовжує світитися перед тим, як згасне – обмежує відстань, яку вона подолає до зникнення. Оболонка зі швидкими зірками та коротким часом горіння створює невеликий, щільний спалах; зірки з повільним горінням з тією ж швидкістю вибуху роблять набагато більший бутон.
Чому timing запалу має таку велику вагу?
Запал є єдиним фактором, що визначає висоту вибуху, оскільки гарматний снаряд не може перенаправитися під час польоту. Занадто короткий запал призводить до небезпечного вибуху на низькій висоті та близько до глядачів; занадто довгий запал дозволяє йому пройти повз пік і вибухнути в падінні, спотворюючи призначену форму.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте Fireworks Shell Burst і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію Fireworks Shell Burst