ИСМ-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