Твёрдое тело, свободно вращающееся в невесомости, причём момент сил не действует на него ни в один момент времени. Из уравнений Эйлера следует, что у любого тела три главные оси, и вращение вокруг наибольшего и наименьшего моментов инерции устойчиво, а вокруг среднего — нет: крохотная боковая составляющая растёт экспоненциально со скоростью σ = ω·√((I₂−I₁)(I₃−I₂)/(I₁I₃)), дорастает до величины самого вращения, переворачивает тело — и всё начинается заново. Переворот ничем не вызван: жёлтая стрелка — момент импульса в пространстве, и она неподвижна, пока тело кувыркается вокруг неё. Кувыркание — это то, как выглядит сохранение, когда ось вращения средняя. Каждая декада уменьшения начального возмущения откладывает первый переворот на ln(10)/σ — на константу, а не в разы, — поэтому настоящая гайка-барашек продолжает переворачиваться примерно с одинаковым интервалом, а не успокаивается. В панели напечатан дрейф обоих инвариантов, |L| и энергии: модуль, утверждающий «на тело ничто не действует», обязан показать, что и его интегратор на тело не действует.
Нутация - это кивание, которое волчок совершает вдобавок к прецессии: угол наклона θ не стоит на месте, пока ось обходит вертикаль, а опускается и поднимается. Наш модуль гироскопа решает тяжёлый симметричный волчок честно - RK4 по (θ, θ̇), с двумя сохраняющимися импульсами p_φ и p_ψ, зафиксированными при запуске, - поэтому кивание не анимация, добавленная для вида: оно вытекает из тех же уравнений, что дают прецессию.
Увидите вы его или нет, зависит целиком от того, как волчок отпущен, и модуль делает это выбором между пресетами. Отпущенный ровно с нужной скоростью прецессии - медленным корнем уравнения I₁cos θ·φ̇² − I₃ω₃·φ̇ + Mgl = 0 - он прецессирует при постоянном наклоне, и кивания нет вовсе: и пресет по умолчанию, и быстрый держат θ неизменным до последнего знака, который несёт наш интегратор. Отпущенный из покоя, при φ̇ = 0, он обязан сначала немного упасть, прежде чем включится гироскопическая реакция, и проскакивает: наклон тогда ходит от 45.84° до 48.51°, амплитуда нутации 2.68°, период 0.512 с, а ось при этом прецессирует со скоростью 22.8°/с.
Этот период не произволен. Для быстрого волчка частота нутации стремится к I₃ω₃/I₁, и 2πI₁/(I₃ω₃) даёт 0.491 с против измеренных 0.512 с - небольшая разница от конечного наклона, а не ошибка. Раскрутите волчок сильнее, и кивание станет одновременно быстрее и мельче: именно поэтому хорошо запущенный волчок кажется прецессирующим плавно - нутация никуда не делась, она слишком быстрая и слишком мелкая, чтобы её заметить.
Это видео из моего модуля Black Hole. Здесь чёрная дыра не нарисована заранее и не сделана как обычный 3D-объект с красивой текстурой. Картинка собирается прямо во время работы программы. Для каждого пикселя камера как будто запускает луч света назад в пространство и смотрит, откуда он мог прийти.
В обычной сцене такой луч летел бы по прямой. Но рядом с чёрной дырой пространство-время сильно искривлено, поэтому изгибается и траектория света. В модуле эти траектории рассчитываются для чёрной дыры Шварцшильда - то есть невращающейся чёрной дыры.
Если луч проходит слишком близко, он уже не возвращается наружу. Так появляется чёрная область в центре. А свет, который проходит чуть дальше, может очень сильно отклониться. Иногда он почти обходит чёрную дыру, прежде чем попасть к наблюдателю. Из-за этого вокруг неё и возникает характерное яркое кольцо.
Самое интересное для меня здесь - аккреционный диск. Он в действительности остаётся плоским. Но на видео хорошо видно, что его дальняя сторона как будто поднимается над чёрной дырой и появляется ещё и снизу. Это не изгиб самого диска. Так выглядит гравитационное линзирование: свет от дальней части диска огибает чёрную дыру и приходит к камере по искривлённой траектории.
Диск при этом вращается, поэтому его две стороны выглядят не одинаково. Та часть вещества, которая движется в нашу сторону, становится ярче, а удаляющаяся - темнее. Дополнительно свет меняется из-за сильного гравитационного поля возле самой чёрной дыры. То же самое происходит и со звёздным фоном. Лучи от далёких звёзд тоже отклоняются, поэтому фон рядом с чёрной дырой заметно искажается.
При этом я не пытаюсь делать вид, что здесь полностью моделируется настоящая аккреционная плазма. Геометрия движения света рассчитывается физически, а внешний вид самого диска - его полосы, яркость и структура - уже создаётся процедурно.
В итоге программа не знает заранее, как должна выглядеть чёрная дыра, она просто считает куда пошёл свет, а изображение получается уже из этого.
Это видео из моего модуля Aurora - модели полярного сияния и движения заряженных частиц в магнитном поле Земли. Здесь само сияние не нарисовано заранее, оно постепенно появляется там, куда в результате расчёта действительно прилетают частицы. Магнитное поле Земли в модуле задаётся как поле диполя: оно сильнее возле полюсов и слабее в районе магнитного экватора. В это поле запускаются тысячи заряженных частиц с немного разными начальными условиями, после чего программа отдельно рассчитывает движение каждой из них. При этом частица не просто летит вдоль нарисованной силовой линии. На неё действует сила Лоренца, поэтому она закручивается вокруг магнитного поля и одновременно движется вдоль него. Для расчёта используется алгоритм Бориса - численный метод, специально хорошо подходящий для движения заряженных частиц в магнитных полях.
Дальше возникает интересный эффект - магнитное зеркало. Когда частица движется к полюсу, магнитное поле становится сильнее. Поперечное движение частицы усиливается, а движение вдоль силовой линии замедляется. В результате многие частицы вообще не достигают атмосферы: они останавливаются, разворачиваются и летят обратно к магнитному экватору. Но это происходит не со всеми. Если частица изначально движется достаточно сильно вдоль магнитного поля, она успевает пройти вниз раньше, чем магнитное зеркало сможет её развернуть. Такой диапазон направлений называется конусом потерь. Именно частицы, попавшие в него, достигают верхних слоёв атмосферы.
Поэтому полярное сияние здесь возникает не просто «возле полюсов». Частицы стартуют с разных магнитных оболочек и под разными углами, а программа сама получает область, куда они в итоге выпадают. Постепенно точки попадания складываются в кольцо вокруг магнитного полюса - авроральный овал. На видео можно заметить и разный цвет летящих частиц. Более холодными оттенками показаны те, которые остаются захваченными магнитным полем и отражаются обратно. Более тёплыми - частицы, движущиеся внутри конуса потерь и направляющиеся к атмосфере.
Когда частица достигает атмосферы, на месте её попадания появляется небольшой светящийся участок. Из большого количества таких попаданий постепенно собирается само полярное сияние. Зелёный цвет внизу переходит в более слабый красноватый выше - это уже визуальная модель характерных цветов настоящей авроры. То есть зелёное кольцо вокруг планеты в этом модуле не является заранее нарисованным эффектом.
Программа рассчитывает магнитное поле, запускает в него тысячи частиц, смотрит, какие из них магнитное поле развернёт обратно, а какие действительно достигнут атмосферы, и уже из мест их попадания получается полярное сияние.