Преобразование сферических координат


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

16 февраля 2023 г. 4:23 Марк Русборн 5 мин. на чтение


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

[toc]

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

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

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

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

Вектор имеет

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

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

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

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

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

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

вращение осей xy
Рис. 1 - Вращение системы координат в плоскости XY.

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

$$ \vec{v} = \grave{x} \vec{X_{rot}} + \grave{y} \vec{Y_{rot}} + \grave{z} \vec{Z_{rot}} $$

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

вращение осей xy
Рис. 2 - указатель на координату x.

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

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

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

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

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

$$ \begin{aligned} \vec{v} &= \left(x \cos\alpha + y \sin\alpha\right) \vec{X_{rot}} \\ &+ \left( -x \sin\alpha + y\cos\alpha \right) \vec{Y_{rot}} \\ &+ z\vec{Z_{rot}}\\ \vec{v} &= \grave{x} \vec{X_{rot}} + \grave{y} \vec{Y_{rot}} +\grave{z}\vec{Z_{rot}} \end{aligned} $$

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

$$ \begin{cases} \grave{x} = x\cos\alpha + y \sin\alpha \\ \grave{y} = -x \sin\alpha + y\cos\alpha \\ \grave{z} = z \end{cases}\tag{1} $$

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

$$ \begin{cases} x = \grave{x}\cos\alpha - \grave{y} \sin\alpha \\ y = \grave{x} \sin\alpha + \grave{y}\cos\alpha \\ z = \grave{z} \end{cases}\tag{2} $$

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

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

$$ \begin{cases} x = \cos(\alpha + \beta) \\ y = \sin(\alpha + \beta) \\ \grave{x} = \cos\beta \\ \grave{y} = \sin\beta \\ \end{cases} $$

вращение осей xy
Рис. 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} $$

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

Если вместо обозначения координат вектора $(x, y, z)$ использовать обозначение $(v_1, v_2, v_3)$, мы можем записать $(2)$ в следующем виде:

$$ \begin{cases} \grave{v_1} =& \cos\alpha~ v_1 &+ & \sin\alpha~v_2 &+& 0~v_3 \\\ \grave{v_2} = &-\sin\alpha~v_1 &+ &\cos\alpha~ v_2 &+& 0~v_3 \\\ \grave{v_3} =& 0~ v_1 &+ &0~ v_2 &+& 1~ v_3 \end{cases} $$

или еще проще:

$$ \grave{v_i} = \sum_{k=1}^3 A_{ik} v_k $$

где

$$\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}$ или $A_{ij}$ — это так называемая матрица вращения в плоскости $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] $$

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

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

$$\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$, а затем на угол $\beta$ в плоскости $\grave{X}\grave{Z}$, мы применим два преобразования подряд.

поворот разных осей
Рис. 4 - поворот в 2 шага.

Сначала выразим координаты $v_i$ вектора $\vec{v}$ в системе координат, повернутой в плоскости $XY$.

$$ {v_i^\alpha} = \sum_{k=1}^3 A_{ik} v_k \\ \mathbf{A} = \left[\begin{array} {rrr} \cos\alpha & \sin\alpha & 0 \\ -\sin\alpha & \cos\alpha & 0 \\ 0 & 0 & 1 \end{array}\right] $$

Затем мы выразим полученные координаты ${v_i^\alpha}$ вектора $\vec{v}$ в новой системе координат, повернутой в плоскости $XZ$:

$$ {v_i^{\alpha\beta}} = \sum_{k=1}^3 B_{ik} v_k^\alpha \\ \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)$ через $(v_1, v_2, v_3)$

Шаг 2

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

$$ {\grave{v_i}} = \sum_{k,j=1}^3 B_{ij} A_{jk} v_k $$

Шаг 3

Наконец, выразите новые декартовы координаты ${\grave{v_i}}$ в терминах сферические углов с помощью уравнения (2) из предыдущей статьи. Вы завершаете преобразование. Задача решена.


Марк Русборн

Марк Русборн

Поиск по статьям