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

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

Задача вращения относительно произвольной оси

Вращение относительно произвольной оси также можно реализовать посредством умножения матрицы на вектор, но предварительно эту матрицу надо построить. Предположим, что прямая проходит через начало координат и задана единичным вектором \overrightarrow{l}=(l_x,l_y,l_z), и требуется выполнить поворот точки на угол \alpha относительно нее. Для этого воспользуемся следующим алгоритмом:

  1. Совместим прямую с осью OZ посредством поворота системы координат относительно оси OX на угол \varphi, а затем поворота относительно оси OY на угол \psi.
  2. Выполним поворот относительно оси OZ на угол \alpha.
  3. Выполним повороты системы сначала относительно оси OY на угол -\psi, а затем относительно оси OX на угол -\varphi (в обратном порядке по отношению к первым поворотам), тем самым возвращая ее в исходное положение.

Итоговая матрица преобразования, таким образом, является произведением нескольких матриц, а именно

R=R_x(\varphi)\cdot R_y(\psi)\cdot R_z(\alpha)\cdot R_y(-\psi)\cdot R_x(-\varphi).

Матрицы R_y(-\psi), R_x(-\varphi) являются матрицами преобразования координат при поворотах системы координат, как было показано в предыдущем разделе. Определим сначала угол \varphi, который является углом между осью OZ и его проекцией вектора \overrightarrow{l} на плоскость YOZ \quad \overrightarrow{l}_1=(0,l_y,l_z). Пусть d=\sqrt{l_y^2+l_z^2} - длина этой проекции. Тогда \cos\varphi=\frac{l_z}{d}, \; \sin\varphi=-\frac{l_y}{d}, (синус отрицателен, поскольку поворот идет от оси OZ к оси OY, т.е. в отрицательном направлении). После поворота системы координат новыми координатами вектора \overrightarrow{l} будут l_x,0,d. Угол \psi - это угол между векторами \overrightarrow{l}_1 и \overrightarrow{l}, поэтому \cos\psi=d, \sin\psi=l_x. Теперь мы можем выписать вид матриц преобразования координат для каждого шага алгоритма, учитывая то, что матрицы преобразования координат при повороте системы координат обратны по отношению к соответствующим матрицам вращения:

R_x(\varphi)=
\begin{pmatrix}
1 & 0 & 0 \\
0 & \frac{l_z}{d} & -\frac{l_y}{d} \\
0 & \frac{l_y}{d} & \frac{l_z}{d}
\end{pmatrix}, \quad
R_y(\psi=)
\begin{pmatrix}
d & 0 & -l_x \\
0 & 1 & 0 \\
l_x & 0 & d
\end{pmatrix}, \quad \\
R_z(\alpha)=
\begin{pmatrix}
\cos\alpha & -\sin\alpha & 0 \\
\sin\alpha & \cos\alpha & 0 \\
0 & 0 & 1
\end{pmatrix}.

Нетрудно убедиться, что последовательное умножение матриц R_x(-\varphi) и R_y(-psi) на вектор \overrightarrow{l} дадут в результате вектор (0,0,1), т.е. этот вектор действительно станет осью аппликат.

Остается только выписать окончательный вид матрицы R (для сокращения записи введем следующие обозначения: c=\cos\alpha, \; s=\sin\alpha, \; c_1=1-\cos\alpha ):

R=
\begin{pmatrix}
l_x^2+c & l_x l_y c_1 - l_z s & l_x l_z c_1 +l_y s \\
l_x l_y c_1 + l_z s & l_y^2 c_1 + c & l_y l_z c_1 - l_x s \\
l_x l_z c_1 - l_y s & l_x l_z c_1 + l_x s & l_z^2 c_1 + c
\end{pmatrix}. ( 3.19)

Напомним, что l_x, l_y, l_z являются направляющими косинусами прямой, относительно которой выполняется поворот. Нетрудно убедиться, что если в качестве осей вращения взять оси координат, то мы в точности получим формулы (3.10).

Вопросы и упражнения

  1. Дайте определение декартовой системы координат.
  2. Что такое вектор?
  3. Какие векторы считаются равными?
  4. Какие векторы называются линейно независимыми?
  5. Как выразить длину вектора, используя операцию скалярного произведения?
  6. Как определить косинус угла между векторами, используя операцию скалярного произведения?
  7. Докажите, что векторное произведение удовлетворяет соотношению
    \alpha[\overrightarrow{r}_1\times\overrightarrow{r}_2]=[\overrightarrow{r}_1\times(\alpha\overrightarrow{r}_2)].
  8. Как из произвольного вектора \overrightarrow{r} получить единичный вектор, совпадающий с ним по направлению? (Эта операция называется нормировкой вектора ).
  9. Каково максимальное число линейно независимых векторов в пространстве?
  10. Что такое орты?
  11. Как построить параметрическое уравнение прямой, проходящей через две заданные точки плоскости или пространства?
  12. Докажите, что если в формуле (3.7) заменить координаты (x_1,y_1,z_1) координатами любой другой точки плоскости, то уравнение будет описывать ту же самую плоскость. Указание: возьмите произвольную точку, удовлетворяющую уравнению (3.7), напишите новое уравнение плоскости и покажите, что любая точка второй плоскости принадлежит первой и наоборот.
  13. В каких случаях луч с плоскостью не пересекаются?
  14. В каких случаях луч пересекает сферу только в одной точке?
  15. Исходя из определения умножения матрицы на вектор, докажите, что для любых двух векторов \overrightarrow{r}_1, \overrightarrow{r}_2 и любой матрицы A справедливо соотношение
    A\cdot(\overrightarrow{r}_1+\overrightarrow{r}_2)=A\cdot\overrightarrow{r}_1+A\cdot\overrightarrow{r}_2.
  16. Докажите, что для любого вектора \overrightarrow{r}, числа \alpha и матрицы A справедливо соотношение
    A\cdot(\alpha\overrightarrow{r})=\alpha(A\cdot\overrightarrow{r})=(\alpha A)\cdot\overrightarrow{r}.
  17. При каком условии масштабирование сохраняет углы между отрезками?
  18. Какую траекторию описывают точки объекта при повороте?
  19. Вокруг чего осуществляется поворот на плоскости?
  20. Вокруг чего осуществляется поворот в пространстве?
  21. Какие шаги выполняются в алгоритме поворота относительно произвольной оси в пространстве?
  22. Докажите, что если матрица A является матрицей поворота, то A\cdot A^T=E.
Сабина Бахриддинова
Сабина Бахриддинова
Дмитрий Трефилов
Дмитрий Трефилов