Что такое матрица поворота
Перейти к содержимому

Что такое матрица поворота

  • автор:

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

Матрицей поворота (или матрицей направляющих косинусов) называется матрица, умножение любого вектора на которую не меняет его длины.

Матрица поворота в двумерном пространстве

В двумерном пространстве поворот можно описать одним углом θ . Положительным углам соответствует вращение против часовой стрелки.

 M(\theta) = \begin</p>
<p> \cos &amp; -\sin \\ \sin &amp; \cos \end » width=»» height=»» /></p>
<p>Сам поворот происходит путём умножения вектора (описывающего вращаемую точку) на матрицу:</p><div class='code-block code-block-1' style='margin: 8px 0; clear: both;'>
<!-- 1joomlaumnik -->
<script src=

 \vec<p\,></p>
<p>» width=»» height=»» />.</p>
<h3>Матрица поворота в трёхмерном пространстве</h3>
<p>Матрицами вращения вокруг оси декартовой правосторонней системы координат на угол <i>α</i> в трёхмерном пространстве являются:</p><div class='code-block code-block-2' style='margin: 8px 0; clear: both;'>
<!-- 2joomlaumnik -->
<script src=

  • Вращение вокруг оси x:

 \begin1 &amp; 0 &amp; 0 \\ 0 &amp; \cos \alpha &amp; -\sin \alpha \\ 0 &amp; \sin \alpha &amp; \cos \alpha \end ,

  • Вращение вокруг оси y:

 \begin\cos \alpha &amp; 0 &amp; \sin \alpha \\ 0 &amp; 1 &amp; 0 \\ -\sin \alpha &amp; 0 &amp; \cos \alpha \end ,

  • Вращение вокруг оси z:

 \begin\cos \alpha &amp; -\sin \alpha &amp; 0 \\ \sin \alpha &amp; \cos \alpha &amp; 0 \\ 0 &amp; 0 &amp; 1 \end ,

В трёхмерном пространстве для описания поворота можно использовать

\hat<\mathbf<v></p>
<ul>
<li>матрицу поворота 3×3,</li>
<li>три угла, например, углы Эйлера (γ,β,α) ,</li>
<li>угол поворота θ и единичный вектор оси вращения > = (x,y,z)» width=»» height=»» />,</li>
<li>кватернион.</li>
</ul>
<p>Матрицы поворота вектора в декартовой системе координат, соответствующие этим двум способам задания поворота:</p>
<p><img decoding=

\cos \alpha \cos \beta &amp; \cos \alpha \sin \beta \sin \gamma — \sin \alpha \cos \gamma &amp; \cos \alpha \sin \beta \cos \gamma + \sin \alpha \sin \gamma \\ \sin \alpha \cos \beta &amp; \sin \alpha \sin \beta \sin \gamma + \cos \alpha \cos \gamma &amp; \sin \alpha \sin \beta \cos \gamma — \cos \alpha \sin \gamma \\ — \sin \beta &amp; \cos \beta \sin \gamma &amp; \cos \beta \cos \gamma \end » width=»» height=»» />

 M(\hat<\mathbf<v></p>
<p>>,\theta) = \begin \cos \theta + (1 — \cos \theta) x^2 &amp; (1 — \cos \theta) x y — (\sin \theta) z &amp; (1 — \cos \theta) x z + (\sin \theta) y \\ (1 — \cos \theta) y x + (\sin \theta) z &amp; \cos \theta + (1 — \cos \theta) y^2 &amp; (1 — \cos \theta) y z — (\sin \theta) x \\ (1 — \cos \theta) z x — (\sin \theta) y &amp; (1 — \cos \theta) z y + (\sin \theta) x &amp; \cos \theta + (1 — \cos \theta) z^2 \end » width=»» height=»» /></p>
<h3>Свойства матрицы поворота</h3>
<p>Если <img decoding=на угол φ , то:

См. также

Литература

Ссылки

Вращение фигуры в 3-х мерном пространстве

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

Матрица поворота в трёхмерном пространстве

Любое вращение в трехмерном пространстве может быть представлено как композиция поворотов вокруг трех ортогональных осей (например, вокруг осей декартовых координат). Этой композиции соответствует матрица, равная произведению соответствующих трех матриц поворота.
Матрицами вращения вокруг оси декартовой системы координат на угол α в трёхмерном пространстве являются:
Вращение вокруг оси x:

Вращение вокруг оси y:

Вращение вокруг оси z:

После преобразований мы получаем формулы:
По оси Х
x’=x;
y’:=y*cos(L)+z*sin(L) ;
z’:=-y*sin(L)+z*cos(L) ;

По оси Y
x’=x*cos(L)+z*sin(L);
y’=y;
z’=-x*sin(L)+z*cos(L);

По оси Z
x’=x*cos(L)-y*sin(L);
y’=-x*sin(L)+y*cos(L);
z’=z;

Все три поворота делаются независимо друг от друга, т.е. если надо повернуть вокруг осей Ox и Oy, вначале делается поворот вокруг оси Ox, потом применительно к полученной точки делается поворот вокруг оси Oy.

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

Свойства матриц поворота

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

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

2. Поскольку каждый столбец и строка представляет собой координаты единичного вектора, длина векторов, определяемых строками и столбцами матрицы поворота, равна 1. Детерминант матрицы поворота равен +1 для правосторонней системы отсчёта и -1 – для левосторонней.

3. Поскольку столбцы (строки) матрицы поворота являются векторами, составляющими ортонормированный базис, скалярное произведение векторов, определяемых двумя различными столбцами (строками), равно нулю.

4. Операция обращения матрицы поворота совпадают с операцией транспонирования: R-1 =RT и RRT = I3, где I3 – единичная матрица размерностью 3´3.

Свойства 3 и 4 особенно полезны для проверки результатов умножения двух матриц поворота и при поиске строки или столбца матрицы поворота, в котором сделана ошибка.

О матрице поворота простыми словами

Когда Пифагор плыл по реке Хуанхэ, он увидел у берега, в лодке, задремавшего рыбака, в конической шляпе и с бамбуковой удочкой в руках.

Памятуя о том, что на Хабрахабр заглядывают люди разной математической подготовки, — однако, в поле интересов которых вполне может попадать тема линейных преобразований, — в связи с её практической значимостью, — я попробую рассказать об этом максимально доступно.

Продолжим историю

Треугольные очертания лодки, шляпы и удочки над водой настолько поразили философа-математика, что он застыл как заворожённый.

Удочка рыбака аккуратно зависла над гладью вод Жёлтой Реки под углом, равным 45 градусам.

Лёгкий туман стелился над водой… и вдруг — поклёв. Рыбак потянул удочку, и она стала быстро набирать высоту, длина лески (катет А) стала расти на глазах, а расстояние от рыбака до самой лески стало уменьшаться (катет B). И самое интересное — длина самой удочки совсем не изменилась — телескопических удочек ещё не было, — даже когда она описала в воздухе дугу и оказалась почти над головой рыбака, под углом 90 градусов. Длина лески сравнялась с длиной удочки — катушки тогда уже были, — а расстояние между рыбаком и леской изменилось до 0, леска оказалась в руках рыбака.

Последний момент очень важен для понимания того, что происходит при умножении вектора-удочки на матрицу поворота.

Ностальгируем и думаем дальше.

Вспомним теорему Пифагора: квадрат длины удочки равен сумме квадратов катетов — самой лески и расстоянию между рыбаком и тем местом, где леска погружена в воду — С^2=А в квадрате + B в квадрате.

Представим, что длина удочки 4.2, длина (или высота над водой) лески 3, расстояние между рыбаком и местом, где леска погружена в воду тоже 3.

Окунёмся в поиски

1) найдём то, как соотносится между собой длина лески с длиной удочки — синус угла а.
2) найдём то, как соотносится длина отрезка между рыбаком и местом погружения лески с длиной удочки — косинус а. Считаем:

sin(a) = 3/ 4.2= 0.7
cos(a) = 3/ 4.2 = 0.7

А теперь порассуждаем
Что будет если катет А разделить на sin(a)?! т.е.:

Получаем длину удочки — гипотенузу.
А если мы умножим катет А на sin(а)?!

Отметим это расстояние на гипотенузе — 2.1.

На оставшееся расстояние также приходится — 2.1, так как очевидно:

Это означает, то как в текущий момент времени синус и косинус делят гипотенузу. Поскольку квадрат гипотенузы это 4.2*4.2, то вопрос: что будет если 4.2 умножить на 2.1?! На ту самую её часть, с которой связан один из катетов:

4.2*2.1 = 9, (корень: 3)

Тоже самое для второго катета.

Нашли катеты. И убедились в том, что со времён Пифагора ничего не изменилось.

Далее

Теперь ещё раз осуществим умножение катета А на sin(a), катета B на cos(a).

3*0.7= 2,1
3*0.7 = 2,1

3*0.7 + 3*0.7 =4.2

Снова получили число равное длине удочки… и мы вплотную подобрались к матрице поворота.

Напомню формулу

(изображение из Википедии. Ссылка на статью)

Возьмём её нижнюю часть — получение точки y:

y=x*sin(Ф)+y*cos(Ф)

И сравним с вычислениями выше:

3*0.7 + 3*0.7 = 4.2
y=x*sin(Ф)+y*cos(Ф)

Как две капли воды. Y в нашем случае окажется равным 4.2.
Если применить первую часть формулы к вычислениям, то получим:

3*0.7 — 3*0.7 = 0

Иными словами случится так:

x станет 0 — рыбак поймает леску.
y станет 4.2 — леска сравняется с длиной удочки.

Помним, что для вычисления x синус и косинус меняются местами.

Ф в данном случае равно 45 градусам (Ф = 0.7 ) и при таком угле синус и косинус равны, что удобно для примера. В остальных случаях очевидно величины для синуса и косинуса будут другие. Например, для 40 градусов: cosdegree(40) = 0,7660444431, sindegree(40) = 0,6427876097 (если вы не согласны, обращайтесь в Яндекс, я пользовался его калькулятором).

В итоге

Применяя формулу к новым значениям x,y несколько раз — в цикле, наглядно увидим движение по окружности, каждый раз на 45 градусов.

Если требуется сдвинуть вектор-удочку на один градус, то его и подставляем в формулу на место Ф.

Как происходит вычисление тригонометрических функций?!
Как известно, для вычисления косинуса и синуса угла обычно используются готовые функции. Согласно информации по ссылке вычисление и точность зависят от системы. Для unix-систем есть по крайней мере два варианта: функция, написанная в недрах компании IBM и встроенная инструкция fsin на Ассемблере. Есть также библиотека fdlibm с достаточно наглядным кодом и комментариями, по которым видно, что синус и косинус вычисляются в этой библиотеке через число pi.

А вдруг автор этой статьи все придумал?

Если у вас на компьютере есть веб-сервер и интерпретатор языка PHP, то можно поэкспериментировать со следующим кодом, который вращает блок CSS div:

Файл index.php

Заголовок спойлера

   

Если немного изменить матрицу, то можно получить вращение по спирали или сделать из точки маятник.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *