Меню

Поворот матрицы на 90 градусов как называется

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Далее

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

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

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

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

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

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

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

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.

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

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

Источник

Поворот матрицы на 90 градусов как называется

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

Читайте также:  Мышь на ноуте как называется

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

Любое вращение в трехмерном пространстве может быть представлено как композиция поворотов вокруг трех ортогональных осей (например, вокруг осей декартовых координат). Этой композиции соответствует матрица, равная произведению соответствующих трех матриц поворота.
Матрицами вращения вокруг оси декартовой системы координат на угол α в трёхмерном пространстве являются:
Вращение вокруг оси 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. Повороты

2. Растяжение (сжатие):

    ,
    если — растяжение, — сжатие

3. Отражение (зеркалирование)

4. Перенос (сдвиг, перемещение) на вектор

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

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

В качестве примера рассмотрим сложное преобразование, заключающееся во вращении на угол вокруг прямой, проходящей через точку T(X, Y, Z) и имеющую направляющий вектор V(l, m, n), причемl 2 +m 2 +n 2 =1, т.е. вектор V является единичным.

Необходимо разложить преобразование на ряд элементарных шагов (базовых преобразований).

Цель: развернем систему координат так, чтобы ось Zсовпала с V, после чего поворот на угол будет возможно произвести путем осуществления базового преобразования — поворота на этот угол вокруг оси Z.

6.Перенос и повороты в трехмерном пространстве.

Для достижения этой цели выполним следующую последовательность базовых преобразований:


А так как нам необходимо вернуться в исходную систему координат, то:

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

Матрица перспективного преобразования с проецированием на плоскость XOY:

,
где С(0, 0, c) — точка расположения наблюдателя (центр проецирования). Плоскость проецирования, т.е. экран, совпадает с координатной плоскостью XOY.

Назад | Оглавление | Домой | Далее

3.2. Трехмерные преобразования и проекции

Рассмотрим трехмерную декартовую систему координат, являющуюся правосторонней.

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

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

Если ось вращения

Положительным будет направление поворота

Рис. 3.6. Трехмерная система координат

Аналогично тому, как точка на плоскости описывается вектором (x,y), точка в трехмерном пространстве описывается вектором (x,y,z).

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

[x*,y*,z*1] = [ ], где Н¹1, Н¹0.

Обобщенная матрица преобразования 4´4 для трехмерных однородных координат имеет вид

Эта матрица может быть представлена в виде четырех отдельных частей:

.

· Матрица 3´3 осуществляет линейное преобразование в виде изменения масштаба, сдвига и вращения.

· Матрица 1´3 производит перенос.

· Матрица 3´1- преобразования в перспективе.

· Скалярный элемент 1´1 выполняет общее изменение масштаба.

Рассмотрим воздействие матрицы 4´4 на однородный вектор [x,y,z,1]:

1.Трехмерный перенос – является простым расширением двумерного:

T(Dx,Dy,Dz)=

2.Трехмерное изменение масштаба.

Рассмотрим частичное изменение масштаба. Оно реализуется следующим образом:

S(Sx,Sy,Sz)=

Общее изменение масштаба получается за счет 4-го диагонального элемента, т. е.

[x y z 1] * = [x y z S] = [x* y* z* 1] = [ ].

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

3. Трехмерный сдвиг

Недиагональные элементы матрицы 3´3 осуществляют сдвиг в трех измерениях, т. е.

[x y z 1] * =[x+yd+hz, bx+y+iz, cx+fy+z, 1].
Читайте также:  Как называется отдел руководства
Rz( )=

Матрица поворота вокруг оси X имеет вид

Rx( )=

Матрица поворота вокруг оси Y имеет вид

Ry( )=

Результатом произвольной последовательности поворотов вокруг осей x, y, z является матрица

Подматрицу 3´3 называют ортогональной, так как ее столбцы являются взаимно ортогональными единичными векторами.

Матрицы поворота сохраняют длину и углы, а матрицы масштабирования и сдвига нет.

Назад | Оглавление | Домой | Далее

Реферат на тему:

Матрица поворота

Введение

Пожалуйста, улучшите статью в соответствии с правилами написания статей.

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

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

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

В двумерном пространстве поворот можно описать одним углом θ со следующей матрицей линейного преобразования в декартовой системе координат:

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

Сам поворот происходит путём умножения матрицы поворота на вектор, описывающий вращаемую точку:

.

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

Матрицами вращения вокруг оси декартовой правой системы координат на угол α в трёхмерном пространстве являются:

, , ,

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

Матрицы поворота вектора в декартовой системе координат, соответствующие первым двум способам задания поворота:

Однако, поскольку умножение матриц не коммутативно, то есть: , следовательно, положение системы координат после поворота вокруг трех осей будет зависеть от последовательности поворотов, то существует 6 различных видов матрицы поворота:

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

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

Если — матрица, задающая поворот вокруг оси на угол φ, то:

Литература

8.1.1. Преобразование координат в трехмерном пространстве.

B основе программ аффинных преобразований пространственных объектов, а также их про­е­ци­ро­ва­ния на картинную плоскость лежит аппарат однородных координат (см., на­при­мер, СПИСОК ЛИТЕРАТУРЫ). При этом все необходимые для построения проекции и установления нуж­ного ракурса преобразования координат описыва­ются матрицами размером 4 ´ 4 и пред­став­ля­ются в виде суперпозиции некоторых основных преобразований: переноса точки в пространстве на фиксированный вектор, поворота вокруг указанной оси на задан­ный угол, масштабирования вдоль какой-либо оси, сдвига, перспек­тивы и про­е­ци­ро­ва­ния на одну из главных координатных плоскос­тей.


Рис.8.1. Декартова система координат, проекция P’ точки P на плоскость XZ, сетка, на которой задана поверхность, и сечения, параллельные плоскостям XZ и YZ.

Основные преобразования координат. Pассмотрим некоторую декартову систему координат (рис.8.1). Любая точка пространства представляется в ней вектор-матрицей вида (х у z). Mы будем пользоваться однородными координатами точки в пространстве (х у z 1).

B качестве картинной плоскости выберем плоскость XZ, описы­ваемую уравнением Y = 0. Проекция точки объекта на эту плоскость получается в результате умножения (х у z 1) &timesA, где

задает преобразование проецирования на плоскость XZ.

Поворот вокруг заданной оси (X, Y и Z соответственно) на указанный угол a описываются следующими матрицами:

где а = sin a, b = соs a. Положительным считается поворот в направлении против часовой стрелки, если смотреть с конца оси, вокруг которой поворачивается объект.

Mатрицы преобразований переноса на фиксированный вектор и масштабирования имеют следующий вид:

Здесь (tx, ty, tz) – вектор переноса; sx, sy, sz — масштабные множители вдоль осей X, Y и Z соответственно, 1/s – множитель общего масштабирования.

Сдвиг заключается в том, что одна из координат точки (зави­симая координата) изменяется на величину, пропорциональную одной из двух оставшихся координат (сдвигающей координате). Пусть зависимой координатой будет координата X, а сдвигающей – коорди­ната Y, тогда матрица сдвига будет иметь вид:

где F – коэффициент сдвига. Проекцию точек объекта на плоскость XZ из центра проекции C можно получить с помощью преобразования центрального проецирования. Eго матрица:

Здесь центр проекции лежит на оси Y и имеет Y-координату, равную (-H), где H > 0 (см. рис.8.1).

C помощью основных преобразований координат можно получить практически произвольные плоские геометрические проекции.

Pассмотрим сначала случай параллельного проецирования. В за­висимости от того, какой угол образует направление проецирования с картинной плоскостью, параллельные проекции делятся на прямоу­гольные (например, аксонометрические проекции) и косоугольные. B случае прямоугольных проекций направление проецирования пер­пендикулярно картинной плоскости. В случае косоугольных проекций направление проецирования образует с картинной плоскостью угол, отличный от прямого. Более подробные сведения об этих типах про­екций можно найти, например, в СПИСОК ЛИТЕРАТУРЫ.

Hа рис.8.2 приведены примеры изометрической и диметрической проекций одной и той же поверхности, показано также как при этом проецируются на картинную плоскость оси декартовой системы коор­динат.

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

2. сдвиг, в котором зависимой является ось Z, сдвигающей — ось Y и коэффициент сдвига F = 1;

3. проецирование на плоскость XZ.

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

Используя эти преобразования, можно также расположить нужным образом изо­бра­жа­е­мый объект в пространстве и затем построить какую-либо стандартную проекцию.


Рис.8.2. Диметрическая и изометрическая проекции поверхности, а также осей декартовой системы координат.

Читайте также:  Как называется хвойное дерево с синими ягодами

C помощью основных преобразований координат легко также фор­мируется преобразование, которое позволит получать центральную проекцию объекта из произвольного центра проекции на плоскость, проходящую через начало координат перпендикулярно лучу зрения. Параллельная проекция тоже может быть задана по-другому — вектором направления проецирования, начало которого лежит в точ­ке (0,0,0), а конец определяется программистом.

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


Рис.8.3. «Отрицательная» (а) и «положительная» (б) косоуголь­ные проекции поверхности, а также осей осей декартовой системы координат.

Далее описаны программы, реализующие основные преобразования координат, некоторые стандартные типы проекций, а также другие средства, необходимые для построения произвольных плоских гео­метрических проекций объектов.

Программы преобразований. Чтобы построить желаемую проекцию трехмерного объекта, нужно задать соответствующее преобразова­ние.

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

Kаждая из программ, устанавливающих свое преобразование, формирует матрицу раз­ме­ром 4 ´ 4 и умножает ее слева на матрицу текущего преобразования. B результате преобразования будут выполняться в том порядке, в котором они задавались. Hачальные ус­та­нов­ки выполняет программа INIT, которая формирует единичную матрицу. Обращение к ней отменяет уже накопленное преобразова­ние. Очевидно, когда требуется получить но­вое результирующее преобразование, необходимо начинать с обращения к этой програм­ме.

Получать некоторые стандартные проекции графических объектов позволяют программы ISOMET, DIMET, CABIN, VIEW, AXONOM. Однако иногда необходимо предварительно преобразовать объект (располо­жить некоторым образом в пространстве). Для этой цели можно вос­пользоваться программами, задающими поворот, растяжение, пере­нос, сдвиг. Это программы: TDROT, TDSCAL, TDTRAN, SHEAR.

Любое текущее преобразование можно сохранить (программа SAVETR) и при желании восстановить (программа SETTR). Bообще с помощью программы SETTR можно установить в качестве текущего преобразования произвольное преобразование, расширив тем самым круг основных преобразований координат.

Программа INIT производит инициализацию результирующего преобразования. Программа без параметров.

Программа TDTRAN(DX, DY, DZ) задает перенос объекта в про­странстве от­но­си­тель­но начала координат. Параметры программы DX,DY, DZ определяют вектор пе­ре­но­са.

Программа TDROT(NAXES,ALPHA) задает поворот системы коорди­нат относительно указанной оси на заданный угол. Eе параметры:

NAXES номер оси, относительно которой выполняется поворот:

Значение Смысл
1 ось X,
2 ось Y,
3 ось Z.

Кроме того, если NAXES NAXES > 0 — в градусах; ALPHA угол поворота: ALPHA > 0 — поворот выполняется против часовой стрелки, относительно оси, вокруг которой выполняется поворот; ALPHA

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

NAXES номер оси, вдоль которой выполняется растяжение (сжатие):

Значение Смысл
1 ось X,
2 ось Y,
3 ось Z,
4 растяжение (сжатие) по всем осям;

SCALE коэффициент растяжения (сжатия): SCALE ³ 1 — растяжение в SCALE раз, SCALE О (0,1) — сжатие в 1/SCALE раз, SCALE

Программа SHEAR(I,J,F) определяет сдвиг. Параметры про­граммы:

Значение Смысл
1 координата X,
2 координата Y,
3 координата Z;

J номер зависимой координаты; F коэффициент сдвига.

При I = J данное преобразование вырождается в преобразование масштабирования вдоль I-ой оси с коэффициентом растяжения равным (F+1).

Программа ISOMET формирует матрицу результирующего преобра­зования для по­лу­че­ния изометрической проекции с учетом текущего преобразования.

6.Перенос и повороты в трехмерном пространстве.

Программа без па­ра­мет­ров.

Программа DIMET позволяет сформировать матрицу результирую­щего пре­об­ра­зо­ва­ния для получения диметрической проекции с уче­том текущего преобразования. Прог­рам­ма без параметров.

Программа VIEW(X,Y,Z) позволяет сформировать матрицу цент­рального проецирования на плоскость, перпендикулярную лучу зре­ния. Параметры программы:

X,Y,Z координаты центра проекции (точки зрения).

Изменяя координаты точки зрения можно получать различные проекции объекта. Для получения нужного ракурса иногда бывает удобнее перемещать в пространстве сам объект, оставляя центр проекции неподвижным. Этого можно достичь обращением к програм­мам TDROT и TDTRAN (до вызова программы VIEW).

При обращении к программе VIEW надо следить, чтобы центр проекции не оказался внутри изображаемого объекта, иначе резуль­таты работы программы рисования THREED будут непредсказуемы.

Программа AXONOM(X,Y,Z) формирует матрицу результирующего преобразования для получения аксонометрической проекции с учетом текущего преобразования. Hаправление проецирования определяется вектором, соединяющим точку (X,Y,Z) с началом координат.

Программа SAVETR(A) позволяет сохранить матрицу текущего преобразования в заданном массиве. Параметр программы:

Программа SETTR(A) позволяет занести в матрицу текущего преобразования содержимое заданного массива A. Предполагается, что в массиве A последовательно записаны столбцы матрицы разме­ром 4 ´ 4.

Bспомогательные и служебные программы.

Программа HCUNIT(A) формирует единичную матрицу A размером 4 ´ 4.

Программа HCMULT(A,B) перемножает две квадратные матрицы четвертого порядка A ´B. Pезультат помещается на место матрицы A.

Программа HCPRSP(H) реализует преобразование центрального проецирования. Параметр H задает Y-координату центра проекции, расположенного на оси Y (H > 0).

Программа HCINV(X,Y,Z,XP,YP,ZP) вычисляет координаты (XP,YP,ZP) центра проекции с учетом обратного преобразования координат. Предварительно вычисляется матрица обратного преобра­зования.

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

Источник

Adblock
detector