ИСМ-06-2:
6. б) преобразование трехмерных координат (поворот, масштабирование, транспонирование)Перемещение, поворот, масштабирование
Любое движение (то есть преобразование пространства, сохраняющее расстояние между точками) в трехмерном пространстве, согласно теореме Шаля [17] , может быть представлено в виде суперпозиции поворота и параллельного переноса, то есть последовательного выполнения поворота и параллельного переноса. Именно поэтому основная часть информации о поведении объекта — это его смещение, ось поворота и угол поворота.
Перенос точки с координатами (x,y,z) на вектор (dx,dy,dz) делается простым сложением всех координат. То есть результат — это (x+dx,y+dy,z+dz). Как бы сложили вектор-точку и вектор-перенос.
Поворот — занятие уже более интересное. Но тоже простое. Рассмотрим для примера поворот точки (x,y,z) относительно оси z. В этом случае z не меняется вообще, а (x,y) меняются так же, как и при 2D повороте относительно начала координат.
Для трехмерного случая, таким образом
x’ = x*cos(alpha)-y*sin(alpha)
y’ = x*sin(alpha)+y*cos(alpha)
z’ = z
Почти во всех приложениях, использующих 3D-графику, используется матричный подход. Базовым элементом матричного метода является матрица размером 4x4. В математике для описания точки в пространстве используется четыре числа, вспомогательной характеристике можно придать любой смысл, это может быть, например, заряд частицы или материальная масса. В графике четвертый компонент координаты точки называется W-координатой и предназначен для осуществления проекции точки на плоскость экрана. Это весовой фактор, на который умножаются координаты точки при ее проецировании. Его значение задается единичным.
Матрицы сдвига по осям X, Y и Z выглядят так:



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

Повороты вокруг Y и Z соответственно на углы b и g :


Если необходимо изменить масштаб изображения, то необходимо задать матрицу масштабирования:

Таким образом, получаем следующее. Любое нужное нам преобразование пространства получается произведением нужных матриц. При этом, важен порядок, в котором мы перемножаем матрицы, он определяет последовательность трансформаций системы координат.
© ism-06-2.ru