В предыдущей статье о базовой тригонометрии для астрологов мы вывели формулы для преобразования сферических координат в декартовы. В этой статье мы познакомимся с уравнениями перевода самих сферических координат из одной системы в другую. Это поможет нам решить поставленную ранее задачу перевода эклиптических координат в экваториальные, что необходимо для расчета первичных дирекций.

Вектор в декартовых координатах

Наш план работы будет таков. Для начала мы преобразуем сферические координаты небесного объекта в декартовы координаты в той же системе (скажем, в плоскости эклиптики) с помощью уравнения (2) из предыдущей статьи.

Далее мы перейдем в новую систему (например из плоскости эклиптики в плоскость экватора) также в терминах декартовых координат. На последнем шаге мы снова переведм декартовы координаты уже в новой системе обратно в сферические углы. Таким образом мы завершим искомое преобразование одних сферических координат в другие.

Для удобства мы введем понятие вектора в декартовых координатах как указателя на объект в привычной системе координат XYZ\textbf{XYZ}.

Вектор имеет

  • начальную точку с координатами (0,0,0)(0, 0, 0)
  • конечную точку с координатами (x,y,z)(x, y, z), которая совпадает с местоположением объекта в пространстве.

Обозначим вектор буквой v\vec{v} и запишем его следующем виде:

v=xX+yY+zZ\vec{v} = x \textbf{X} + y \textbf{Y} + z\textbf{Z}

В этой нотации мы имеем в виду, что вектор имеет протяженность в X\textbf{X} единиц в направлении оси X\textbf{X}, протяженность в Y\textbf{Y} единиц вдоль оси Y\textbf{Y} и Z\textbf{Z} единиц вдоль оси Z\textbf{Z} .

Вращение системы координат

Что произойдет, если мы повернем саму систему координат на угол α\alpha в плоскости XY\textbf{XY}?

X Y α α x y y' x' X rot Y rot v

В исходной системе XYZ\textbf{XYZ} вектор имеет координаты (x,y)(x, y), а в новой (повернутой) системе он имеет координаты (x,y,z)(x^\prime, y^\prime, z^\prime) , т.е.

v=xXrot+yYrot+zZrot\vec{v} = x^\prime \textbf X_\text{rot} + y^\prime \textbf Y_\text{rot} + z^\prime \textbf Z_\text{rot}

Рассмотрим X\textbf{X}-ю часть вектора v\vec{v}, а именно протяженность xXx \textbf{X}. По-сути, это указатель на координату xx самого вектора. А указатель также является вектором.

α x Y rot X rot x cos(α) x sin(α)

Мы можем спроецировать этот указатель (то есть вектор) на оси Xrot\textbf X_\text{rot} и Yrot\textbf Y_\text{rot}. Мы помним из формулы (1) предыдущей статьи, что эти проекции равны xcosαx \cos\alpha и xsinα-x \sin\alpha. Итак, мы можем написать:

хX=xcosα Xrotxsinα Yrotх \textbf{X} = x \cos\alpha~ \textbf X_\text{rot} - x \sin\alpha~ \textbf Y_\text{rot}

Таким же образом

yY=ysinα Xrot+ycosα Yroty \textbf{Y} = y \sin\alpha~ \textbf X_\text{rot} + y \cos\alpha~ \textbf Y_\text{rot}

Мы не меняли ось Z\textbf{Z}, поэтому zZ=zZrotz\textbf Z = z\textbf Z_\text{rot}. Собрав все вместе, мы имеем:

v=(xcosα+ysinα)Xrot +(xsinα+ycosα)Yrot +zZrot v=xXrot+yYrot+zZrot\begin{aligned} \vec{v} &= \left(x \cos\alpha + y \sin\alpha\right) \textbf X_\text{rot} \\\ &+ \left( -x \sin\alpha + y\cos\alpha \right) \textbf Y_\text{rot} \\\ &+ z\textbf Z_\text{rot}\\\ \vec{v} &= x^\prime \textbf X_\text{rot} + y^\prime \textbf Y_\text{rot} +z^\prime\textbf Z_\text{rot} \end{aligned}

Это означает, что:

{x=xcosα+ysinα y=xsinα+ycosα z=z(1)\begin{cases} x^\prime = x\cos\alpha + y \sin\alpha \\\ y^\prime = -x \sin\alpha + y\cos\alpha \\\ z^\prime = z \end{cases}\tag{1}

Для обратного преобразования нам нужно заменить α\alpha на α-\alpha. По-сути, в обратном преобразовании мы поворачиваем вторую систему на такой же угол, но в обратном направлении, чтобы получить исходную систему координат. Это дает нам:

{x=xcosαysinα y=xsinα+ycosα z=z(2)\begin{cases} x = x^\prime\cos\alpha - y^\prime \sin\alpha \\\ y = x^\prime \sin\alpha + y^\prime\cos\alpha \\\ z = z^\prime \end{cases}\tag{2}

Синус и косинус двух углов

Из (2)(2), в частности, следует одно жизненно важное уравнение, которое мы будем регулярно использовать. Обозначим сферическую координату вектора v\vec{v} (его долготу) в плоскости XrotYrot\textbf X_\text{rot} \textbf Y_\text{rot} новой системы координат через β\beta (см. рисунок 3 ниже), т.е.

{x=cos(α+β) y=sin(α+β) x=cosβ y=sinβ \begin{cases} x = \cos(\alpha + \beta) \\\ y = \sin(\alpha + \beta) \\\ x^\prime = \cos\beta \\\ y^\prime = \sin\beta \\\ \end{cases}
X Y α x y y' x' X rot Y rot v β

Тогда сразу получаем уравнения для синуса и косинуса суммы двух углов:

cos(α+β)=cosαcosβsinαsinβ sin(α+β)=sinαcosβ+sinβcosα(3)\begin{aligned} &\cos(\alpha + \beta) = \cos\alpha\cos\beta - \sin\alpha\sin\beta \\\ &\sin(\alpha + \beta) = \sin\alpha\cos\beta + \sin\beta\cos\alpha \end{aligned}\tag{3}

Матрицы вращения

Давайте вернемся к формуле (2)(2) и перепишем ее в более явной форме:

{x=cosα×x+sinα×y+0×zy=sinα×x+cosα×y+0×zz=0×v+0×y+1×z\begin{cases}& x' = \cos\alpha &\times& x &+& \sin\alpha &\times& y &+& 0 &\times& z \\ & y' = -\sin\alpha &\times&x &+& \cos\alpha &\times& y &+& 0 &\times& z \\ & z' = 0 &\times& v &+& 0 &\times& y &+& 1 &\times& z\end{cases}

У нас есть повторяющаяся схема — мы последовательно умножаем координаты xx, yy и zz на определенные коэффициенты в первой, второй и третьей строках, а затем суммируем произведения этих умножений.

Мы можем отдельно перечислить эти коэффициенты для 1-й, 2-й и 3-й строк в квадратных скобках и выразить ту же идею более кратко:

(x y z)=[cosαsinα0 sinαcosα0 001]×(x y z)\left(\begin{array}{r}x' \\\ y' \\\ z'\end{array}\right) = \left[\begin{array} {rrr} \cos\alpha & \sin\alpha & 0 \\\ -\sin\alpha & \cos\alpha & 0 \\\ 0 & 0 & 1 \end{array}\right] \times \left(\begin{array}{r}x\\\ y\\\ z\end{array}\right)

Это более удобное представление этих трех уравнений, и эта компактность облегчит нам жизнь. Мы произносим это так: если мы умножим координаты xx, yy и zz на эти коэффициенты, то получим новые координаты вектора в системе координат, повернутой на угол α\alpha.

Эти коэффициенты обычно называются матрицей вращения, и выражение выше представляет собой умножение координат (x,y,z)(x, y, z) на матрицу вращения, что дает новые координаты (x,y,z)(x', y', z').

Для вращения в плоскости XY\textbf{XY} на угол α\alpha мы используем следующую матрицу вращения

A=[cosαsinα0 sinαcosα0 001](4)\mathbf{A} = \left[\begin{array} {rrr} \cos\alpha & \sin\alpha & 0 \\\ -\sin\alpha & \cos\alpha & 0 \\\ 0 & 0 & 1 \end{array}\right]\tag{4}

A\mathbf{A} — это так называемая матрица вращения в плоскости XY\textbf{XY}, т. е. двумерный массив коэффициентов, на которые мы умножаем координаты вектора, чтобы перейти из исходной системы координат в новую (повернутую).

Для обратного преобразования мы меняем α\alpha на α-\alpha, что дает инвертированную (то есть обратную) матрицу, симметричную оригинальной:

AT=[cosαsinα0 sinαcosα0 001]\mathbf{A^T} = \left[\begin{array} {rrr} \cos\alpha & -\sin\alpha & 0 \\\ \sin\alpha & \cos\alpha & 0 \\\ 0 & 0 & 1 \end{array}\right]

Таким же образом матрицы вращения в плоскостях XZ\textbf{XZ} и YZ\textbf{YZ} имеют вид:

AXZ=[cosα0sinα 010 sinα0cosα](5)\mathbf{A}_{XZ} = \left[\begin{array} {rrr} \cos\alpha & 0 & \sin\alpha \\\ 0 & 1 & 0 \\\ -\sin\alpha & 0 & \cos\alpha \end{array}\right]\tag{5} AYZ=[100 0cosαsinα 0sinαcosα]\mathbf{A}_{YZ} = \left[\begin{array} {rrr} 1 & 0 & 0 \\\ 0 & \cos\alpha & \sin\alpha \\\ 0 & -\sin\alpha & \cos\alpha \end{array}\right]

Последовательные вращения

Эта краткая нотация для преобразования декартовых координат через матрицы вращения дает нам значительное преимущество. Теперь мы можем эффективно выполнять несколько последовательных поворотов в разных плоскостях и выражать их с помощью простой формулы.

Предположим, мы хотим повернуть систему координат на угол α\alpha в плоскости XY\textbf{XY}, а затем повернуть новую систему координат на угол β\beta в плоскости XZ\textbf X' \textbf Z'. Сначала мы получаем координаты вектора после вращения на угол α\alpha:

(x\y\z)=A×(x\y\z)\left(\begin{array}{c}x'\\\y'\\\z'\end{array}\right) = \mathbf{A} \times \left(\begin{array}{c}x\\\y\\\z\end{array}\right)

Затем мы поворачиваем этот вектор на угол β\beta во второй плоскости:

(x\y\z)=B×(x\y\z)\left(\begin{array}{c}x''\\\y''\\\z''\end{array}\right) = \mathbf{B} \times \left(\begin{array}{c}x'\\\y'\\\z'\end{array}\right)

Мы можем выразить это еще проще:

(x\y\z)=B×A×(x\y\z)\left(\begin{array}{c}x''\\\y''\\\z''\end{array}\right) = \mathbf{B} \times \mathbf{A} \times \left(\begin{array}{c}x\\\y\\\z\end{array}\right)

Как видите, мы просто умножаем матрицы в нужной последовательности. Здесь первая матрица поворота, согласно (4)(4), имеет вид:

A=[cosαsinα0 sinαcosα0 001]\mathbf{A} = \left[ \begin{array}{rrr}\cos\alpha & \sin\alpha & 0 \\\ -\sin\alpha & \cos\alpha & 0 \\\ 0 & 0 & 1\end{array} \right]

А вторая матрица поворота, согласно (5)(5), имеет вид:

B=[cosβ0sinβ 010 sinβ0cosβ]\mathbf{B} = \left[ \begin{array}{rrr}\cos\beta & 0 & \sin\beta \\\ 0 & 1 & 0 \\\ -\sin\beta & 0 & \cos\beta \end{array} \right]

Как видите, мы можем очень компактно записывать преобразования из одной системы координат в другую.

Вуаля, у нас есть декартовы координаты исходного вектора в новой системе координат. На финальном шаге нам осталось лишь преобразовать новые декартовы координаты в сферические углы (в уже новой, повернутой, системе координат).

Для этого воспользуемся уравнением (2) из предыдущей статьи. И мы получим новые сферические координаты. Это решает поставленную нами в прошлой статье задачу.

Подведем итоги

Теперь вы знакомы с векторными объектами в декартовых координатах и с матрицами вращения.

Вы также знаете, что общий подход к преобразованию одной сферической системы в другую состоит из 3 шагов.

Шаг 1

Вам надо выразить сферические углы исходной системы координат в декартовы координаты с помощью уравнения (2) из предыдущей статьи. Мы обозначаем декартовы координаты вектора через (x,y,z)(x, y, z).

Шаг 2

Затем вам надо повернуть систему координат на угол α\alpha, а затем на β\beta вдоль нужных осей с помощью матриц вращения. Вы получите координаты того же вектора, только в рамках новой (повернутой) системы координат:

(x\y\z)=B×A×(x\y\z)\left(\begin{array}{c}x''\\\y''\\\z''\end{array}\right) = \mathbf{B} \times \mathbf{A} \times \left(\begin{array}{c}x\\\y\\\z\end{array}\right)

Шаг 3

Наконец, выразите новые декартовы координаты (x,y,z)(x'', y'', z'') в терминах сферические углов с помощью уравнения (2) из предыдущей статьи. Вы завершаете преобразование. Задача решена.