Матрицы. В дальнейшем будем использовать сокращенную запись для матрицы
Для выполнения преобразований векторов в пространстве мы будем использовать матричный метод. Матрицей размерности В дальнейшем будем использовать сокращенную запись для матрицы: Сначала введем ряд операций над матрицами и векторами. Пусть заданы матрицы Определим также операцию умножения матрицы на число. Результатом умножения матрицы Произведением двух матриц Произведение матриц некоммутативно, т.е. в общем случае Предыдущие определения мы вводили для матриц произвольной размерности. Следующие операции будут связаны с векторами, и мы будем подразумевать, что Если матрица Аналогичным образом определяется умножение вектора на матрицу, только в этом случае вектор скалярно умножается на вектор-строки матрицы. Матрица вида называется единичной и обладает следующими свойствами: · · · Если для матрицы · Если для матриц Благодаря операции умножения матрицы на вектор любая матрица определяет преобразование в пространстве, по которому каждому вектору сопоставляется некоторый другой по вполне определенному закону. Отметим, что для геометрических преобразований удобно использовать матрицы размерностью на единицу больше, чем размерность пространства, но об этом подробнее речь пойдет в следующей главе. Геометрические преобразования (перенос, масштабирование, вращение) Геометрические объекты на плоскости и в пространстве можно подвергать ряду различных преобразований. Наиболее употребительными в задачах компьютерной графики являются: · перемещение (параллельный перенос); · изменение размеров (масштабирование); · повороты вокруг некоторой точки на плоскости или некоторой оси в пространстве (вращение). В дальнейшем мы часто будем отождествлять точки пространства с радиус-вектором, определяемым этой точкой. Сначала рассмотрим преобразования на плоскости, или двумерные преобразования. Параллельный перенос объекта сводится к перемещению всех его точек на одно и то же расстояние Масштабирование объекта можно реализовать путем умножения координат всех его точек на некоторое число. Пусть имеются точки с координатами В случае, когда Рис. 3.5. Масштабирование с сохранением углов Рис. 3.6. Масштабирование с искажением углов Вращения в плоскости перемещают точки по дуге окружности, центр которой находится в начале координат. Рассмотрим сначала движение одной точки при повороте на угол После поворота вектор будет составлять угол
Можно показать, что при таком преобразовании сохраняются расстояния между точками, а следовательно, и углы между отрезками. Рис. 3.7. Поворот на плоскости Рис. 3.8. Поворот в пространстве В случае трехмерного пространства рассуждения, касающиеся переноса и масштабирования, полностью аналогичны, только они распространяются на третью координату точек. С вращением же дело обстоит иначе, поскольку здесь вращательное движение есть перемещение вдоль поверхности сферы и поворот на какой-то угол относительно точки нельзя определить однозначно. Но перемещение из одной точки сферы в другую всегда можно осуществить последовательностью поворотов относительно осей координат, поэтому выведем формулы для этих трех вращений. При повороте относительно оси Формулы поворота относительно оси Во всех этих формулах следует обратить внимание на знаки, так как они зависят от того, какой поворот считается положительным (в данном случае мы имеем дело с правой тройкой базисных векторов). Преобразования масштабирования и поворота на плоскости и в пространстве можно выразить с помощью матриц. Если заданы коэффициенты масштабирования
Двумерный случай выглядит подобным же образом. Поворот на плоскости можно осуществить с помощью матрицы
И наконец, повороты в пространстве относительно осей координат можно выполнить с помощью трех матриц вращения
Нетрудно проверить, что для матриц вращения справедливо соотношение Для выполнения последовательных поворотов вокруг осей на углы Использование этой матрицы даст заметную экономию в вычислениях по сравнению с последовательными умножениями на каждую из трех матриц вращения.
|