Опубликован: 20.10.2007 | Доступ: свободный | Студентов: 4584 / 1395 | Оценка: 4.38 / 3.99 | Длительность: 12:07:00
ISBN: 978-5-94774-654-9
Специальности: Программист
Лекция 3:

Геометрические преобразования

Вращения в плоскости перемещают точки по дуге окружности, центр которой находится в начале координат. Рассмотрим сначала движение одной точки при повороте на угол \alpha (положительным является направление против часовой стрелки), т. е. поворот радиус-вектора на угол (рис. 3.7). Пусть точка располагалась на расстоянии r от начала координат, а ее радиус-вектор составлял угол \beta с осью абсцисс. Тогда координаты точки определяются формулами

x=r\cos\beta, \quad y=r\sin\beta.

После поворота вектор будет составлять угол \beta+\alpha, а новые координаты точки будут определяться соотношениями

\begin{aligned}
& x'=r\cos(\beta+\alpha)=r\cos\beta\cos\alpha-r\sin\beta\sin\alpha=x\cos\alpha-y\sin\alpha \\
& y'=r\sin(\beta+\alpha)=r\sin\beta\cos\alpha+r\cos\beta\sin\alpha=x\sin\alpha+y\cos\alpha
\end{aligned}. ( 3.16)

Можно показать, что при таком преобразовании сохраняются расстояния между точками, а следовательно, и углы между отрезками.

Поворот на плоскости

Рис. 3.7. Поворот на плоскости
Поворот в пространстве

Рис. 3.8. Поворот в пространстве

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

При повороте относительно оси OX на угол \alpha у всех точек координата x остается неизменной. Если смотреть на плоскость YOZ со стороны конца оси OX, то оси будут расположены так, как показано на рис. 3.8. Положительным считается поворот от оси OY к оси OZ. Если воспользоваться формулами для плоских поворотов, то координаты y' и z' новой точки определяются выражениями

\begin{aliganed}
& y'=y\cos\alpha-z\sin\alpha \\
& z'=y\sin\alpha+z\cos\alpha
\end{eligned}.

Формулы поворота относительно оси OZ полностью совпадают с теми, которые были выведены для плоского случая, а поворот относительно оси OY выглядит так:

\begin{aliganed}
& x'=x\cos\alpha+z\sin\alpha \\
& z'=-x\sin\alpha+z\cos\alpha
\end{eligned}.

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

Преобразования масштабирования и поворота на плоскости и в пространстве можно выразить с помощью матриц. Если заданы коэффициенты масштабирования S_x,S_y,S_z, то преобразование точки осуществляется посредством умножения матрицы на ее радиус-вектор,

\overrightarrow{r}'=S\cdot\overrightarrow{r}=
\begin{pmatrix}
S_x & 0 & 0 \\
0 & S_y & 0 \\
0 & 0 & s_z
\end{pmatrix}
\begin{pmatrix}
x \\ y \\ z
\end{pmatrix}
=
\begin{pmatrix}
S_x x \\ S_y y \\ S_z z
\end{pmatrix}. ( 3.8)
Двумерный случай выглядит подобным же образом.

Поворот на плоскости можно осуществить с помощью матрицы

R=
\begin{pmatrix}
\cos\alpha & -\sin\alpha \\
\sin\alpha & \cos\alpha
\end{pmatrix}. ( 3.17)

И наконец, повороты в пространстве относительно осей координат можно выполнить с помощью трех матриц вращения

\begin{gathered}
R_x(\alpha)=
\begin{pmatrix}
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha
\end{pmatrix}, \quad
R_y(\alpha)=
\begin{pmatrix}
\cos\alpha & 0 & \sin\alpha \\
0 & 1 & 0 \\
-\sin\alpha & 0 & \cos\alpha
\end{pmatrix}, \\
R_z(\alpha)=
\begin{pmatrix}
\cos\alpha & -\sin\alpha & 0 \\
\sin\alpha & \cos\alpha & 0 \\
0 & 0 & 1
\end{pmatrix}
\end{gathered} ( 3.10)

Нетрудно проверить, что для матриц вращения справедливо соотношение

R(-\alpha)=R^{(-1)}(\alpha)

Для выполнения последовательных поворотов вокруг осей на углы \alpha,\beta,\gamma можно создать матрицу преобразования путем перемножения трех матриц:

R=R_z(\gamma)\cdot R_y(\beta)\cdot R_x(\alpha).

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

Сабина Бахриддинова
Сабина Бахриддинова
Дмитрий Трефилов
Дмитрий Трефилов