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

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 ) для возвращения центра растяжения в прежнее положение; матрица соответствующего преобразования.

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

В компьютерной графике всœе что относится к плоскому случаю принято обозначать 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.

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

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

Различают два вида изображений: растровые и векторные.
Растровое изображение состоит из множества точек - пикселей (от англ. 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). Математически операция проецирования также сводится к перемножению соответствующих матриц.