Как преобразовать одни сферические координаты в другие?


БлогМатематика небесной сферыСферическая геометрия
Преобразование сферических координат

7 мая 2024 г. 21:12 Алексей Бореалис (Марк Русборн) 5 мин. на чтение


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

[toc]

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

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

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

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

Вектор имеет

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

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

$$\vec{v} = x \textbf{X} + y \textbf{Y} + z\textbf{Z}$$

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

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

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

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

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

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

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

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

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

$$ х \textbf{X} = x \cos\alpha~ \textbf X_\text{rot} - x \sin\alpha~ \textbf Y_\text{rot} $$

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

$$ y \textbf{Y} = y \sin\alpha~ \textbf X_\text{rot} + y \cos\alpha~ \textbf Y_\text{rot} $$

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

$$ \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} $$

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

$$ \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$. По-сути, в обратном преобразовании мы поворачиваем вторую систему на такой же угол, но в обратном направлении, чтобы получить исходную систему координат. Это дает нам:

$$ \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)$, в частности, следует одно жизненно важное уравнение, которое мы будем регулярно использовать. Обозначим сферическую координату вектора $\vec{v}$ (его долготу) в плоскости $\textbf X_\text{rot} \textbf Y_\text{rot}$ новой системы координат через $\beta$ (см. рисунок 3 ниже), т.е.

$$ \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 β

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

$$ \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)$ и перепишем ее в более явной форме:

$$ \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} $$

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

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

$$ \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) $$

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

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

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

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

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

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

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

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

$$\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} $$

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

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

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

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

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

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

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

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

$$ \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)$, имеет вид:

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

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

$$ \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)$.

Шаг 2

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

$$ \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'')$ в терминах сферические углов с помощью уравнения (2) из предыдущей статьи. Вы завершаете преобразование. Задача решена.


Алексей Бореалис (Марк Русборн)

Алексей Бореалис (Марк Русборн)

Магистр наук (MSc), профессиональный астролог (QHC, DMA). Об авторе