Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 Матрица поворота вокруг пространственной диагонали куба
Итак, нужно получить сабж. Диагоналей четыре штуки, вокруг каждой из них интересуют два поворота (на 120 и 240 градусов), которые совмещают куб с самим собой. Знаю, что в результате поменяются местами координаты вершин куба и/или поменяются знаки у двух из них. Хочу получить этот результат строго. Рассуждаю так. Оси системы координат: х - вправо, у - вверх, z - на нас. Рассмотрим пространственную диагональ, которая имеет положительные проекции на Ox и Oy и отрицательную - на Oz. Поворотом на -45 градусов вокруг Oy добьёмся совпадения проекции диагонали на плоскость XZ с осью Ox. Далее, поворотом на 45 градусов вокруг Oz совместим диагональ с осью Oy. Теперь производим поворот вокруг Oy на 120 градусов. Далее в обратном порядке возвращаем оси в исходное положение. В соответствии с этим у меня получается такое произведение матриц:

$
\begin{pmatrix}
  \sqrt{2}/2 & 0 & -\sqrt{2}/2 \\
  0 & 1 & 0 \\
  \sqrt{2}/2 & 0 & \sqrt{2}/2
\end{pmatrix}
\begin{pmatrix}
  \sqrt{2}/2 & -\sqrt{2}/2 & 0 \\
  \sqrt{2}/2 & \sqrt{2}/2 & 0 \\
  0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
  -1/2 & 0 & -\sqrt{3}/2 \\
  0 & 1 & 0 \\
  \sqrt{3}/2 & 0 & -1/2
\end{pmatrix}\times\\
\times\begin{pmatrix}
  \sqrt{2}/2 & \sqrt{2}/2 & 0  \\
  -\sqrt{2}/2 & \sqrt{2}/2 & 0 \\
  0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
  \sqrt{2}/2 & 0 & \sqrt{2}/2 \\
  0 & 1 & 0 \\
  -\sqrt{2}/2 & 0 & \sqrt{2}/2
\end{pmatrix}.
$

Здесь (справа налево):
1) поворот вокруг Y на -45;
2) поворот вокруг Z на 45;
3) поворот вокруг Y на 120;
4) поворот вокруг Z на -45;
5) поворот вокруг Y на 45.

Но в результате перемножения получается что-то непотребное (а нужно, чтобы матрица содержала только нули и плюс/минус единицы). Подскажите, пожалуйста, где я ошибся.

 Re: Матрица поворота вокруг пространственной диагонали куба
Аватара пользователя
Есть два подхода. Один - копаться и выяснять, что тут не так, а другой - выкинуть и сделать сразу нормально.
Одна из этих штук (та, которая торчит в первом октанте) переводит X в Y, Y в Z, а Z в X. Можете написать её матрицу?

-- Чт, 2012-02-23, 11:43 --

А, так Вы это уже знаете. Ну а зачем тогда всё?

-- Чт, 2012-02-23, 11:46 --

Просто для интереса, что ли?
Ну, второй угол там не 45° (ведь это, по сути, угол между большой диагональю и дном).

 Re: Матрица поворота вокруг пространственной диагонали куба
Хочу разобраться с матричными преобразованиями на этом примере. Так я ошибся в значениях углов? Какие значения будут правильными?

 Re: Матрица поворота вокруг пространственной диагонали куба
Аватара пользователя
Может, будет полезной такая информация. Пусть матрица $A$ преобразует вектор $p$ в вектор $q=Ap$. Запишем в компонентах:
$$\begin{bmatrix}q_1\\q_2\\q_3\end{bmatrix}=\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix}\begin{bmatrix}p_1\\p_2\\p_3\end{bmatrix}$$
Возьмем в качестве вектора $p$ базисный вектор (орт) $e_x$. Он имеет компоненты $(1, 0, 0)$. Подставляя, получим:$$\begin{bmatrix}q_1\\q_2\\q_3\end{bmatrix}=\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix}\begin{bmatrix}1\\0\\0\end{bmatrix}=\begin{bmatrix}a_{11}\\a_{21}\\a_{31}\end{bmatrix}$$
Аналогично можно проделать с другими базисными векторами. Получается, что матрица преобразует векторы $e_x, e_y, e_z$ соответственно в $$\begin{bmatrix}a_{11}\\a_{21}\\a_{31}\end{bmatrix}\,,\;\begin{bmatrix}a_{12}\\a_{22}\\a_{32}\end{bmatrix}\,,\;\begin{bmatrix}a_{13}\\a_{23}\\a_{33}\end{bmatrix}$$Отсюда следует потрясающий вывод: столбцы матрицы -- это векторы, в которые переходят $e_x, e_y, e_z$ при преобразовании. При этом преобразование не обязано быть поворотом.

А ведь несложно понять, во что перейдет, скажем, $e_y$ при каком-то из интересующих Вас поворотов. Значит, и матрицу можно выписать "в уме". Возьмем пример, рекомендованный ИСН:$$e_x\mapsto e_y\,,\; e_y\mapsto e_z\,,\; e_z\mapsto e_x$$Тогда матрица будет такой:$$A=\begin{bmatrix}0&0&1\\1&0&0\\0&1&0\end{bmatrix}$$

 Re: Матрица поворота вокруг пространственной диагонали куба
svv
Спасибо, но это мне известно.

Общеизвестно, что для поворота точки вокруг произвольной оси, проходящей через начало координат, вначале производят поворот (или, вообще говоря, два поворота) с целью совместить ось с какой-либо из осей координат, затем поворачивают точку вокруг этой оси, а потом возвращают систему координат на место. Скорее всего, в моих рассуждениях (см. выше) неправильно выполнено совмещение этой произвольной оси с осью Oy. Но где именно ошибка?

 Re: Матрица поворота вокруг пространственной диагонали куба
Аватара пользователя
physchemist писал(а):
Общеизвестно, что для поворота точки вокруг произвольной оси, проходящей через начало координат, вначале производят поворот (или, вообще говоря, два поворота) с целью совместить ось с какой-либо из осей координат, затем поворачивают точку вокруг этой оси, а потом возвращают систему координат на место.
Не хотелось бы, чтобы Вы думали, что этот сложный способ -- единственный. Я описал выше другой, а вот ещё третий.

Пусть ось вращения задается единичным вектором $\mathbf n$. Требуется повернуть вектор $\mathbf p$ вокруг оси $\mathbf n$ на угол $\alpha$.
Разложим $\mathbf p$ на параллельную $\mathbf n$ и перпендикулярную $\mathbf n$ части:
$\mathbf p=\mathbf p_{\parallel}+\mathbf p_{\perp}$
$\mathbf p_{\parallel}=\mathbf n(\mathbf n\cdot\mathbf p)$
$\mathbf p_{\perp}=\mathbf p-\mathbf n(\mathbf n\cdot \mathbf p)$
Построим вектор $\mathbf s$, получаемый поворотом $\mathbf p_{\perp}$ вокруг оси $\mathbf n$ на $\pi/2$ (против часовой стрелки, если смотреть навстречу оси):
$\mathbf s=\mathbf n\times \mathbf p_{\perp}=\mathbf n\times \mathbf p$
Тогда поворот $\mathbf p_{\perp}$ на произвольный угол $\alpha$ даст
$\mathbf p_{\perp}\cos\alpha+\mathbf s\sin\alpha$
Складывая с не изменившейся параллельной частью, найдем результат:
$\mathbf q=\mathbf p_{\parallel}+\mathbf p_{\perp}\cos\alpha+\mathbf s\sin\alpha$
$\mathbf q=\mathbf p\cos\alpha+\mathbf n(\mathbf n\cdot \mathbf p)(1-\cos\alpha)+\mathbf n\times \mathbf p\sin\alpha$

 Re: Матрица поворота вокруг пространственной диагонали куба
physchemist в сообщении #541937 писал(а):
Общеизвестно, что для поворота точки вокруг произвольной оси, проходящей через начало координат, вначале производят поворот (или, вообще говоря, два поворота) с целью совместить ось с какой-либо из осей координат, затем поворачивают точку вокруг этой оси, а потом возвращают систему координат на место.
Ну, это кто-то однажды проделал, потом выписал людям получившуюся формулу, и люди ей пользуются, безо всяких "вначале... затем... а потом". Здесь, например, я её приводил, формулу для матрицы поворота.

-- 23 фев 2012, 22:09:24 --

physchemist, чисто с учётом Вашего ника (что учитывать на форуме категорически запрещается :-) ) отмечу, что в анналах имеется тема Матрица поворота для молекулы. О её (не)информативности ничего не помню.

 Re: Матрица поворота вокруг пространственной диагонали куба
svv
Хм... Это формула Родрига? Спасибо, буду разбираться.

Алексей К.
И Вам спасибо.

 Re: Матрица поворота вокруг пространственной диагонали куба
Аватара пользователя
$\mathbf q=\mathbf p\cos\alpha+\mathbf n(\mathbf n\cdot \mathbf p)(1-\cos\alpha)+\mathbf n\times \mathbf p\sin\alpha$
Не знал, что у этой формулы может быть специальное название.
Несложно перебросить мостик от неё к той формуле, что привёл Алексей К.

Запишем сначала в индексных ("тензорных") обозначениях:
$q_i=p_i\cos\alpha+n_i n_k p_k (1-\cos\alpha)+\varepsilon_{ijk}n_j p_k\sin\alpha$ ,
где $\varepsilon_{ijk}$ -- символ Леви-Чивита.

Отсюда компоненты матрицы преобразования равны
$a_{ik}=\delta_{ik}\cos\alpha+n_i n_k (1-\cos\alpha)+\varepsilon_{ijk}n_j \sin\alpha$ .
Это сумма трех матриц:
$\cos\alpha\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix}\;+\;(1-\cos\alpha)\begin{bmatrix}n_1 n_1&n_1 n_2&n_1 n_3\\n_2 n_1&n_2 n_2&n_2 n_3\\n_3 n_1&n_3 n_2&n_3 n_3\end{bmatrix}\;+\;\sin\alpha\begin{bmatrix}0&-n_3&+n_2\\+n_3&0&-n_1\\-n_2&+n_1&0\end{bmatrix}$
Складывая матрицы, получим результат, который привёл Алексей К., лишь в иных обозначениях.

 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group