?

Log in

No account? Create an account

Previous Entry | Next Entry

Когда читаешь в книжках по теории относительности про искривленное пространство-время, довольно сложно представить себе визуально как это все выглядит. И у меня давно засела в голове затея сделать самому рендерилку каких-нибудь не очень сложных, понятных пространств, где свет двигался бы по геодезическим, как и велит ОТО, увидеть, как это все изнутри смотрится. Потом был пост nponeccop'a, подкинувший идей. И вот, время пришло.
Какие бывают простые искривленные пространства? Одномерные пространства не имеют кривизны. А вот двумерные уже могут. Самое знакомое нам - поверхность сферы. Если двигаешься по сфере прямо, не сворачивая ни влево, ни вправо, на любой плоской карте такой путь будет выглядеть искривленным. Знаете ли вы, что корабль может доплыть из Пакистана на Камчатку, двигаясь по прямой, ни разу не поворачивая? Кстати, что вообще значит "двигаться прямо"? В случае таких вот 2D поверхностей, вложенных в обычное евклидово 3D пространство, ответ довольно простой. Если мы посмотрим на 3-хмерный вектор направления движения, вектор скорости, и посмотрим, как он изменяется по мере движения по нашей траектории на поверхности, возьмем предел разности между новым и старым значеними, это будет вектор ускорения, так вот, это ускорение всегда должно быть направлено ровно "вниз", перпендикулярно касательной плоскости к поверхности, и так в каждой точке пути. В каждой точке мы можем представить систему координат, где две оси лежат в касательной плоскости ("горизонтально"), а третья перпендикулярна поверхности. Такая система ближе всего к тому, как локально для нас поверхность выглядит, и в ней получается, что вектор ускорения в горизонтальных координатах нулевой (ускорение строго вертикально), т.е. какое бы у нас ни было направление движения, оно не меняется. Это называется параллельный перенос. И геодезическая определяется как траектория, получаемая параллельным переносом вектора направления движения вдоль него самого. Движение строго прямо, с сохранением направления движения. Кстати, не всегда это самый короткий путь - из Пакистана на Камчатку можно и покороче добраться, чем вокруг Африки. Геодезическая - это самый прямой путь. На сфере это большие окружности вроде меридианов и экватора. А вот ненулевая параллель - это уже не геодезическая, не прямая, чтобы лететь и на одной параллели оставаться, надо все время заворачивать, что особенно хорошо видно ближе к полюсам.
В более общем случае искривленных пространств, где измерений может быть больше, а кривизна более хитрая, что их в евклидово не вложишь, там не будет такого понятия "вниз", и параллельный перенос более тонко определяется, но смысл тот же - сохранение направления, и определение геодезической через параллельный перенос касательного вектора сохраняется.
Поскольку для нас привычно жить в 3-хмерном пространстве, давайте из простого искривленного 2-мерного пространства сделаем 3-хмерное. Просто добавим еще одно измерение, ортогональное первым двум. Если исходное пространтво было S² - 2D сфера - то теперь будет S² x R, трехмерное простанство, где два измерения замкнуты и имеют ненулевую кривизну, а третье им ортогонально и бесконечно. Представим взгляд внутри такого пространства, где свет движется "по прямой" - по геодезическим, с учетом кривизны и топологии. Как нам нарисовать такую картинку?
Для начала вспомним, как нарисовать, что мы стоим над плоскостью в обычном Евклидовом пространстве. На некоторой высоте над плоскостью находится глаз наблюдателя. Перед ним на некотором расстоянии стоит вертикально плоскость экрана. Мы пускаем лучи из глаза в мир через плоскость экрана и смотрим, куда они упрутся.

Тут желтым - луч света, как он идет в пространстве, а красным - его проекция на плоскость. В евклидовом пространстве она совершенно прямая. Мы можем тут увидеть подобные треугольники и заметить, что точка, где "луч зрения" упирается в землю, во столько раз дальше, чем экран (вдоль луча), во сколько высота наблюдателя (в пикселях) больше высоты пикселя на экране от уровня горизонта на экране. Этот же принцип должен сохраниться и при рендеринге искривленного пространства. Для сферы радиусом r скалярная кривизна Риччи равна 2/(r^2), т.е. чем больше сфера, тем меньше кривизна, и при устремлении радиуса к бесконечности, кривизна стремится к нулю и мы в пределе получаем обычную плоскость. Механизм рендеринга кривого пространства должен работать и с плоским ("прямым"), и при устремлении кривизны к нулю превращаться в рендеринг плоскости в евклидовом пространстве. По тем же соображениям искривленное пространство в небольшой окрестности наблюдателя должно выглядеть плоским (неискривленным), так что вблизи экрана, прямо перед собой, мы должны видеть нечто очень похожее на обычную плоскость, как мы привыкли ее видеть, а эффекты кривизны должны уже быть заметны для более удаленных мест.
Еще важно заметить, что лучи, находящиеся на одном горизонтальном уровне на экране, проходят разные расстояния:

Все они в k раз длиннее, чем расстояние от наблюдателя до экрана, но это расстояние различно для разных пискелей - в центре экрана короче, по краям длиннее.
Этих двух наблюдений достаточно, чтобы отрендерить стояние над плоскостью в нашем искривленном пространстве. Экран - это наш портал из евклидового пространства человека в неевклидово пространство виртуального мира. Пускаем луч из глаза в пиксель, эта часть пути проходит в евклидовом пространстве. Зная горизонтальную координату пикселя, мы знаем направление движения луча, угол между ним и направлением "вперед". Зная вертикальную координату пикселя, мы знаем, расстояние, которое луч должен пройти, а лучше сразу двигаться по плоскости вдоль вертикальной проекции луча. Т.е. нам нужно отмерить определенное расстояние в определенном направлении, двигаясь с учетом кривизны пространства - по геодезической.
Пример: мы стоит на северном полюсе и смотрим в какую-то сторону. Лучи из глаз расходятся по "прямым" - по меридианам. При этом на одном горизонтальном уровне в центре экрана мы видим точку ближе к нам, чем на том же уровне по краям экрана, поэтому линия параллели (множество точек, равноудаленных от нас) выглядит изогнутой. И если присмотритесь, увидите, что крайние лучи длиннее центральных.

Причем если сделать сферу поменьше, мы увидим, как лучи из глаза встречаются на южном полюсе. В какую сторону с северного полюса не смотри, увидишь Антарктиду.


Итак, нам нужно пройти заданное расстояние вдоль геодезической в нашем искривленном 2D пространстве (третье измерение уже сыграло свою роль - в задании требуемого расстояния - и больше не нужно, двигаемся по проекции луча в 2D). Внутри этого пространства точки идентифицируются двумя координатами, например, долготой и широтой. В каждой точке у нас есть пара базисных векторов, например, "на восток" (меняется первая координата) и "на север" (меняется вторая координата). Если в евклидовом пространстве с декартовыми координатами мы привыкли, что базисные вектора у нас везде одинаковые, то направление "на восток" в Москве это не совсем то же, что "на восток" в Токио. Или лучше сказать по-другому: если мы из Москвы вылетим ровно на восток и будем лететь прямо, то вскоре обнаружим, что двигаемся уже не ровно на восток, а на юго-восток. То направление, что мы считали востоком в Москве, в новом месте уже не будет направлением на восток, т.е. в локальных координатах наш вектор скорости изменился, повернулся. Если у нас есть функция, которая в каждой точке пространства дает какой-то вектор, то производная его вдоль координаты должна учитывать не только изменения этой функции, но и поправки, вносимые геометрией искривленного пространства, те самые поправки, что превратили вектор "на восток" в вектор "на юго-восток". Такая производная с поправкой на геометрию называется ковариантной производной, в ней появляется второе слагаемое: то, как базисный вектор меняется, при изменении координаты. Изменение (производная) j-го базисного вектора вдоль i-ой координаты это тоже вектор, и его можно разложить в линейную комбинацию местных базисных векторов, т.е. сумму по k от k-го базисного вектора на некий коэффициент Г_kij. Такой коэффициент называется символом Кристоффеля.

Параллельный перенос вектора (т.е. с сохранением направления) вдоль пути x(λ) можно понимать так, что у нас есть ф-я, дающая некий вектор в каждой точке, и в начальной точке пути ее значение равно нашему вектору, что мы хотим перенести, и вдоль всего пути ковариантная производная этой ф-ии нулевая, т.е. у нас вектор не меняется с учетом геометрии (сохраняет направление, изменяя свое выражение в терминах локальных базисных векторов). Такая идея дает нам уравнение для параллельного переноса:


Теперь вспомним, что геодезическая получается параллельным переносом касательного вектора, а его можно для пути x(λ) получить через производную x(λ) по λ. Так мы приходим к уравнению геодезической:

Т.е. надо лишь знать заветные символы Кристоффеля. Тут надо вспомнить про краеугольный камень искривленных пространств - метрический тензор. Это штука, используемая для вычисления скалярных произведений и, как следствие, длин векторов. В кривом пространстве теорема Пифагора из школы не работает, там квадрат гипотенузы получается не просто суммой квадратов катетов, а суммой их попарных произведений (в том числе с собой, когда получаются те самые квадраты катетов) с некоторыми коэффициентами. В двумерном пространстве метрический тензор кодируется симметричной матрицей 2х2. В плоском пространстве это единичная матрица, тогда получается знакомая теорема Пифагора. Кроме длин метрический тензор нужен для скалярных произведений, а значит и углов. Если мы пару векторов передвинем параллельным переносом, с сохранением направления, то угол между ними должен сохраниться. Так мы можем прийти к идее, что ковариантная производная метрического тензора должна быть равна нулю. Выразив ее с использованием символов Кристоффеля и воспользовавшись симметричностью обоих объектов, можно выразить символы Кристоффеля через значения метрического тензора, а точнее его производных:

Тут g с индексами внизу - это метрический тензор, а с индексами вверху - обратный к нему.
Дело за малым - найти метрику для нашего искривленного пространства. Тут можно заметить, что вычисляя скалярное произведение двух векторов, мы можем их представить линейной комбинацией базисных, и свести все к скалярным произведениям базисных векторов, и увидим, что значения в матрице метрики получаются как результаты скалярных произведений базисных векторов. В декартовых координатах для евклидового пространства там получается просто единичная матрица, как и ожидалось. А вот в нашем случае, когда мы искривленное пространство изначально задали как некую поверхность, вложенную в евклидово 3D пространство, произведение базисных векторов внутри поверхности (таких как "на восток" и "на север") получается через скалярное произведение их выражений в 3D, где скалярное произведение уже работает как мы привыкли в простом евклидовом пространстве. А как выражается базис 2D поверхности в терминах окружающего 3D? Правильно, через частные производные уравнения поверхности (x,y,z)=f(u,v): вектор "на север" получается, если менять только широту, т.е. берем производную по ней, а "на восток" - производной по долготе.

Продолжение следует.

Tags:

Comments

( 11 comments — Leave a comment )
nivanych
May. 29th, 2018 06:03 am (UTC)
> Одномерные пространства не имеют кривизны.
> А вот двумерные уже могут.

А что такое 2-мерное пространство? ;-)
thedeemon
May. 29th, 2018 07:15 am (UTC)
2D manifold имеется в виду.
nivanych
May. 29th, 2018 07:17 am (UTC)
Т.е., без края.
thedeemon
May. 29th, 2018 07:38 am (UTC)
Почему ж, никто не мешает. Вот горизонт ЧД у меня там - вполне себе край. Дальше поверхность не идет.
nponeccop
May. 29th, 2018 04:18 pm (UTC)
Ну у него там не 2-мерное пространство, поскольку видны внутренние точки 2д-объектов, которые понятно ни при какой проекции увидеть нельзя. Короче 2д пространство оказывается ещё хуже в плане интуиции чем 4д.
nponeccop
May. 31st, 2018 11:31 pm (UTC)
> Одномерные пространства не имеют кривизны.

Можно диаграммы минковского лепить 1д. Ну то есть кривой спейстайм с 1д-пространственной координатой, являющейся "радиусом".

Там координатные сетки неплохо выходят.
thedeemon
Jun. 1st, 2018 05:01 am (UTC)
Можно, да. Это мой любимый способ рассказывать про гравитацию: сперва посмотреть на геодезические на сфере, потом предложить одно из двух измерений считать временем, т.е. получить кривое простраство-время с 1д пространством и 1д временем. Там знак не тот, конечно, но принцип в целом работает.
asper
Jun. 17th, 2018 09:25 pm (UTC)
Долго вертел глобус, но что-т не смог увидеть пути из Пакистана на Камчатку. Через пролив Дрейка имеется в виду что ли? Так вроде дуга большого круга должна севернее проходить, через Южную Америку.
thedeemon
Jun. 18th, 2018 06:04 am (UTC)
Под Африкой и Южной Америкой, да. Вот тут есть карта и обсуждение:
https://www.reddit.com/r/MapPorn/comments/15mwai/the_longest_straight_line_you_can_sail_almost/
asper
Jun. 19th, 2018 05:06 am (UTC)
о, спасибо!
doctor_notes
Jan. 17th, 2019 06:20 pm (UTC)
С интуитивным (а не математическим) пониманием символов Кристоффеля у меня какой-то особенный трындец. Сегодня понимаю. На следующей неделе снова не понимаю. И такой вот мультивибратор уже хрен знает сколько времени.
( 11 comments — Leave a comment )