- •Часть 1. Основные алгоритмы
- •Введение
- •Предмет компьютерной графики
- •Основные понятия Векторные и растровые графические системы.
- •Программистская модель компьютерной графики
- •Координатные системы компьютерной графики
- •Геометрические преобразования Двумерные преобразования
- •Однородные координаты и матричное представление двумерных преобразований
- •Трехмерные матричные преобразования
- •Вопросы эффективности вычислений
- •Пример композиции трехмерных преобразований
- •Проецирование
- •Виды параллельных проекций
- •Центральные (перспективные) проекции
- •Геометрические модели трехмерных объектов
- •Полигональные сетки
- •Параметрические кубические кривые
- •Параметрические бикубические поверхности
- •Преобразования параметрических кривых и поверхностей
- •Основные растровые алгоритмы
Трехмерные матричные преобразования
Подобно тому, как двумерные преобразования описываются матрицами размером 33, трехмерные преобразования могут быть представлены матрицами размером 44. Тогда трехмерная точка (x, y, z) записывается в однородных координатах как (Wx,Wy,Wz,W), гдеW 0. Для получения декартовых координат надо первые три однородные координаты разделить наW. Два однородных вектора описывают одну декартову точку в трехмерном пространстве, еслиH1 = c H2, гдеc = const 0 иH , H2- векторы, записанные в однородных координатах.
Матрицы преобразований будем записывать в правосторонней системе координат (см. рис. 10).

При этом положительный
поворот определяется следующим образом.
Если смотреть из положительной части
оси вращения (например, оси
)
в направлении начала координат, то
поворот на 900против часовой
стрелки будет переводить одну положительную
полуось в другую (осьxвy,yвz,zвxв соответствии с
правилом циклической перестановки).
Заметим, что на
практике во многих приложениях
компьютерной графики удобнее применять
левостороннюю экранную систему координат
(см. рис. 11), в которой ось xнаправлена вправо, осьy– вверх, а осьzвглубь
экрана. В этом случае удобнее
интерпретировать тот факт, что точки с
большими значениями
находятся
дальше от наблюдателя.

Запишем теперь матрицу трехмерного переноса, по аналогии с двумерным случаем:
,
(13)
при этом
.
Операция масштабирования:
,
(14)
![]()
Перейдем к операции поворота. Cней в трехмерном случае придется разбираться чуть больше, чем в двумерном. Так как при двумерном повороте в плоскостиxyкоординатыzостаются неизменными, то поворот вокруг осиzзаписывается так:
.
(15)
Матрицы поворота вокруг оси xи вокруг осиyимеют вид:
,
. (16)
:
.
(17)
Обратите внимание на смену положения синуса угла с отрицательным знаком в матрице поворота вокруг оси y. Правильность этих матриц легко проверить поворотом одного из ортов на 900, при этом он должен перейти в следующий по порядку орт на соответствующей координатной оси.
Обратные преобразования будут выражаться матрицами, обратными к показанным выше. Для операции переноса надо лишь заменить знаки компонент вектора переноса на противоположные:
;.
(18)
для операции масштабирования – на обратные значения:
;.
(19)
для поворота – выбором отрицательного угла поворота:
..
(20)
Результатом нескольких последовательных поворотов будет матрица вида
.
(21).
Здесь верхняя
матрица размером 33
называется ортогональной. Столбцы
ортогональной матрицы – это единичные
вектора, в которые преобразуются орты
координатных осей в результате поворотов.
Важным ее свойством является то, что
обратная к ней матрица является
транспонированной:
.
Это полезно тем, что при вычислениях
достаточно поменять индексы местами и
обратное преобразование получается
автоматически.
После перемножения любого числа матриц вида T,SиRрезультирующая матрица всегда будет иметь вид:
.
(22)
Здесь верхняя часть размером 33 определяет суммарный поворот и масштабирование, а три коэффициента последней строки – суммарный перенос.
Преобразование одной точки выполняется с помощью следующих действий
(23)
Таким образом, для преобразования одной трехмерной точки потребуется уже 9 умножений и 9 сложений.
