Мне стало интересно, как будет выглядеть такая Вселенная, если перемещаться по ней в очень маневренном корабле. Для этого я решил написать игру с простейшим сюжетом — есть Вселенная, в ней несколько звёзд, которые надо посетить и погасить (просто пролетев рядом).
Первый вопрос был — какую выбрать форму пространства-времени. Герои трилогии быстро пришли к выводу, что Вселенная должна быть конечной, но долго сомневались, какой именно. В итоге они пришли к выводу, что это должна быть четырёхмерная сфера (т. е. сфера в 5-мерном пространстве). Правда, им по каким-то причинам понадобилось, чтобы в ней были области с отрицательной кривизной (иначе возникали какие-то проблемы с энтропией), то есть, сфера должна быть искаженной формы. Но я для простоты взял обычную однородную сферу.
Положение и скорость корабля описываются парой перпендикулярных векторов. Вектор P определяет текущее положение в пространстве времени, V — направление дрейфа (скорость дрейфа всегда одинакова). Кроме того, нужны три вектора X, Y, Z, определяющие ориентацию корабля в пространстве (и изображение на экране). Все вектора берутся в 5-мерном пространстве, имеют длину 1 и перпендикулярны друг другу. Таким образом, корабль описывается ортогональной матрицей 5×5.
Оказывается, что все движения и манёвры корабля в этом представлении — всего лишь повороты матрицы в координатных плоскостях. Общий дрейф — поворот в плоскости (P,V) (векторы X,Y,Z остаются неизменными), разгон и торможение в 3D — повороты в плоскости (V,Z), боковые ускорения — повороты в (V,X) и в (V,Y), смена ориентации корабля — вращения в (X,Z) и (Y,Z). Скорости вращения определяются общими параметрами игры, и их можно менять на панели управления.
Траектория звезды — тоже пара перпендикулярных векторов (P0,V0). В любой момент времени T (по часам самой звезды) её положение будет P1=P0×cos(T)+V0×sin(T), а скорость дрейфа — V1=V0·cos(T)―P0·sin(T). Чтобы получить изображение звезды, нам нужно определить параметры фотона, выпущенного из точки (P1,V1) и долетевшего до нашей точки (P,V): какого он будет цвета и с какой стороны прилетит. Для этого нам достаточно соединить точки P и P1 дугой большого круга и посмотреть, в какую сторону она выходит из точки P и с какой стороны входит в P1.
Для простоты будем считать, что фотон не может пролететь больше четверти круга. В самом деле, в книге ничего не сказано ни об изображении звезды, видимом с ночной стороны планеты, ни о фантомных звёздах с противоположного края Вселенной, свет от которых сфокусировался в окрестности мира героев трилогии. Это значит, что нам достаточно рассмотреть случай, когда угол между векторами P и P1 острый, т. е. (P,P1)>0. Оказывается, что во-первых, нужно выполнение условия (P,V1)>0 — иначе звезде пришлось бы излучать фотон в прошлое, во-вторых, (P1,V)>0 — иначе фотон прилетит к нам из будущего, и без специальных средств мы его увидеть не сможем.
После этого нам достаточно спроектировать вектор P1 на пространство (V,X,Y,Z) (Касательное к сфере в точке P). Пусть получается вектор S=(v,x,y,z). Тогда длина L вектора S соответствует расстоянию, которое пролетел фотон (точнее, равна его синусу), величина v/L — косинус угла между траекторией фотона и нашей траекторией в пространстве-времени, который определяет цвет фотона, а (x,y,z) — направление, с которого фотон прилетел — и мы можем изобразить его привычными методами.
Оказывается, что ловить звёзды совсем не просто. Простейший случай — когда звезда близко, и наши скорости отличаются не очень сильно (как было на первом рисунке с конусами). С помощью боковых двигателей мы без труда можем устранить поперечные скорости. Звезда на экране из радужной полоски превратится в точку, наши траектории в пространстве-времени окажутся в одной плоскости, и мы будем лететь к звезде ()или от неё — заранее сказать трудно).
Естественное желание — нацелиться на звезду и начать разгоняться. Но что при этом произойдёт?
Видно, что участок траектории, который мы видим, становится всё дальше — фактически, мы начинаем видеть всё более далёкое прошлое звезды. Кроме того, видимая звезда удаляется, и становится всё меньше и тусклее. И если у нас есть хоть небольшое боковое смещение, то мы увидим, что красная часть траектории сокращается, прекращаясь на зелёном, а потом и на синем участке спектра.