11)Трехмерные аффинные преобразования координат.
Аффинные преобразования пространства
При работе с трехмерными объектами, часто требуется совершать по отношению к ним различные преобразования: двигать, поворачивать, сжимать, растягивать, скашивать и т.д. При этом в большинстве случаев требуется, чтобы после применения этих преобразований сохранялись определенные свойства.
Определение. Преобразование плоскости называется аффинным (от англ. affinity – родство), если
-оно взаимно однозначно;
-образом любой прямой является прямая.
Преобразование называется взаимно однозначным, если
-разные точки переходят в разные;
-в каждую точку переходит какая-то точка.
Свойства аффинного преобразования в трехмерном пространстве:
-отображает n-мерный объект в n-мерный: точку в точку, линию в линию, поверхность в поверхность;
-сохраняет параллельность линий и плоскостей;
-сохраняет пропорции параллельных объектов – длин отрезков на параллельных прямых и площадей на параллельных плоскостях.
Любое аффинное преобразование задается матрицей 3x3 с ненулевым определителем и вектором переноса:
Посмотрим на это с точки зрения математики. R представляет собой матрицу линейного оператора над пространством трехмерных векторов. Вектор T требуется для осуществления параллельного переноса: если помножить ( 0 0 0 ) на любую матрицу 3x3, опять получим ( 0 0 0 ) – начало системы координат, относительно преобразования R, является неподвижно точкой. Требование, чтобы определитель был ненулевой, диктуется определением. По сути, если определитель матрицы R равен нулю, то всё пространство переходит в плоскость, прямую или точку. Тем самым не соблюдается взаимная однозначность.
На практике удобно задавать аффинное преобразование одной матрицей. При этом используются однородные координаты, введенные в предыдущей статье. Аффинное преобразование будет задаваться следующей матрицей 4x4:
Заметим, что первые три значения последней строки равны 0. Это необходимое условие того, что преобразование будет аффинным. В общем случае произвольная матрица размера 4x4 задает проективное преобразование. Такие преобразования, как можно догадаться из названия, используются для проецирования трехмерной сцены. Подробнее об этом будет рассказано в одной из последующих статей.
Рассмотрим частные случаи аффинных преобразований.
Прим. Здесь и в дальнейшем будет использоваться система координат, введенная следующим образом:
система координат правая;
-ось z направлена на наблюдателя, перпендикулярно плоскости экрана;
-ось y находится в плоскости экрана и направлена вверх;
-ось x находится в плоскости экрана и направлена вправо.
Подробнее мы остановимся на этом при рассмотрении геометрического конвейера.
Параллельный перенос
Исходный объект Параллельный перенос
Матрица этого преобразования выглядит следующим образом:
В данном случае матрица R = E, единичной матрице.
Преобразования, рассматриваемые ниже, затрагивают только матрицу R, поэтому будет указываться только она.
Поворот (вращение)
Исходный объект Поворот вокруг некоторого вектора
Если на плоскости повороты делались вокруг некоторой точки, то в трехмерном пространстве повороты производятся вокруг некоторого вектора. Перед тем, как перейти к построению матрицы поворота вокруг произвольного вектора, рассмотрим частные случаи поворотов вокруг координатных осей.
Прим. Поворот вокруг произвольного вектора не равно поворот вокруг произвольной направленной прямой.
Поворот вокруг оси y
Исходный объект Поворот вокруг оси y
Заметим, что при повороте вокруг оси y ординаты точек (у-координаты) не меняются. Также стоит отметить, что координаты x и z точки преобразуются независимо от y-координаты. Это означает, что любая точка p(x, y, z) перейдет в точку p’(x’(x, z), y, z’(x, y)). Теперь осталось понять, как преобразуются координаты x и z: в плоскости Oxz это будет поворот вокруг начала координат по часовой стрелке (т.к. x z y - левая тройка), т.е. в отрицательном направлении. Матрица такого преобразования известна (см. Поворот плоскости):
В итоге:
Матрица преобразования Ry(φy):
Поворот вокруг осей x и z
Поворот вокруг оси x Поворот вокруг оси z
Аналогичными рассуждениями можно получить матрицы поворотов Rx(φx) и Rz(φz)вокруг осей x и z, соответственно.
Приведём окончательные результаты:
Несложно заметить, что определители матриц Rx, Ry, Rz равны 1. Также матрицы вращений Rrot обладают свойством ортогональности: RTR = RRT = E. Из этого, в свою очередь, следует полезное свойство, что обращение матрицы поворота можно заменить транспонированием: R-1(φ) = RT(φ).
Масштабирование (сжатие/растяжение, отражение)
Исходный объект Масштабирование
Коэффициенты сжатия/растяжения, по аналогии с двухмерным пространством, определяются диагональными членами матрицы R:
Результат:
Комбинация коэффициентов sx = -1, sy = 1, sz = 1 будет задавать отражение от плоскости Oyz (x = 0). При sx =sy= sz = -1 получим центральную симметрию относительно начала координат.
Интерпретация матрицы R
Рассмотрим, что представляет собой матрица R с точки зрения линейной алгебры. Оказывается, что матрица R содержит базис новой системы координат.
Действительно, матрица
( R11 R12 R13 )
( R21 R22 R33 )
( R31 R32 R33 )
переводит вектора декартова базиса:
( 1 0 0 ) → ( R11 R21 R31 )
( 0 1 0 ) → ( R12 R22 R32 )
( 0 0 1 ) → ( R13 R23 R33 )
Скос
Исходный объект Скос
Теперь несложно получить преобразование скоса. Например:
Прим. Если придерживаться общепринятой терминологии, то приведенное выше преобразование называется сдвигом. Сдвигом (shear) будет любое преобразование, главная диагональ матрицы R которого единичная. Если при этом определитель матрицы R равен нулю, то преобразование не является аффинным.
- 1) Компьютерная графика. Область применения. Проблемы:
- 2)Основные задачи кг:
- 3)Графические функции примитивов Turbo c:
- 4)Вывод текста в Turbo c:
- 9)Метрические пространства и координатный метод представления объектов:
- 10)Двумерные аффинные преобразования координат.
- 11)Трехмерные аффинные преобразования координат.
- 14)Связь преобразований объектов с преобразованиями координат:
- 15)Типы проекций. Мировые и экранные координаты:
- 17)Растровая графика. Характеристики растра:
- 18)Цвет в растре. Модель rgb. Кодировка цвета и яркости:
- 19)Цветовая модель cmyk:
- 20)Растровые дисплеи. Черно-белый буфер кадра/цветной буфер кадра/регенерация изображения:
- 22)Формирование цветового изображения в элт:
- 23)Системы с телевизионным растром:
- 24)Видеоадаптеры: основные характеристики, типы, адресное пространство:
- 26)Понятие фрактала и фрактальной графики:
- 28)Алгоритм Брезенхема:
- 29)Векторная графика: назначение, элементы, структура:
- 30)Каноническое уравнение прямой. Нормальный вектор прямой и его свойства:
- 31)Параметрическое уравнение прямой и уравнение в отрезках: