Биографии Характеристики Анализ

Преобразования на плоскости и в пространстве. Аффинные преобразования

Формирование изображения и разнообразные действия с ним требуют от пользователя известной математической грамотности. Геометрические понятия, формулы и факты, относящиеся к плоскому и трехмерному случаям, играют в задачах компьютерной графики особую роль. Принципы аналитической геометрии в соединении с постоянно расширяющимися возможностями вычислительной техники являются неиссякаемым источником существенных продвижений на пути развития компьютерной графики, ее эффективного использования в САПР.

Растровые и векторные изображения

Различают два вида изображений: растровые и векторные.
Растровое изображение состоит из множества точек - пикселей (от англ. pixel - PIcture ELement), каждый пиксель имеет определенный цвет. Чем плотнее расположены пиксели, чем меньше их размеры и чем большее количество цветов, тем выше качество картинки. Примеры растровых изображений: офсетная (газетная) печать, изображение на экране компьютера, сканированный рисунок. При хорошей разрешающей способности устройств графического вывода достигается очень высокое качество растровых изображений, но, к сожалению, работа с ними крайне неудобна, а при масштабировании качество теряется.
Векторное изображение в простейшем случае состоит не из точек, а из множества отрезков прямых, заданных координатами их концов. Такое изображение легко масштабируется без потери качества и легко поддается обработке. Практически во всех графических пакетах, используемых в САПР, информация представляется в векторном виде.

Аффинные преобразования на плоскости

Допустим, на плоскости введена прямолинейная координатная система. Тогда каждой точке M ставится в соответствие упорядоченная пара чисел (x, y) ее координат (рис. 1). Вводя на плоскости еще одну прямолинейную систему координат, поставим в соответствие той же точке M другую пару чисел - (x*, y*) .

Переход от одной прямолинейной координатной системы на плоскости к другой описывается следующими соотношениями:

(*)

где - произвольные числа, связанные неравенством:

В дальнейшем будем рассматривать формулы (*) как правило, согласно которому в заданной системе координат преобразуются точки плоскости.

В аффинных преобразованиях особую роль играют несколько важных частных случаев, имеющих хорошо прослеживаемые геометрические характеристики.

А. Поворот вокруг начальной точки на угол j (рис. 2а) описывается формулами

Б. Растяжение (сжатие) вдоль координатных осей (рис. 2б) можно задать так:

В. Отражение относительно оси абсцисс (рис. 2в) задается при помощи формул

Г. Перенос (рис. 2г) обеспечивают соотношения

Как доказывается в курсе аналитической геометрии, любое преобразование вида (*) всегда можно представить как последовательное исполнение (суперпозицию) простейших преобразований вида А, Б, В и Г.
Для эффективного использования этих известных формул в задачах компьютерной графики более удобной является их матричная запись. Матрицы, для случаев А, Б и В легко строятся и имеют соответственно следующий вид:

Для решения задач весьма желательно охватить матричным подходом все четыре простейших преобразования (в том числе и перенос), а, значит, и общее аффинное преобразование. Этого можно достичь путем описания произвольной точки плоскости не двумя координатами, как это было сделано выше, а упорядоченной тройкой чисел.

Однородные координаты точки

Пусть M - произвольная точка плоскости с координатами x и y , вычисленными относительно заданной прямолинейной координатной системы. Однородными координатами этой точки называется любая тройка одновременно неравных нулю чисел x1, x2, x3, связанными с заданными числами x и y следующими соотношениями:


При решении задач компьютерной графики однородные координаты обычно вводятся так: произвольной точке M(x, y) плоскости ставится в соответствие точка M*(x, y, 1) в пространстве (рис. 3).

При помощи троек однородных координат и матриц третьего порядка можно описать любое аффинное преобразование на плоскости. Сравнивая уравнение (*) и нижеследующее, матричное:

,

нетрудно заметить, что после перемножения выражений, стоящих в правой части последнего соотношения, получаются обе формулы (*) и тождество 1=1. Таким образом, сравниваемые записи являются равносильными.

Аффинные преобразования в пространстве

Для выполнения пространственных построений, аналогично двумерной задаче, три координаты точки (x, y, z) заменяются четверкой чисел (x, y, z, 1) . Это дает возможность воспользоваться матричной записью и в более сложных трехмерных задачах.

Любое аффинное преобразование в трехмерном пространстве может быть представлено в виде суперпозиции вращений, растяжений, отражений и переносов. Математически все преобразования сводятся к перемножению матриц четвертого порядка. Например, матрица вращения вокруг оси абсцисс на угол j имеет вид:

.

Виды проецирования

Изображение трехмерных объектов на картинной плоскости связано с еще одной геометрической операцией - проецированием при помощи пучка прямых.

В компьютерной графике применяется несколько различных видов проецирования. Наиболее часто используется параллельное и центральное проецирование.

Для получения проекций объекта на картинную плоскость необходимо провести через каждую его точку прямую из заданного проецирующего пучка и затем найти координаты точки пересечения этой прямой с плоскостью изображения. В случае центрального проецирования все прямые исходят из одной точки - центра пучка. При параллельном проецировании считается, что центр пучка расположен в бесконечности (рис. 4). Математически операция проецирования также сводится к перемножению соответствующих матриц.

Возьмем на плоскости (или в пространстве) какой-нибудь вектор (рис. 142). При аффинном преобразовании точки переходят соответственно в точки , имеющие относительно нового репера те же координаты, которые точки имели относительно старого. Так как координаты вектора получаются вычитанием координат его начальной точки из координат его конца, то координаты вектора относительно нового репера те же, что и координаты вектора относительно старого репера. Итак:

При аффинном преобразовании вектору ставится в соответствие вектор , имеющий относительно нового репера те же координаты, которые вектор и имел относительно старого.

Отсюда сразу следует, что при аффиниом преобразовании равным векторам соответствуют равные, так что:

2° Аффинное преобразование плоскости (пространства) порождает ьзаимно однозначное отображение на себя (преобразование) многообразия V всех свободных векторов плоскости (соответственно пространства).

Это преобразование обладает следующим свойством линейности: если при данном преобразовании векторам и, v соответствуют векторы u, v, то вектору будет соответствовать вектор , а вектору - вектор Ли (доказывается сразу переходом к координатам). Из свойства линейности вытекает, далее:

Если при данном аффинном преобразовании векторам соответствуют векторы , то всякой линейной комбинации

векторов соответствует линейная комбинация

векторов (с теми же коэффициентами ).

Так как при аффинном преобразовании нулевому вектору очевидно соответствует нулевой, то из доказанного следует:

4° При аффинном преобразовании линейная зависимость векторов сохраняется , значит, всякие два коллинеарных вектора переходят в коллинеарные, всякие три компланарных вектора переходят в компланарные).

5° Обратное преобразование к аффинному преобразованию есть аффинное преобразование.

В самом деле, если данное аффннное преобразование А плоскости задается переходом от репера к реперу , то аффинное преобразование, задаваемое переходом от репера к реперу , есть, как легко видеть, преобразование, обратное к преобразованию А.

То же и для пространства.

Мы видели, что при аффинном преобразовании линейная зависимость векторов сохраняется. Сохраняется и линейная независимость векторов:

6° При аффинном преобразовании А всякая линейно независимая система векторов их, . переходил в линейно независимую - в противном случае при аффинном преобразовании , обратном к А, линейно зависимая система и, . перешла бы в линейно независимую, что, как мы знаем, невозможно.

Так как репер есть система линейно независимых векторов (двух на плоскости, трех в пространстве), приложенных к данной точке О, то при аффинном преобразовании всякий репер переходит в репер. Более того, имеет место предложение

7° При аффинном отображении (заданном переходом от репера I к реперу ) всякий репер II переходит в репер [ и всякая точка М (всякий вектор и) переходит в точку М (в вектор ) с теми же координатами относительно репера , какие точка М и вектор и имели относительно репера II.

Доказательство в случае плоскости и в случае пространства одно и то же. Ограничимся случаем плоскости. Пусть II есть репер (рис. 143), а - репер сначала утверждение, касающееся векторов. Если вектор и имеет относительно репера координаты , то . Но тогда образ вектора и есть, по свойству 3°, вектор

имеющий координаты относительно репера . Пусть точка М имеет координаты относительно репера .

Тогда , гак что, по предыдущему, относительно репера сектор ОМ, а значит, и точка М имеют координаты . Утверждение доказано.

Доказанное утверждение является существенным: из него следует, что, задав аффинное преобразование переходом от какого-нибудь репера к реперу , мы можем задать его, взяв в качестве исходного любой репер и указав тот репер , в который он должен перейти.

В качестве приложения только что сделанного замечания докажем, что произведение двух аффинных преобразований есть аффинное преобразование.

В самом деле, пусть аффинное преобразование задается переходом от репера I к реперу II. Аффинное преобразование мы можем, по только что доказанному, задать переходом от репера II к какому-то реперу III. Тогда аффинное преобразование, задаваемое переходом от репера I к реперу III, есть, очевидно, произведение преобразования на преобразование .

Замечание 1. Только что доказанные свойства 1° - 7° аффинных преобразований, очевидно, имеют место и для аффинных отображений одной плоскости на другую (одного экземпляра трехмерного пространства на другой).

Тождественное преобразование плоскости, соответственно пространства, есть, очевидно, аффинное преобразование. Вспомним, что преобразование, обратное к аффинному, есть аффинное. Наконец, как мы только что доказали, произведение двух аффинных преобразований есть аффинное преобразование. Отсюда - на основании условия, данного в § 6, п. 6, Прибавления, - сразу вытекает следующая основная

Теорема 1. В группе всех преобразований плоскости (пространства) аффинные преобразования образуют подгруппу.

Среди аффинных преобразований движения выделяются тем, что они могут быть заданы переходом от одной прямоугольной системы координат к другой, тоже прямоугольной и имеющей тот же масштаб. Обратное преобразование к движению есть движение, и произведение двух движений есть движение. Так как тождественное преобразование есть частный случай движения, то (в полной аналогии с теоремой 1) имеет место и

Теорема 1. В группе всех аффинных преобразований движения образуют подгруппу.

Продолжаем перечисление простейших свойств аффинных преобразований и отображений.

Три точки тогда и только тогда коллинеарны (т. е. лежат на одной прямой), когда векторы коллинеарны. А так как коллинеарность векторов при аффинном преобразовании сохраняется, то сохраняется и коллинеарность точек. Отсюда вытекает:

При аффинном отображении (плоскости или пространства) прямая переходит в прямую.

Мы сейчас дадим второе доказательство этого факта.

Пусть дано аффинное отображение. Оно состоит в том, что каждая точка М с координатами (в координатной системе ) переходит в точку М, имеющую те же координаты во второй системе . Отсюда следует:

9° При данном аффинном отображении (определенном переходом от репера , к реперу ) множество всех точек, координаты которых (в координатной системе ) удовлетворяют некоторому Уравнению, переходит в множество точек, координаты которых в системе удовлетворяют тому же уравнению.

В частности, прямая с уравнением

(в системе ) перейдет в прямую, имеющую то же уравнение, но только в системе координат .

Точно так же при аффинном преобразовании пространства (определенном переходом от репера к реперу ) плоскость, имеющая в системе уравнение

переходит в плоскость, имеющую то же уравнение (2), но только в системе координат .

Прямая, заданная в пространстве своим «общим уравнением»

или той или иной его специальной разновидностью, например каноническим уравнением

при данном аффинном преобразовании перейдет в прямую, имеющую те же уравнения, но только в системе координат . Итак, доказана

Теорема 2. При аффинном преобразовании плоскости, соответственно пространства, прямые переходят в прямые, плоскости переходят в плоскости.

При этом сохраняется параллельность.

В самом деле, если две прямые (или две плоскости, или прямая и плоскость) параллельны, то их уравнения относительно репера удовлетворяют известным условиям параллельности; но образы этих прямых (плоскостей) имеют те же уравнения относительно репера , и, значит, удовлетворяют тем же условиям параллельности.

Замечание 2. Сохранение параллельности при аффинном преобразовании можно вывести и пользуясь тем, что аффинное преобразование взаимно однозначно.

Действительно, при всяком взаимно однозначном отображении (например, пространства на себя) образ пересечения двух (любых) множеств есть пересечение образов этих множеств.

Значит, два пересекающихся множества при всяком взаимно однозначном отображении переходят в пересекающиеся.

Отсюда следует, что при аффинном преобразовании плоскости две параллельные прямые, а при аффинном отображении пространства две параллельные плоскости переходят в параллельные; сохраняется и свойство параллельности между прямой и плоскостью.

Пусть в пространстве даны две параллельные прямые; они лежат в одной плоскости и не пересекаются. При аффинном преобразовании пространства эти две прямые перейдут в две прямые, также лежащие в одной плоскости и не пересекающиеся, т. е. в две параллельные прямые.

Теорема 3. При аффинном преобразовании плоскости (пространства), переводящем прямую d в прямую , отрезок прямой d переходит в отрезок прямой а точка М прямой d, делящая отрезок в данном отношении К, переходит в точку

М прямой d, делящую отрезок в том же отношении (рис. 144).

Доказательство. Так как при положительном А. мы получаем точки, лежащие внутри отрезка (соответственно а при отрицательном - вне этого отрезка, то из второго утверждения теоремы 3 следует первое. Доказываем второе утверждение теоремы 3, ограничиваясь случаем плоскости. Пусть (в системе координат ) имеем

Так как точка М делит отрезок в отношении , то

в пространстве к этим равенствам присоединится еще равенство . При данном аффинном преобразовании точки перейдут в точки с теми же координатами, что и у точек , но только в координатной системе . Эти координаты связаны по-прежнему соотношениями (3), из которых следует, что делит отрезок ММ в отношении . Этим теорема 3 доказана.

Пусть при аффинном преобразовании А пространства плоскость отображается на плоскость . Возьмем в плоскости какой-нибудь репер , т. е. пару неколлииеарных векторов , приложенных к какой-нибудь точке о (рис. 145). При преобразовании А точка о плоскости перейдет в точку о плоскости , неколлинеарные векторы перейдут в неколлинеарные векторы , т. е. репер от плоскости перейдет в репер плоскости .

Всякий лежащий в плоскости вектор при этом перейдет в лежащий в плоскости вектор с теми же координатами относительно репера , какие вектор и имел относительно репера . Отсюда следует, что и всякая точка М плоскости перейдет в точку М плоскости , имеющую относительно репера , те же самые координаты, какие точка М имела в плоскости относительно репера . Другими место Теорема 4. Пусть при аффинном преобразовании пространства плоскость я переходит в плоскость . Тогда преобразование А отображает произвольный репер плоскости на некоторый репер оаплоскости и ставит в соответствие каждой точке М плоскости точку М плоскости , имеющую относительно репера , те самые координаты, которые точка М имела относительно репера . Другими словами: преобразование А порождает аффинное отображение плоскости на плоскость .

Преобразования на плоскости и в пространстве

В компьютерной графике всœе что относится к плоскому случаю принято обозначать 2D (2-dimentional) двумерное, а всœе что относится к пространственным – 3D.

Аффинные преобразования на плоскости

Affinis – родственный (лат). Потому, что фигуры сохраняются при аффинных преобразованиях.

Предположим, существует некоторая прямолинœейная система координат (OXY). Тогда, каждой точке М можно поставить в соответствие пару координат (x,y). Введя другую систему координат O * X * Y * , можно поставить той же точке М другую пару координат (x * ,y *). Переход от одной системы к другой:

x * =ax+by+c, с условием |a b|¹0

y * =dx+ey+f |d e|

Эти формулы можно рассматривать двояко, либо сохраняется точка, и изменяется система координат, либо сохраняется система координат и изменяется точка. В дальнейшем эти формулы будут рассматриваться именно как преобразование точек в заданной системе координат. Причем всœе рассматриваемые системы будут прямоугольными (формулы позволяют работать и с непрямоугольными).


Нужно отметить, что координаты точки M можно представить в виде вектораиз начала координат с координатами Mx,My.

Тогда преобразование можно записать в векторной форме (это справедливо только для прямоугольной системы координат).

M*=((M-O*)X*,(M-O*)Y*)

Где O*-координаты начала координат второй системы в координатах первой. X*,Y* - орты (направляющие вектора) второй системы координат в координатах первой.

a=(Xx*), b=(Xy*),c=-O*X*

d=(Yx*), e=(Yy*),f=-O*Y*

Это преобразование можно записать и в матричном виде

, или , где вектора считаются в виде матриц вида 1´2.

Элемент Cij матрицы C=AB есть сумма произведений элементов i-ой строки матрицы A на элементы j-ого столбца матрицы B.

Обратное преобразование – решение системы линœейных уравнений, либо использовать обратную матрицу , но для случая, когда система представлена ортами можно проще. С этом случае обратная матрица равна транспонированной.

Аффинное преобразование – геометрическое преобразование плоскости или пространства ĸᴏᴛᴏᴩᴏᴇ можно получить комбинируя поворот, перенос, зеркальные отражения и масштабирование в направлениях координатных осœей.

Поворот (R - rotation). Вокруг начала координат на угол a.

x * =x*cosa-y*sina

y * =x*sina+y*cosa

Растяжение, сжатие вдоль координатных осœей (D – dilatation).

Отражение (M – mirror). Относительно оси абсцисс.

Перенос (T – translation).

Перенос представить в виде произведений вектора на матрицу нельзя, зато можно в виде суммы векторов.

В курсе аналитической геометрии доказывается, что любое преобразование можно представить как последовательное исполнение (суперпозицию) этих простейших преобразований.

Иногда удобно представлять всœе преобразования в одной матричной форме, для этого используют однородные координаты.

Однородные координаты

Для точки M с координатами x,y на плоскости, однородными координатами является тройка чисел x1,x2,x3, одновременно неравная нулю и связанная соотношениями x1/x3=x, x2/x3=y. Точке с координатами x,y на плоскости сопоставляется точка xh,y,h,h в однородном пространстве, обычно h=1 (x,y,1).

Общее преобразование точек в однородных координатах можно записать в виде.

А матрицы базовых преобразований будут выглядеть следующим образом:

Комбинация преобразований.

Предположим нужно повернуть точку на угол вокруг некоторой точки A.

Начала переносим точку A в начало координат (-Ax,-Ay). Далее поворот. Далее перенос обратно в точку А. (Ax,Ay). Можно получить единое преобразование

Аффинные преобразования в пространстве

В 3D пространстве точка (вектор) представляется тремя координатами (x,y,z), или четырьмя однородными координатами (x,y,z,1).

Следует ввести понятия левая и правая тройка векторов. Три вектора a,b,c образуют правую тройку, в случае если после совмещения начал векторов кратчайший поворот от a к b кажется наблюдателю, смотрящему с конца вектора c идущим против часовой стрелки. Правило правой руки – вектор a совмещается с локтем, вектор b входит в ладонь, вектор c совпадает с большим пальцем. Система координат принято называть правой, в случае если ее направляющие вектора образуют правую тройку.

Векторное произведение c=a´b, с – вектор перпендикулярный обоим векторам, образует с ними правую тройку.

Cx=Ay*Bz-Az*By, Cy=Az*Bx-Ax*Bz, Cz=Ax*By- Ay*Bx

Преобразования остаются те же: вращение (только теперь вокруг трех осœей), растяжение, отражение (относительно трех плоскостей), перенос.

Вращение против часовой, в случае если смотреть из начала координат для левой системы координат (для правой – наоборот).

, ,

,

, ,

К примеру, нужно построить матрицу вращения относительно прямой с направляющим ортом L, проходящей через точку A.

1. Перенос A в начало координат

2. Совмещение прямой с осью X.

Сначала поворот вокруг оси X

на угол a , cosa=Lz/d, sina=Lx/d, где d=

В случае если d=0, значит прямая уже совпадает с осью X.

Затем поворот вокруг оси Y на угол b .

Повернутый вектор равен (Lx,Ly,Lz,1)=(Lx,0,d,1).

cosb=Lx, sinb=d

3. Поворот вокруг оси X на нужный угол

4. Возвращение к оси L ,

5. Перенос на точку A

Общая матрицы получится

Преобразование в систему координат заданную ортами

В случае если система задана тройкой взаимно перпендикулярных ортов X*,Y*,Z*.

, обратное преобразование – транспонированная матрица [R] T

Проектирование

Проектирование крайне важно в первую очередь, для того, чтобы отобразить трехмерные объекты на плоском экране, но существуют и другие применения, к примеру, тени.

Существует два наиболее употребляемых вида проектирования параллельное и центральное (перспективное).

При проектировании объекта на плоскость нужно провести через каждую точку объекта прямую из заданного проектирующего пучка и найти пересечение этой прямой с плоскостью.

При параллельном проектировании пучок состоит из параллельных прямых, при центральном – проходит через некоторую точку.

Параллельные проекции можно разделить на два типа, когда прямые пучка перпендикулярны плоскости проектирования – проекции называют аксонометрическими, а когда нет, косоугольными (такие проекции мы рассматривать не будем).

Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, чтобы получить аксонометрическую параллельную проекцию объекта на экране нужно совместить направление пучка с одной из осœей (обычно это Z). Оси X и Y совпадут с осями X,Y на экране, а ось Z – будет направлена вглубь экрана.

Чтобы получить перспективную проекцию точки крайне важно поместить точку схода пучка в начало координат, направление на экран (перпендикуляр из точки схода к плоскости проектирования) совместить с осью Z, тогда Xp=X*d/Z, Yp=Y*d/Z, где d - расстояние от начала координат до плоскости проектирования.

Это преобразование можно записать в виде матрицы. ,

Единственное, в таком преобразовании теряется глубина (z), но можно ее вычислить из последней координаты вектора.

Кроме этих преобразований проектирования крайне важно сделать еще несколько, чтобы изображение правильно смотрелось на экране. В первую очередь, его нужно растянуть до размеров окна, во-вторых, его нужно зеркально отобразить вокруг оси Х (т.к. ось Y обычно направлена вниз), в-третьих, его нужно перенести в центр окна.

Общая матрица преобразования выглядит следующим образом.

Cx,Cy – координаты центра экрана.

ratio – отношение размера по Y к размеру по X, для разных разрешений экрана разный. Разрешение – количество точек на единицу поверхности, в данном случае единица – весь экран монитора. Экран монитора имеет соотношение горизонтального размера к вертикальному 4/3, в связи с этим для разрешений с количеством точек по горизонтали и вертикали кратным этому числу ratio=1 (к примеру 640/480). Иначе ratio=(4*sizey)/(3*sizex) (320x200 =0.83).

S – масштабный коэффициент, для параллельной проекции выбирается вручную, для перспективной проекции S равняется единице, но рассчитывается d (расстояние до плоскости проектирования) исходя из поля зрения FOV (field of view). FOV – максимальный угол, который образуют прямые в пучке, угол зрения.

FOV обычно варьируется от 50° до 100°, FOV человеческого глаза - 90°.

Мировая, модельная и экранная системы координат

Мировая – основная система координат, в которой заданы всœе объекты сцены.

Модельная – система координат, в которой задана внутренняя структура объектов.

Экранная – система координат наблюдателя, еще ее называют системой координат камеры.

Модель обычно располагают в модельной системе таким образом, что центр системы совпадает либо с геометрическим, либо с центром масс модели, ось X совпадает с направлением вперед, ось Y – вправо, ось Z – вверх.

Модель задается в мировой системе координат координатами центра модели M (вектор) и ориентацией (либо тремя ортами, либо тремя углами крен (X), тангаж (Y), курс (Z), матрица при этом формируется как последовательность поворотов ). Для преобразования из модельных координат нужно сначала повернуть в соответствии с матрицей ориентации , а затем перенести на .

Курс Крен Тангаж

Положение и ориентацию камеры можно задать точно аналогично тому, как и положение модели. Но часто, достаточно только направления зрения камеры. Обычно (в реальной жизни) камера не имеет крена, ᴛ.ᴇ. ось X (вправо) всœегда горизонтальна, а плоскость YZ следовательно всœегда вертикальна.

Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, в случае если предположить, что ось Z камеры (направление зрения) не вертикальна, то можно найти ось X=Norm(Z´Up), где Up(0,0,1) вертикальный вектор (X получится перпендикулярен вертикальному вектору Up, а значит горизонтален). Наконец ось Y=X´Z (вверх). Следите за тем, чтобы система оставалась левой.

Чтобы преобразовать точки из мировой системы в экранные крайне важно сначала применить перенос , а затем повернуть на транспонированную матрицу ориентации камеры T .

Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, для того, чтобы перевести точку из модельных координат в экранные крайне важно произвести следующее преобразование T . После таких преобразований ось Z будет направлена вдоль направления зрения и можно делать проектирование.

Лекция 6-7-8

Преобразования на плоскости и в пространстве - понятие и виды. Классификация и особенности категории "Преобразования на плоскости и в пространстве" 2017, 2018.

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

Определение. Преобразование плоскости называется аффинным (от англ. affinity – родство) , если

  • оно взаимно однозначно;
  • образом любой прямой является прямая.

Преобразование называется взаимно однозначным , если

  • разные точки переходят в разные;
  • в каждую точку переходит какая-то точка.

Свойства аффинного преобразования в трехмерном пространстве:

  • отображает n -мерный объект в n -мерный: точку в точку, линию в линию, поверхность в поверхность;
  • сохраняет параллельность линий и плоскостей;
  • сохраняет пропорции параллельных объектов – длин отрезков на параллельных прямых и площадей на параллельных плоскостях.

Любое аффинное преобразование задается матрицей 3x 3 с ненулевым определителем и вектором переноса:

Посмотрим на это с точки зрения математики. R представляет собой матрицу линейного оператора над пространством трехмерных векторов. Вектор T требуется для осуществления параллельного переноса: если помножить (000) на любую матрицу 3x 3, опять получим (000) – начало системы координат, относительно преобразования R , является неподвижно точкой. Требование, чтобы определитель был ненулевой, диктуется определением. По сути, если определитель матрицы R равен нулю, то всё пространство переходит в плоскость, прямую или точку. Тем самым не соблюдается взаимная однозначность .

На практике удобно задавать аффинное преобразование одной матрицей. При этом используются однородные координаты, введенные в предыдущей статье . Аффинное преобразование будет задаваться следующей матрицей 4x 4:

Заметим, что первые три значения последней строки равны 0. Это необходимое условие того, что преобразование будет аффинным. В общем случае произвольная матрица размера 4x 4 задает проективное преобразование. Такие преобразования, как можно догадаться из названия, используются для проецирования трехмерной сцены. Подробнее об этом будет рассказано в одной из последующих статей.

Рассмотрим частные случаи аффинных преобразований.

Прим. Здесь и в дальнейшем будет использоваться система координат, введенная следующим образом:

  • система координат правая;
  • ось z направлена на наблюдателя, перпендикулярно плоскости экрана;
  • ось y находится в плоскости экрана и направлена вверх;
  • ось x находится в плоскости экрана и направлена вправо.

Подробнее мы остановимся на этом при рассмотрении геометрического конвейера.

Матрица этого преобразования выглядит следующим образом:

В данном случае матрица R = E , единичной матрице.

Преобразования, рассматриваемые ниже, затрагивают только матрицу R , поэтому будет указываться только она.

Поворот (вращение)



Если на плоскости повороты делались вокруг некоторой точки, то в трехмерном пространстве повороты производятся вокруг некоторого вектора. Перед тем, как перейти к построению матрицы поворота вокруг произвольного вектора, рассмотрим частные случаи поворотов вокруг координатных осей.

Прим. Поворот вокруг произвольного вектора не равно поворот вокруг произвольной направленной прямой.



Заметим, что при повороте вокруг оси y ординаты точек (у -координаты) не меняются. Также стоит отметить, что координаты x и z точки преобразуются независимо от y -координаты. Это означает, что любая точка p (x , y , z ) перейдет в точку p ’(x ’(x , z ), y , z ’(x , y )) . Теперь осталось понять, как преобразуются координаты x и z : в плоскости Oxz это будет поворот вокруг начала координат по часовой стрелке (т.к. x z y - левая тройка), т.е. в отрицательном направлении. Матрица такого преобразования известна (см. Поворот плоскости):



Матрица преобразования R y (φ y ) :

Поворот вокруг осей x и z



Аналогичными рассуждениями можно получить матрицы поворотов R x (φ x ) и R z (φ z ) вокруг осей x и z , соответственно.

Приведём окончательные результаты:

Несложно заметить, что определители матриц R x , R y , R z равны 1 . Также матрицы вращений R rot обладают свойством ортогональности: R T R = RR T = E . Из этого, в свою очередь, следует полезное свойство, что обращение матрицы поворота можно заменить транспонированием: R -1 (φ ) = R T (φ ) .

Масштабирование (сжатие/растяжение, отражение)



Коэффициенты сжатия/растяжения, по аналогии с двухмерным пространством, определяются диагональными членами матрицы R :

Результат:



Комбинация коэффициентов s x = -1, s y = 1, s z = 1 будет задавать отражение от плоскости Oyz (x = 0) . При s x = s y = s z = -1 получим центральную симметрию относительно начала координат.

Интерпретация матрицы R

Рассмотрим, что представляет собой матрица R с точки зрения линейной алгебры. Оказывается, что матрица R содержит базис новой системы координат.

Действительно, матрица

(R 11 R 12 R 13 )

(R 21 R 22 R 33 )

(R 31 R 32 R 33 )

переводит вектора декартова базиса:

(100) → (R 11 R 21 R 31 )

(010) → (R 12 R 22 R 32 )

(001) → (R 13 R 23 R 33 )



Теперь несложно получить преобразование скоса. Например:

Прим. Если придерживаться общепринятой терминологии, то приведенное выше преобразование называется сдвигом. Сдвигом (shear ) будетлюбое преобразование, главная диагональ матрицы R которого единичная. Если при этом определитель матрицы R равен нулю, то преобразование не является аффинным.

Сложные аффинные преобразования

Сложные аффинные преобразования можно получить как комбинацию простых (элементарных) преобразований. При этом выбирать простые аффинные преобразования можно по разному. Например, поворот можно представить как комбинацию масштабирования и сдвига. Тем не менее, для удобства, поворот также считается элементарным преобразованием. Поворот вокруг произвольного вектора представляется как комбинация поворотов вокруг координатных осей. Об этом будет подробно рассказано в следующей статье.

5. ГЕОМЕТРИЧЕСКИЕ ПРЕОБРАЗОВАНИЯ

Вывод изображения на экран дисплея и разнообразные действия с ним, в том числе и визуальный анализ, требуют от пользователя известной геометрической грамотности. Геометрические понятия, формулы и факты, относящиеся прежде всего к плоскому и трехмерному случаям, играют в задачах компьютерной графики особую роль. Геометрические соображения, подходы и идеи в соединении с постоянно расширяющимися возможностями вычислительной техники являются неиссякаемым источником существенных продвижений на пути развития компьютерной графики, ее эффективного использования в научных и иных исследованиях. Порой даже самые простые геометрические методики обеспечивают заметные продвижения на отдельных этапах решения большой графической задачи.

5.1. Преобразования на плоскости и в пространстве

Для решения таких задач, как движение объектов и их частей, управления камерой применяются аффинные преобразования (АП), рассмотрим их основные свойства:

1) точки, лежащие на одной прямой, после преобразования лежат на одной прямой;

2) пересекающиеся прямые остаются пересекающимися, а параллельные – параллельными;

3) при АП пространства пересекающиеся плоскости остаются пересекающимися, параллельные – параллельными, а скрещивающиеся – скрещивающимися;

4) при АП сохраняются отношения площадей двух квадратов на плоскости и отношение объемов двух кубов в пространстве.

Аффинные преобразования на плоскости

Допустим, на плоскости задана прямолинейная координатная система. Тогда каждой точке М соответствует упорядоченная пара чисел (х ,у ) ее координат (рис. 5.1). Вводя на плоскости еще одну прямолинейную систему координат, мы ставим в соответствие той же точкеМ другую пару чисел – (х *,у *).

Переход от одной прямолинейной координатной системы на плоскости к другой описывается следующими соотношениями:

x* = α x+ β y+ λ ,

y* = γ x+ δ y+ µ ,

где α , β , λ , γ , µ , δ – произвольные числа, связанные неравенством

α β ≠ 0.

γ δ

Формулы (1) можно рассматривать двояко: либо сохраняется точка и изменяется координатная система (рис. 5.2) (в этом случае произвольная точка М остается той же, изменяются лишь ее координаты), либо изменяется точка и сохраняется координатная система (рис. 5.3) (в этом случае формулы (1) задают отображение, переводящее произвольную точкуM (x ,y ) в точкуМ *(х *,у *), координаты которой определены в той же координатной системе).

Рис. 5.1. Исходные

Рис. 5.2. Преобразова-

Рис. 5.3. Преобразова-

ние системы координат

ние точки

В дальнейшем мы будем рассматривать формулы (1) как правило, согласно которому в заданной системе прямолинейных координат преобразуются точки плоскости.

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

1. Поворот вокруг начальной точки на угол ϕ описывается формулами

x * = x cosϕ − y sinϕ ,

y * = x sinϕ + y cosϕ .

2. Растяжение (сжатие) вдоль координатных осей можно задать так:

x * = α x ,y * = δ y ,α > 0,δ > 0.

Растяжение вдоль оси абсцисс обеспечивается при условии, что α > 1, а сжатие – при 0 <α < 1.

3. Отражение (относительно оси абсцисс) задается при помощи

x *= x ,y *= − y .

4. Параллельный перенос обеспечивают соотношения

x* = x+ λ , y* = y+ µ .

Выбор этих четырех частных случаев определяется двумя обстоятельствами.

1. Каждое из приведенных выше преобразований имеет простой и наглядный геометрический смысл (геометрическим смыслом наделены и постоянные числа, входящие в приведенные формулы).

2. Как доказывается в курсе аналитической геометрии, любое преобразование вида (1) всегда можно представить как по-

следовательное исполнение простейших преобразований. Для эффективного использования этих известных формул в за-

дачах компьютерной графики более удобной является их матричная запись. Матрицы, соответствующие случаям А ,Б иВ , строятся легко и имеют соответственно следующий вид:

cosϕ

sinϕ

− sinϕ

cosϕ

−1

Однако для решения рассматриваемых далее задач весьма желательно охватить матричным подходом все четыре простейших преобразования (в том числе и перенос), а значит, и общее аффинное преобразование. Этого можно достичь, например, так: перейти к описанию произвольной точки плоскости, не упорядоченной парой чисел, как это было сделано выше, а упорядоченной тройкой чисел.

Однородные координаты точки

Пусть М – произвольная точка плоскости с координатамих иу , вычисленными относительно заданной прямолинейной координатной системы. Однородными координатами этой точки называется любая тройка одновременно неравных нулю чиселx 1 ,x 2 ,x 3 , связанных с заданными числамиx иy следующими соотношениями:

x 1/ x 3= x , x 2/ x 3= y .

При решении задач компьютерной графики однородные координаты обычно вводятся так: произвольной точке М (х ,у ) плоскости ставится в соответствие точкаМ *(х ,у , 1) в пространстве (рис. 5.4).

Заметим, что произвольная точка на прямой, соединяющей начало координат, точку O (0, 0, 0) с точкойM *(х ,у , 1), может быть задана тройкой чисел вида (hx ,hy ,h ).

Рис. 5.4. Однородные координаты

Будем считать, что h ≠ 0. Вектор с координатамиhx ,hy ,h является направляющим вектором прямой, соединяющей точки 0(0, 0, 0) иМ *(х ,у , 1). Эта прямая пересекает плоскостьz = 1 в точке (х ,у , 1), которая однозначно определяет точку (х ,у ) координатной плоскостиху.

Тем самым между произвольной точкой с координатами (х ,у ) и множеством троек чисел вида (hx ,hy ,h ) приh ≠ 0 устанавливается (взаимно однозначное) соответствие, позволяющее считать числаhx ,hy ,h новыми координатами этой точки.

В проективной геометрии для однородных координат принято следующее обозначение: x :у : 1 илиx 1 :x 2 :x 3 (числаx 1 ,x 2 ,x 3 одновременно в ноль не обращались).

Применение однородных координат оказывается удобным уже при решении простейших задач, например, масштабирования:

1) точку с однородными координатами (0.5; 0.1; 2.5) h=1 нельзя представить целыми координатами, но, например, при выборе h= 10 получаем (5; 1; 25);

2) чтобы результаты преобразования не приводили к арифметическому переполнению, для точки с координатами

(80000;40000;1000) можно взять, например, h= 0,001. В ре-

зультате получим (80;40;1).

Приведенные примеры показывают полезность использования однородных координат при проведении расчетов. Однако основной целью введения однородных координат в компьютерной графике является их несомненное удобство в применении к геометрическим преобразованиям.

При помощи троек однородных координат и матриц третьего порядка можно описать любое аффинное преобразование плоскости.

В самом деле, считая h = 1, сравним две записи: помеченную символом * и следующую, матричную:

{x *y * 1}= {x y 1}

Нетрудно заметить, что после перемножения выражений, стоящих в правой части последнего соотношения, мы получим обе формулы (1) и верное числовое равенство 1 ≡ 1. Тем самым сравниваемые записи можно считать равносильными.

Элементы произвольной матрицы аффинного преобразования не несут в себе явно выраженного геометрического смысла. Поэтому, чтобы реализовать то или иное отображение, то есть найти элементы соответствующей матрицы по заданному геометрическому описанию, необходимы специальные приемы. Обычно построение этой матрицы в соответствии со сложностью рассматриваемой задачи разбивают на несколько этапов.

На каждом этапе находят матрицу, соответствующую тому или иному из выделенных выше случаев А ,Б ,В илиГ , обладающих хорошо выраженными геометрическими свойствами.

Выпишем соответствующие матрицы третьего порядка.

А. Матрица вращения (rotation)

Б. Матрица растяжения

cosϕ

sinϕ

(сжатия) (dilatation)

cosϕ

= − sinϕ

Г. Матрица переноса (translation)

В. Матрица отражения (re-

− 1 0 .

Рассмотрим примеры аффинных преобразований плоскости.

Пример 1. Построить матрицу поворота

вокруг точки А(a, b) на угол ϕ (рис. 5.5).

А (-а ,

совмещения центра

поворота

координат.

2-й шаг. Поворот на уголϕ .

A(a,

Рис. 5.5. Поворот

возвращения центра поворота в прежнее положение; матрица соответствующего преобразования.

cosϕ

sinϕ

= − sinϕ

cosϕ

−A

−a

−b

Перемножим матрицы в том же порядке, как они выписаны: . В результате получим, что искомое преобразование (в матричной записи) будет выглядеть следующим образом:

sinϕ

sinϕ

{x *y * 1}= {x y 1}×

− sinϕ

cosϕ

− a cosϕ + b sinϕ + a

− a sinϕ − b cosϕ + b

Элементы полученной матрицы (особенно в последней строке) не так легко запомнить. В то же время каждая из трех перемножаемых матриц по геометрическому описанию соответствующего отображения легко строится.

Пример 2. Построить матрицу растяжения с коэффициентами растяженияα вдоль оси абсцисс иβ вдоль оси ординат и с центром в точке А(а, b).

1-й шаг. Перенос на вектор А (-а , -b ) для совмещения центра растяжения с началом координат.

2-й шаг. Растяжение вдоль координатных осей с коэффициентамиα иβ соответственно.

3-й шаг. Перенос на векторА (а ,b ) для возвращения центра растяжения в прежнее положение; матрица соответствующего преобразования.