- ТЕМА 2. ДВУМЕРНЫЕ ПРЕОБРАЗОВАНИЯ
- 2.1. Общие замечания
- 2.2. Простые преобразования точек
- 2.7. Комбинированные преобразования
- 2.8. Однородные координаты
- 2.9. Перемещение
- 2.10. Поворот вокруг произвольной точки
- 2.11. Отражение относительно произвольной прямой
- 2.12. Проецирование в однородных координатах
- Двумерные преобразования в однородных координатах параллельные прямые
- КООРДИНАТЫ И ПРЕОБРАЗОВАНИЯ
- 0.1.1 Двумерные преобразования
- 0.1.2 Двумерные преобразования в однородных координатах
- Декартовые точки с бесконечными координатами
- Параллельные прямые
- 0.1.3 Композиция двумерных преобразований
- 0.1.4 Эффективность преобразований
- 0.1.5 Трехмерные координаты
- 0.1.6 Проекции
- Параллельные проекции
- Центральная проекция
- 0.1.7 Стереоизображения
- 0.1.8 Геометрические преобразования растровых картин
- Преобразование масштабирования
- Преобразование поворота
- 🎥 Видео
Видео:Координаты, аффинные преобразования.Скачать
ТЕМА 2. ДВУМЕРНЫЕ ПРЕОБРАЗОВАНИЯ
Видео:Видеоурок "Преобразование координат"Скачать
2.1. Общие замечания
В компьютерной графике, наряду с соответствующими алгоритмами рисования, важно иметь математический аппарат, позволяющий редактировать изображение, т. е. осуществлять его преобразование (модификацию) в соответствии с требованиями решаемой задачи. Необходимо уметь производить с графическими объектами (точками, отрезками прямых, плоскими и объемными фигурами) такие операции, как масштабирование (в том числе пропорциональное), сдвиги, симметричные отражения (относительно точки, линии, плоскости), повороты (например, относительно какой-либо точки или линии), перемещения и т. п. Подобные действия и их комбинации обычно реализуются с помощью матричных операций с данными. Краткие сведения об основах матричных преобразований, используемых при формировании двумерных сцен, приведены ниже (в рамках данной темы). Аналогичные преобразования при формировании объемных сцен кратко рассмотрены в следующей теме.
Видео:Преобразования # 10: произвольные системы координатСкачать
2.2. Простые преобразования точек
Точка P на плоскости однозначно определяется двумя своими координатами (x, y). В соответствие ей можно поставить матрицу-строку размером 1´2 вида (сначала будем использовать именно такое отображение точки). Следует заметить также, что точка может задаваться и соответствующей матрицей-столбцом размером 2´1. В любом случае матрицу, определяющую положение точки, часто называют координатным вектором или вектором положения.
Большинство из перечисленных выше элементарных преобразований по отношению к точке можно реализовать путем умножения матрицы на матрицу общего преобразования размером 2´2 вида :
,
где , – координаты точки P*, являющейся результатом преобразования точки P, причем .
Рассмотрим некоторые специальные случаи.
Умножение исходной матрицы на единичную 2´2 матрицу (a = d = 1, b = c = 0)
не приводит к каким-либо изменениям; поэтому подобную единичную матрицу часто называют матрицей тождественного преобразования.
– происходит так называемое локальное масштабирование (растяжение при |a| > 1 или сжатие при 0 1 или сжатие при 0 0 происходит отражение относительно оси y, при a > 0, d 1, происходит равномерное расширение, т. е. увеличение исходной фигуры, если же 0 0 осуществляет непропорциональное локальное масштабирование; неравномерное расширение и сжатие возникают в зависимости от значений (в рассматриваемом случае – положительных) a и d, которые могут быть больше или меньше, чем 1, независимо друг от друга.
Видео:Матрица поворотаСкачать
2.7. Комбинированные преобразования
При модификации графического объекта часто требуется не одно простое его преобразование, а несколько последовательно проведенных преобразований. В этом случае исходную матрицу (составленную из координат точки, концов отрезка или вершин многоугольника) можно умножить на матрицу первого преобразования, полученный результат – на матрицу второго преобразования и т. д. Конечный результат будет определяться выражением
,
где – матрица n-го преобразования, n = 1, 2, …, N.
При подобных действиях следует учитывать то обстоятельство, что операция умножения матриц не является коммутативной (т. е. в общем случае ), и следует строго соблюдать порядок (последовательность) выполнения преобразований (операций умножения).
Вместе с тем, для матриц справедлив ассоциативный закон: . Поэтому для достижения того же результата можно поступить иначе: отдельные преобразования предварительно комбинировать, т. е. рассчитать матрицу полного преобразования (такую матрицу называют также композицией преобразований), и затем применить ее для преобразования исходной матрицы –
.
Продемонстрируем оба возможных подхода к комбинированному преобразованию на простом примере. Пусть требуется исходную фигуру – например, треугольник F (рис.2.8), координаты вершин которого сведены в 3´2 матрицу – повернуть на 90° вокруг точки начала координат и затем полученную промежуточную фигуру симметрично отразить относительно прямой у = – x. Первому преобразованию соответствует матрица , а второму – матрица . Осуществим последовательно соответствующие умножения:
;
очевидно, что первое умножение приводит к промежуточному результату – треугольнику F¢ (рис.2.8), второе – к конечному результату – треугольнику F* (рис.2.8).
Используем другой возможный путь комбинированного преобразования: рассчитаем матрицу полного преобразования
и умножим на нее исходную матрицу
;
результат – треугольник F* (рис.2.8) – в точности совпадает с предыдущим.
Отметим здесь, что приведенный пример очень прост: выполняются два тривиальных преобразования, результат которых можно было бы получить с помощью единственного отражения (относительно оси y). Однако он иллюстрирует изложенные выше общие положения, связанные с комбинированными преобразованиями. Далее мы будем иметь возможность познакомиться с более сложными вариантами таких преобразований.
Видео:Матрица переходаСкачать
2.8. Однородные координаты
Ранее было замечено, что использование двумерных координатных векторов, отображающих точки на плоскости, в совокупности с матрицей общего преобразования размером 2´2 накладывает ряд ограничений на модификацию объектов. В первую очередь, эти ограничения обусловлены невозможностью применения преобразования координат. Существенно расширить возможности модификации позволяет использование однородных координат для отображения точек и, соответственно, матрицы общего преобразования размером 3´3.
Однородные координаты точки P (x, y) на физической плоскости xy представляют собой тройку чисел x¢, y¢, h; первые два из них связаны с реальными координатами точки соотношениями x¢ = hx и y¢ = hy, а h – это некоторое вещественное число (отметим, что случай h = 0 является особым и будет рассмотрен ниже). Однородным координатам точки можно поставить в соответствие трехмерный координатный вектор (вектор положения) – матрицу размером 1´3 вида . Очевидно, что при таком подходе каждую точку можно связать с бесконечным множеством наборов однородных координат и, соответственно, координатных векторов вида . Вместе с тем, для точки имеется лишь один набор однородных координат со значением h = 1; ему соответствует вектор положения вида . В компьютерной графике для отображения точек (за исключением точек бесконечности, см. далее) используются координатные векторы именно такого вида.
Применяя к вектору положения исходной точки матрицу общего преобразования размером 3´3 вида , получаем:
.
Данный результат практически идентичен тому, который был получен при умножении координатного вектора на матрицу общего преобразования размером 2´2 (см. выше). Выражения для координат и преобразованной точки в обоих случаях полностью совпадают. Следовательно, использование однородных координат совместно с матрицей общего преобразования вида позволяет осуществить все те преобразования точек, отрезков и многоугольников, о которых шла речь выше (это и происходит при реальной обработке графических объектов). Задавая соответствующие значения a, b, c и d, можно реализовать тождественное преобразование, операции локального масштабирования, отражения, сдвига и поворота, аналогичные уже рассмотренным. Однако, все они, по-прежнему, будут осуществляться относительно точки начала координат.
Видео:15. Проективная плоскостьСкачать
2.9. Перемещение
Исследуем теперь дополнительные возможности, открывающиеся при новом подходе к преобразованиям. Проведем следующую матричную операцию:
;
полученный результат можно трактовать двояко: с одной стороны, можно считать, что операция привела к перемещению исходной точки вдоль осей x и y соответственно на m и n в исходной системе координат x0y (рис.2.9а); с другой стороны, можно полагать, что точка осталась на месте, а произошло преобразование координат – новая система координат x*0*y* сдвинута относительно исходной на – m вдоль оси x и на – n вдоль оси y (рис.2.9б).
В любом случае, выяснилось, что элементы m и n матрицы преобразования размером 3´3 являются коэффициентами перемещения в направлениях x и y соответственно. И не менее важный вывод из приведенного примера – теперь каждая точка плоскости, в том числе начало координат, может быть преобразована.
Видео:ВСЯ ПРАВДА ПРО АФФИННОЕ ПРЕОБРАЗОВАНИЕСкачать
2.10. Поворот вокруг произвольной точки
Имея более мощный, чем ранее, математический аппарат можно реализовать и такое преобразование. Последовательность действий при этом может быть следующей:
§ объект преобразования перемещается таким образом, чтобы точка, относительно которой совершается поворот, попала в начало координат;
§ выполняется поворот объекта на требуемый угол вокруг точки начала координат;
§ осуществляется обратное перемещение объекта так, чтобы точка центра вращения возвратилась на исходное место.
Применительно координатному вектору точки подобная операция поворота вокруг точки с координатами (m, n) на произвольный угол q реализуется следующими матричными преобразованиями:
;
комбинируя три матрицы преобразования, получаем
.
Приведем простой пример рассмотренной операции: поворот отрезка L (рис.2.10), заданного однородными координатами его концов и , на 90° в положительном направлении (против часовой стрелки) вокруг точки с координатами (4, 5 ). Обобщая предыдущее выражение на случай преобразования отрезка, запишем (после подстановок в матрицу преобразования конкретных значений и расчета входящих в нее коэффициентов)
;
результат преобразования – отрезок L* (рис.2.10).
Видео:5 4 Координаты Преобразование координат при замене базисаСкачать
2.11. Отражение относительно произвольной прямой
В разделе 2.5 обсуждались случаи отражения относительно ряда характерных прямых, проходящих через точку начала координат. Рассмотрим теперь более сложное преобразование – симметричное отражение объекта относительно произвольной прямой линии, причем не проходящей через начало координат. Используемый теперь подход позволяет достичь этого преобразованием, включающим пять последовательных операций:
§ перемещение объекта преобразования вдоль оси x или y таким образом, чтобы линия, относительно которой он отражается, прошла через начало координат;
§ поворот объекта относительно точки начала координат до совпадения линии, относительно которой он отражается, с одной из координатных осей;
§ симметричное отражение объекта относительно данной координатной оси;
§ обратный поворот объекта относительно точки начала координат (на тот же угол, что и во втором пункте, но в обратном направлении);
§ обратное перемещение объекта вдоль оси x или y (на то же расстояние, что и в первом пункте, но в обратном направлении).
В матричном виде полное преобразование, представляющее собой комбинацию пяти преобразований, можно записать так:
,
где – матрица перемещения, – матрица поворота вокруг начала координат, – матрица отражения относительно соответствующей координатной оси, и – матрицы, обратные матрицам соответственно и .
Приведем конкретный пример: симметричное отражение треугольника F (рис.2.11а), координатные векторы вершин которого представляются как , и , относительно прямой линии . Для того, чтобы линия прошла через точку начала координат, можно осуществить перемещение вдоль оси y на – 2 единицы; поворот относительно начала координат на – arctg 0,5 = – 26,57 ° приведет к тому, что линия совпадет с осью x; матрица отражения относительно оси x очевидна; обратный поворот и обратное перемещение осуществляются матрицами, обратными матрицам второго и первого преобразований. Композиция преобразований будет иметь вид:
;
реализуя полное преобразование, получим:
;
рис.2.11б, в, г, д иллюстрируют различные этапы промежуточных преобразований в случае последовательного их применения к исходной матрице, а рис.2.11е – конечный результат (который, вообще говоря, получен одной матричной операцией после расчета матрицы полного преобразования) – треугольник F*.
Видео:Объем параболоида: тройной интеграл в цилиндрической системе координатСкачать
2.12. Проецирование в однородных координатах
Матрицу общего преобразования для трехмерных координатных векторов, используемых при двумерных преобразованиях, в общем виде можно представить так:
.
Ранее было установлено, как входящие в нее коэффициенты a, b, c, d, m и n влияют на соответствующие преобразования. Остальным трем коэффициентам в предыдущих разделах присваивались вполне определенные значения ( p = q = 0, s = 1), и они, по сути дела, не принимали участия в преобразованиях. Координатные векторы преобразованных точек всегда имели вид , т. е. число h (см. раздел 2.8) тождественно принимало единичное значение. Геометрически это можно трактовать как ограничение преобразований физической плоскостью h = 1 в трехмерном пространстве xyh. Вместе с тем, при других значениях коэффициентов p, q и s они также могут участвовать в преобразованиях.
Рассмотрим сначала, к какому эффекту приведут ненулевые значения коэффициентов p и q. Запишем следующее выражение:
;
данное преобразование привело к тому, что точка (x, y), которой изначально ставился в соответствие координатный вектор вида , преобразована в точку, которой ставится в соответствие координатный вектор вида , где x¢ = x, y¢ = y, ; с геометрической точки зрения полученный результат интерпретируется следующим образом: в трехмерном пространстве xyh конец P (рис.2.12) координатного вектора исходной точки принадлежит плоскости h = 1, а конец P¢ координатного вектора преобразованной точки – плоскости (причем в данном конкретном случае две другие компоненты однородных координат и соответствующего координатного вектора остаются неизменными).
Однако, как отмечалось ранее, в компьютерной графике используют векторы положения только вида . Поэтому, когда какое-либо преобразование приводит к результату с h ≠ 1 (и, кстати, с h ≠ 0), этот результат нормализуют, т. е. приводят к требуемому виду путем деления всех трех составляющих однородных координат на величину h. В рассматриваемой задаче окончательный результат преобразования будет иметь вид
;
геометрически такой же результат, а именно точку P* (рис.2.12), можно получить путем проецирования точки P¢, принадлежащей плоскости h ≠ 1, на плоскость h = 1 по лучу, соединяющему точку P¢ с началом координат.
Нетрудно заметить, что при h > 1 (как на рис.2.12) координаты x* и y* преобразованной точки пропорционально уменьшаются (в h раз) по сравнению теми же координатами исходной точки; при h 1 имеет место равномерное расширение, при 0 1 – равномерное сжатие, если 0 0, на положительной полуоси x, при условии, что x 0 положительной полуоси y, при y 0 – в первом квадранте координатной плоскости xy, при x = y 0, y 0 – во втором ее квадранте.
Видео:Матрицы масштабирования, переноса и поворотаСкачать
Двумерные преобразования в однородных координатах параллельные прямые
Преобразования переноса, масштабирования и поворота записываются в матричной форме в виде
,
,
.
Очевидно, что перенос, в отличие от масштабирования и поворота, реализуется с помощью сложения. Это обусловлено тем, что вводить константы переноса внутрь структуры общей матрицы размером 2 ´ 2 не представляется возможным. Желательным является представление преобразований в единой форме – с помощью умножения матриц. Эту проблему можно решить за счет введения третьей компоненты в векторы точек и , т. е. представляя их в виде и . Матрица преобразования после этого становится матрицей размером 3 ´ 2:
.
Это необходимо, поскольку число столбцов в матрице, описывающей точку, должно равняться числу строк в матрице преобразования для выполнения операции умножения матриц. Таким образом,
,
откуда следует, что константы т, п вызывают смещение х* и y* относительно х и у. Поскольку матрица 3 ´ 2 не является квадратной, она не имеет обратной матрицы. Эту трудность можно обойти, дополнив матрицу преобразования до квадратной размером 3 ´ 3. Например,
.
Заметим, что третья компонента векторов положения точек не изменяется при добавлении третьего столбца к матрице преобразования. Используя эту матрицу в соотношении, получаем преобразованный вектор [х* у* 1]. Добавление третьего элемента к вектору положения и третьего столбца к матрице преобразования позволяет выполнить смещение вектора положения. Третий элемент здесь можно рассматривать как дополнительную координату вектора положения. Итак, вектор положения [х у 1] при воздействии на него матрицы 3 ´ 3 становится вектором положения в общем случае вида [X Y Н]. Представленное преобразование было выполнено так, что
Преобразование, имеющее место в трехмерном пространстве, в нашем случае ограничено плоскостью, поскольку H = 1. Если, однако, третий столбец
матрицы преобразования Т размера 3 х 3 отличен от 0, то в результате матричного преобразования получим [х у 1] =[Х Y Н], где Н ¹ 1.
Плоскость, в которой теперь лежит преобразованный вектор положения, находится в трехмерном пространстве. Однако сейчас нас не интересует то, что происходит в трехмерном пространстве.
Итак, найденные х* и у* получены с помощью пучка лучей, проходящих через начало координат. Результат преобразований показан на рис. 3.3 .
Рис. 3.3. Геометрическое представление однородных координат
Из рассмотрения подобных треугольников видно, что
и .
Рассматривая три компоненты, запишем это в виде
.
Представление двумерного вектора трехмерным или в общем случае n -мерного вектора (п + 1)-мерным называют однородным координатным воспроизведением. При однородном координатном воспроизведении n -мерного вектора оно выполняется в (п + 1)-мерном пространстве, и конечные результаты в n -мерном пространстве получают с помощью обратного преобразования. Таким образом, двумерный вектор [х у] представляется трехкомпонентным вектором . Разделив компоненты вектора на однородную координату h, получим
и .
Не существует единственного однородного координатного представления точки в двумерном пространстве. Например, однородные координаты (12, 8, 4), (6, 4, 2) и (3, 2, 1) представляют исходную точку [3 2]. Для простоты вычислений выбираем [х у 1], чтобы представить непреобразованную точку в двумерных однородных координатах. Преобразование
в дополнительных координатах задается выражением в однородных координатах в виде
.
Выполнение указанных выше преобразований показывает, что Х = х*, Y = у*, а Н = 1. Равенство единице дополнительной координаты означает, что преобразованные однородные координаты равны исходным координатам.
В общем случае Н ¹ 1, и преобразованные обычные координаты получаются за счет нормализации однородных координат, т. е.
и .
Геометрически все преобразования х и у происходят в плоскости Н = 1 после нормализации преобразованных однородных координат.
Преимущество введения однородных координат проявляется при использовании матрицы преобразований общего вида порядка 3 ´ 3
,
с помощью которой можно выполнять и другие преобразования, такие как смещение, операции изменения масштаба и сдвига, обусловленные матричными элементами а, b, с и d. Указанные операции рассмотрены ранее.
Чтобы показать воздействие третьего столбца матрицы преобразований 3 ´ 3, рассмотрим следующую операцию:
;
здесь Х = х, Y = у, а Н = рх + qy + 1. Переменная Н, которая определяет плоскость, содержащую преобразованные точки, представленные в однородных координатах, теперь образует уравнение плоскости в трехмерном пространстве.
Это преобразование показано на рис. 3.4 , где линия АВ, лежащая в плоскости ху, спроектирована на линию CD плоскости рХ + qY — Н + 1 = 0.
Рис. 3.4. Преобразование линии в однородных координатах
На рисунке величина р = q = 1.Выполним нормализацию для того, чтобы получить обычные координаты:
,
Полагая р = q = 1, для изображенных на рисунке точек А и В с координатами соответственно (1, 3) и (4, 1) получим
и .
После преобразования А в С* и В в D* имеем
и .
Однородные координаты для точек С* и D*, показанные на рисунке, соответственно равны
и .
Результатом нормализации является перевод трехмерной линии CD в ее проекцию C * D * на плоскость Н = 1. Как показано на рисунке, центром проекции является начало координат.
Основная матрица преобразования размером 3 ´ 3 для двумерных однородных координат может быть подразделена на четыре части:
.
Как мы видим, а, b , с и d осуществляют изменение масштаба, сдвиг и вращение; т и п выполняют смещение, а р и q — получение проекций. Оставшаяся часть матрицы, элемент s, производит полное изменение масштаба. Чтобы показать это, рассмотрим преобразование
Здесь Х = х, Y = у, а Н = s. Это дает х* = x / s и y * == y / s . В результате преобразования [х у 1 ] —> [ x / s y / s 1] имеет место однородное изменение масштаба вектора положения. При s 1 — уменьшение масштаба.
КООРДИНАТЫ И ПРЕОБРАЗОВАНИЯ
Описание, конструирование, манипулирование и представление геометрических объектов являются центральными работами в графических системах. Их поддержка в требуемом объеме за счет соответствующих математических методов, алгоритмов и программ оказывают существенное влияние на возможности и эффективность графической системы. В данном разделе будут рассмотрены математические методы для описания геометрических преобразований координат в двух, трех и четырехмерном случае, будут обсуждены некоторые вопросы эффективности, рассмотрены геометрические преобразования растровых картин.
Далее большими буквами X, Y, Z будут обозначаться обычные декартовые координаты, а маленькие буквы x, y, z будут использоваться для обозначения т.н. однородных координат.
0.1.1 Двумерные преобразования
Преобразование сдвига в плоском случае имеет вид:
| (0.1.1) |
или в векторной форме:
| (0.1.2) |
где ¯ Pn = [Xn Yn] ¯ — ¯ вектор-строка преобразованных координат, где X,Y — исходные координаты точки,
Tx,Ty — величина сдвига по осям,
Xn,Yn — преобразованные координаты.
P = [X Y] — вектор-строка исходных координат,
Pn = [Xn Yn] — вектор-строка преобразованных координат,
T = [Tx Ty] — вектор-строка сдвига.
Преобразование масштабирования относительно начала координат имеет вид:
| (0.1.3) |
или в матричной форме:
| (0.1.4) |
где Sx, Sy — коэффициенты масштабирования по осям, а
S = [
|
| ||
|
|
Преобразование поворота относительно начала координат имеет вид:
| (0.1.5) |
или в матричной форме:
| (0.1.6) |
где f — угол поворота, а
R = [
|
| ||
|
|
Столбцы и строки матрицы поворота представляют собой взаимно ортогональные единичные векторы. В самом деле квадраты длин векторов-строк равны единице:
|
|
а скалярное произведение векторов-строк есть
|
Так как скалярное произведение векторов A ·B = | A | · | B | ·cos y , где | A | — длина вектора A, | B | — длина вектора B, а y — наименьший положительный угол между ними, то из равенства 0 скалярного произведения двух векторов-строк длины 1 следует, что угол между ними равен 90 ° .
Аналогичное можно показать и для векторов-столбцов. Кроме того вектора-столбцы представляют собой такие единичные векторы, которые после выполнения преобразования, заданного этой матрицей, совпадут с осями. В самом деле, произведение первого столбца на матрицу есть
| (0.1.7) |
т.е. это единичный вектор вдоль оси X. Аналогично, произведение второго столбца на матрицу даст вектор [ 0 1 ]. Это позволяет сформировать матрицу, если известны результаты преобразования (см. пример в п. ).
0.1.2 Двумерные преобразования в однородных координатах
Как видно из (2), (4) и (6) двумерные преобразования имеют различный вид. Сдвиг реализуется сложением, а масштабирование и поворот — умножением. Это различие затрудняет формирование суммарного преобразования и устраняется использованием двумерных однородных координат точки, имеющих вид:
|
Здесь w — произвольный множитель не равный 0.
Двумерные декартовые координаты точки получаются из однородных делением на множитель w:
| (0.1.8) |
Однородные координаты можно представить как промасштабированные с коэффициентом w значения двумерных координат, расположенные в плоскости с Z = w.
В силу произвольности значения w в однородных координатах не существует единственного представления точки, заданной в декартовых координатах.
Преобразования сдвига, масштабирования и поворота в однородных координатах относительно центра координат все имеют одинаковую форму произведения вектора исходных координат на матрицу преобразования.
| (0.1.9) |
| (0.1.10) |
| (0.1.11) |
Как видно из (9) — (11), wn = w, а матрица преобразования для двумерных однородных координат в общем случае имеет вид:
| (0.1.12) |
где элементы A, B, D и E определяют изменение масштаба, поворот и смещение, а L и M определяют сдвиг. Покажем, что элемент S определяет общее изменение масштаба, а элементы P и Q определяют проецирование.
Рассмотрим вначале для этого преобразование
|
Легко видеть, что xn = x, yn = y, h = S. Таким образом двумерные декартовые координаты преобразованной точки
|
т.е. такое преобразование задает изменение масштаба вектора положения точки. При S 1 — увеличение.
Для уяснения смысла третьего столбца матрицы преобразований (12) выполним преобразование
|
Здесь xn = x, yn = y, h = Px + Qy + 1, т.е. переменная h, которая определяет плоскость, содержащую преобразованные точки, представленные в однородных координатах, образует теперь уравнение плоскости в трехмерном пространстве:
| (0.1.13) |
Получим результирующие двумерные декартовые координаты Xn, Yn для преобразованной точки
|
Это соответствует вычислению их в плоскости Z = 1, т.е. проецированию из плоскости (13) в плоскость Z = 1. Легко показать, что центр проецирования находится в начале координат. Рассмотрим для этого параметрические уравнения прямой, проходящей через точки (X0, Y0, 1) и (X, Y, (MX+NY+1) ):
| (0.1.14) |
Из условия X(t) = X0 = 0 находим t = 1/(1 — h), подставляя это значение t в выражения для Y(t) и Z(t), получим:
|
|
Итак, показано, что элементы P и Q матрицы (12) определяют проецирование с центром проекции в начале координат.
Кроме удобств, связанных с единообразным представлением преобразований, и, следовательно, с упрощением композиции преобразований, рассматриваемой в следующем пункте, однородные координаты дают возможность простого представления точек, имеющих в декартовой системе значение координаты, равное бесконечности.
Декартовые точки с бесконечными координатами
Рассмотрим в декартовой системе линию, проходящую через начало координат и точку (X,Y). Однородные координаты этой точки — (x,y,h) = (hX, hY, h), где h имеет произвольное значение. Предел отношения x/y при h стремящимся к 0 равен X/Y, но при этом декартовые координаты стремятся к бесконечности. Таким образом, точка с однородными координатами
| (0.1.15) |
задает в декартовой системе точку на бесконечности для рассмотренной прямой. В частности, точка с однородными координатами (1, 0, 0) задает бесконечную точку на декартовой оси X, а точка с однородными координатами (0, 1, 0) задает бесконечную точку на декартовой оси Y.
Параллельные прямые
Покажем, что прямые, параллельные в декартовой системе координат, в однородных координатах имеют точку пересечения. Эта особенность далее будет использована при анализе перспективных преобразований.
Пусть две пересекающиеся прямые в декартовой системе координат заданы системой уравнений:
| (0.1.16) |
Решая эту систему относительно X и Y, найдем координаты точки пересечения
|
|
Запишем результат в однородных координатах
|
В силу произвольности масштабного множителя, умножим значения координат на (A1 ·B2 — A2 ·B1)
|
Если прямые параллельны, то определитель системы (16) — (A1 ·B2-A2 ·B1) равен нулю. Учитывая это и обозначая x0 = (C1 ·B2-C2 ·B1), y0 = (A1 ·C2-A2 ·C1), получим координату пересечения параллельных прямых в однородной системе координат
|
При этом точка пересечения лежит на прямой -y0 ·x + x0 ·y = 0 на бесконечности.
0.1.3 Композиция двумерных преобразований
Последовательное выполнение нескольких преобразований можно представить в виде единой матрицы суммарного преобразования. Умножение на единственную матрицу, естественно, выполняется быстрее, чем последовательное умножение на несколько матриц.
Рассмотрим сдвиг точки P0 на расстояние (Tx1, Ty1) в точку P1, а затем сдвинем точку P1 на расстояние (Tx2, Ty2) в точку P2. Обозначая через T1 и T2 матрицы сдвига, в соответствии с (9) получим:
|
Понятно, что сдвиг аддитивен, т.е. последовательное выполнение двух сдвигов должно быть эквивалентно одному сдвигу на расстояние (Tx1+Tx2, Ty1+Ty2). Для доказательства этого рассмотрим произведение матриц сдвига T1 и T2, равное
|
|
Итак, получили, что результирующий сдвиг есть (Tx1+Tx2, Ty1+Ty2), т.е. суммарный сдвиг, вычисленный как произведение матриц, как и ожидалось, аддитивен.
Рассмотрим теперь последовательное выполнение масштабирований, первое с коэффициентами (Sx1, Sy1), второе с коэффициентами (Sx2, Sy2). Следует ожидать, что суммарное масштабирование будет мультипликативным. Обозначая через S1 и S2 матрицы масштабирования, в соответствии с (10) получим
|
Найдем значения элементов матрицы S
|
Итак, получили, что результирующее масштабирование есть (Sx1 ·Sx2, Sy1 ·Sy2), т.е. суммарное масштабирование, вычисленное как произведение матриц, как и ожидалось, мультипликативно.
Аналогичным образом можно показать, что два последовательных поворота аддитивны.
Рассмотрим выполнение часто используемого поворота изображения на угол f относительно заданной точки P(X,Y). Это преобразование можно представить как перенос начала координат в точку (X,Y), поворот на угол f относительно начала координат и обратный перенос начала координат:
|
С использованием преобразований в однородных координатах, суммарное преобразование будет иметь простой вид:
|
0.1.4 Эффективность преобразований
Суммарная матрица двумерных преобразований в однородных координатах имеет вид:
|
где элементы A, B, D и E, отвечающие за изменение масштаба, поворот и смещение, — объединенная матрица масштабирования и поворота, а L и M определяют суммарный сдвиг.
Вычисление преобразованных однородных координат точки P с непосредственным использованием T в выражении P ·T требует 9 операций умножения и 6 операций сложения. Но так как третья однородная координата может быть выбрана равной 1, а третий столбец T содержит единственный ненулевой элемент, равный 1, то преобразование декартовых координат может быть представлено в виде:
|
что требует уже только 4 операции умножения и 4 операции сложения, что существенно меньше. Таким образом, несмотря на то, что матрицы 3×3 удобны при вычислении суммарного преобразования, выполнение фактического преобразования координат следует производить с учетом реальной структуры матрицы преобразования.
0.1.5 Трехмерные координаты
Далее при рассмотрении трехмерных преобразований, в основном, используется общепринятая в векторной алгебре правая система координат (рис. а). При этом, если смотреть со стороны положительной полуоси в центр координат, то поворот на +90 ° (против часовой стрелке) переводит одну положительную ось в другую (направление движения расположенного вдоль оси и поворачивающегося против часовой стрелки правого винта и положительной полуоси совпадают). В некоторых, специально оговариваемых случаях, используется левая система координат (см. рис. б). В левой системе координат положительными будут повороты по часовой стрелке, если смотреть с положительного конца полуоси. В трехмерной машинной графике более удобной является левая система координат. Тогда если, например, поверхность экрана совмещена с плоскостью XY, то большим удалениям от наблюдателя соответствую точки с большим значением Z (см. рис. б).
Работа с однородными трехмерными координатами и матрицами преобразования (формирование и композциция) подобна таковой для двумерного случая, поэтому здесь будут рассмотрены только матрицы преобразований сдвига, масштабирования и поворота и пример конструирования матрицы преобразования по известному его результату.
Подобно тому как в двумерном случае точка в однородных координатах представляется трехмерным вектором [ x y w ], а матрицы преобразований имеют размер 3×3, для трехмерного случая точка представляется четырехмерным вектором [ x y z w ], где w не равно 0, а матрицы преобразований имеют размер 4×4. Если w не равно 1, то декартовые координаты точки (X,Y,Z) получаются из соотношения:
|
Преобразование в однородных координатах описывается соотношением
|
Матрица преобразования T в общем случае имеет вид
|
Подматрица 3×3 определяет суммарные смещение, масштабирование и поворот. Подматрица-строка 1×3 — [ L M N ] задает сдвиг. Подматрица-столбец 3×1 — [ P Q R ] отвечает за преобразование в перспективе. Последний скалярный элемент — S определяет общее изменение масштаба.
В частности, матрица сдвига имеет вид:
|
Матрица обратного преобразования для сдвига получается путем смены знака у Tx, Ty и Tz.
Матрица масштабирования относительно центра координат имеет вид:
|
Матрица обратного преобразования для масштабирования формируется при замене Sx, Sy и Sz на величины, обратные к ним.
Ранее рассмотренная для двумерного случая матрица поворота (11) является в то же время трехмерным поворотом вокруг оси Z. Так как при трехмерном повороте вокруг оси Z (поворот в плоскости XY) размеры вдоль оси Z неизменны, то все элементы третьей строки и третьего столбца равны 0, кроме диагонального, равного 1:
|
При повороте вокруг оси X (в плоскости YZ) размеры вдоль оси X не меняются, поэтому все элементы первой строки и первого столбца равны 0, за исключением диагонального, равного 1:
|
При повороте вокруг оси Y (в плоскости XZ) размеры вдоль оси Y не меняются, поэтому все элементы второй строки и второго столбца равны 0, за исключением диагонального, равного 1:
|
Столбцы и строки подматриц 3×3 матриц поворота Rx, Ry, Rz, аналогично двумерному случаю, представляют собой взаимно ортогональные единичные векторы. Легко убедиться, что суммарная матрица преобразования для произвольной последовательности поворотов вокруг осей X, Y и Z имеет вид:
|
причем столбцы (и строки) представляют собой взаимно ортогональные единичные векторы. Более того, векторы-столбцы при повороте, задаваемом матрицей, совмещаются с соответствующими осями координат. Матрица, столбцы (или строки) которой представляют собой взаимно ортогональные векторы, называется ортогональной. Для любой ортогональной матрицы М обратная матрица совпадает с транспонированной. Это обеспечивает простоту вычисления обратного преобразования для поворота. Причем не надо фактически выполнять транспонирование, а достаточно просто поменять местами индексы строк и столбцов.
Взаимная ортогональность столбцов матрицы поворота и их совмещение с осями координат при преобразовании, задаваемом матрицей, позволяет легко сконструировать матрицу преобразования, если известны его результаты.
Пример формирования матрицы преобразования (из [])
Пусть заданы три точки P1, P2, P3. Найти матрицу преобразования такого, что после преобразования вектор P1P2 будет направлен вдоль оси Z, а вектор P1P3 будет лежать в плоскости YZ.
|
|
Здесь | P1P2 | — длина вектора P1P2.
|
|
|
0.1.6 Проекции
При визуализации двумерных изображений достаточно задать окно видимости в системе координат пользователя и порт отображения на экране дисплея, в котором будет выдаваться изображение из окна. В этом случае достаточно провести отсечение изображения по окну и выполнить двумерные преобразования окно-порт. На рис. показан простой пример двумерных преобразований. Окном отсекается часть изображения домика и один улей (см. рис. слева). Отсеченное изображение передается в порт отображения дисплея с выполнением преобразований окно-порт (см. рис. справа). В данном (простом) случае выполняется только преобразование сдвига.
В случае же трехмерных изображений отсечение выполняется уже не по окну, а по объему видимости и затем выполняется проецирование в порт отображения, который в свою очередь может быть проекцией объема видимости. Модель процесса визуализации трехмерных изображений приведена на рис. .
Как уже отмечалось, проецирование в общем случае — отображение точек, заданных в системе координат размерностью N, в точки в системе с меньшей размерностью. При отображении трехмерных изображений на дисплей три измерения отображаются в два.
Проецирование выполняется с помощью прямолинейных проекторов (проецирующих лучей), идущих из центра проекции через каждую точку объекта до пересечения с картинной поверхностью (поверхностью проекции) . Далее рассматриваются только плоские проекции, при которых поверхность проекции — плоскость в трехмерном пространстве.
По расположению центра проекции относительно плоскости проекции различаются центральная и параллельные проекции.
При параллельной проекции центр проекции находится на бесконечном расстоянии от плоскости проекции. Проекторы представляют собой пучок параллельных лучей. В этом случае необходимо задавать направление проецирования и расположение плоскости проекции. По взаимному расположению проекторов, плоскости проекции и главных осей координат различаются ортогональные, прямоугольные аксонометрические и косоугольные аксонометрические проекции .
При ортогональной проекции проекторы перпендикулярны плоскости проекции, а плоскость проекции перпендикулярна главной оси. Т.е. проекторы параллельны главной оси.
При аксонометрической проекции имеется одна из двух перпендикулярностей:
Изображение, полученное при параллельном проецировании, не достаточно реалистично, но передаются точные форма и размеры, хотя и возможно различное укорачивание для различных осей.
При центральной проекции расстояние от центра проекции до плоскости проецирования конечно, поэтому проекторы представляют собой пучок лучей, исходящих из центра проекции. В этом случае надо задавать расположение и центра проекции и плоскости проекции. Изображения на плоскости проекции имеют т.н. перспективные искажения, когда размер видимого изображения зависит от взаимного расположения центра проекции, объекта и плоскости проекции. Из-за перспективных искажений изображения, полученные центральной проекцией, более реалистичны, но нельзя точно передать форму и размеры. Различаются одно, двух и трехточечные центральные проекции в зависимости от того по скольким осям выполняется перспективное искажение. Иллюстрация центральной проекции приведена на рис. .
На рис. приведена классификация описанных выше плоских проекций.
Параллельные проекции
Вначале мы рассмотрим ортогональные проекции, используемые в техническом черчении, в регламентированной для него правосторонней системе координат, когда ось Z изображается вертикальной. Затем будут проиллюстрированы аксонометрические проекции также в правосторонней системе координат, но уже более близкой к машинной графике (ось Y вертикальна, ось X направлена горизонтально вправо, а ось Z — от экрана к наблюдателю). Наконец выведем матрицы преобразования в левосторонней системе координат, часто используемой в машинной графике, с вертикальной осью Y, осью X, направленной вправо и осью Z, направленной от наблюдателя.
Использование проекций в техническом черчении регламентируется стандартом ГОСТ 2.317-69. Наиболее широко, особенно, в САПР используются ортогональные проекции (виды). Вид — ортогональная проекция обращенной к наблюдателю видимой части поверхности предмета, расположенного между наблюдателем и плоскостью чертежа.
В техническом черчении за основные плоскости проекций принимают шесть граней куба (рис. ).
- Вид спереди, главный вид, фронтальная проекция, (на заднюю грань V),
- Вид сверху, план, горизонтальная проекция, (на нижнюю грань H),
- Вид слева, профильная проекция, (на правую грань W),
- Вид справа (на левую грань),
- Вид снизу (на верхнюю грань),
- Вид сзади (на переднюю грань).
Очевидно, что при ортогональной проекции не происходит изменения ни углов, ни масштабов.
При аксонометрическом проецировании (см. рис. 0.4) сохраняется параллельность прямых, а углы изменяются; измерение же расстояний вдоль каждой из координатных осей в общем случае должно выполняться со своим масштабным коэффициентом.
При изометрических проекциях укорачивания вдоль всех координатных осей одинаковы, поэтому можно производить измерения вдоль направлений осей с одним и тем же масштабом (отсюда и название изометрия). На рис. приведена (аксонометрическая прямоугольная) изометрическая проекция куба со стороной A. При этой проекции плоскость проецирования наклонена ко всем главным координатным осям под одинаковым углом. Стандартом регламентируется коэффициент сжатия, равный 0.82, а также расположение и взаимные углы главных координатных осей, равные 120 ° как это показано в левом верхнем углу рис. . Обычно сжатие не делается.
При диметрической проекции две из трех осей сокращены одинаково, т.е. из трех углов между нормалью к плоскости проекции и главными координатными осями два угла одинаковы. На рис. приведена (аксонометрическая прямоугольная) диметрическая проекция куба со стороной A. Там же показаны регламентируемые расположение осей и коэффициенты сжатия. Обычно вместо коэффициента сжатия 0.94 используется 1, а вместо 0.47 — 0.5.
В косоугольных проекциях плоскость проекции перпендикулярна главной координатной оси, а проекторы расположены под углом к ней. Таким образом, аксонометрические косоугольные проекции сочетают в себе свойства ортогональных и аксонометрических прямоугольных проекций.
Наиболее употребимы два вида косоугольной проекции — фронтальная (косоугольная) диметрия (проекция Kabinett — кабине) и горизонтальная (косоугольная) изометрия (проекция Kavalier — кавалье) или военная перспектива.
В случае фронтальной (косоугольной) диметрии при использовании правосторонней системы координат экрана плоскость проецирования перпендикулярна оси Z. Ось X направлена горизонтально вправо. Ось Z изображается по углом в 45 ° относительно горизонтального направления. Допускается угол наклона в 30 и 60 ° . При этом отрезки, перпендикулярные плоскости проекции, при проецирования сокращаются до 1/2 их истинной длины. На рис. приведена (аксонометрическая косоугольная) фронтальная диметрическая проекция куба со стороной A, там же показаны регламентируемые коэффициент сжатия, равный 0.5 и расположение осей.
В случае же (аксонометрической косоугольной) горизонтальной изометрии, как следует из названия, плоскость проецирования перпендикулярна оси Y а укорачивания по всем осям одинаковы и равны 1. Угол поворота изображения оси X относительно горизонтального направления составляет 30 ° . Допускается 45 и 60 ° при сохранении угла 90 ° между изображениями осей X и Z. Иллюстрация этого приведена на рис. .
Выведем выражения для матриц преобразования, используя теперь левостороннюю систему координат более естественную для машинной графики.
Простейшее параллельное проецирование — ортогональное выполняется на плоскость, перпендикулярную какой-либо оси, т.е. при направлении проецирования вдоль этой оси. В частности, проецирование в XY-плоскость, заданную соотношением Z = Z0, выполняется следующим образом:
|
Рассмотрим теперь косоугольное проецирование, при котором плоскость проецирования перпендикулярна главной оси, а проекторы составляют с плоскостью проецирования угол не равный 90 ° . Матрица для этого преобразования может быть найдена исходя из значений угла проецирования и координат преобразованной точки. На рис. показана косоугольная параллельная проекция единичного куба.
Из рисунка видно, что проектором, идущим из точки P0 в P1, точка P0(0,0,1) проецируется в P1(L·cos a , L·sin a , 0).
Теперь проектором, параллельным рассмотренному (рис. ), спроецируем некоторую точку (X,Y,Z) в точку (Xp,Yp,Zp).
Из подобия треугольников получаем:
|
|
Это соответствует следующему матричному выражению:
|
Таким образом, матрица аксонометрической косоугольной проекции для случая проецирования в плоскость Z = 0, выполняет следующее:
Различные варианты параллельных проекций формируются из полученной подстановкой значений L и углов a и b (см. рис. 0.10). В частности, для фронтальной косоугольной диметрии L = 1/2, следовательно, угол b между проекторами и плоскостью проецирования равен arctan2 = 63.4 ° . Угол же a , равен 45 ° и допускается 30 и 60 ° , как это сказано выше. (Обратите внимание, что в этой системе координат плоскость фронтальной проекции — плоскость XY, в отличие от системы координат технического черчения, где фронтальная проекция, как это показано на рис. 0.5, формируется в плоскости XZ).
Центральная проекция
Наиболее реалистично трехмерные объекты выглядят в центральной проекции из-за перспективных искажений сцены. Центральные проекции параллельных прямых, не параллельных плоскости проекции будут сходиться в точке схода . В зависимости от числа точек схода, т.е. от числа координатных осей, которые пересекает плоскость проекции, различаются одно, двух и трехточечные центральные проекции. Иллюстрация одно-, двух- и трехточечной центральных проекций куба приведена на рис. .
Наиболее широко используется двухточечная центральная проекция.
Выведем матрицу, определяющую центральное проецирование для простого случая одноточечной проекции (рис. ), когда плоскость проекции перпендикулярна оси Z и расположена на расстоянии d от начала координат. (Здесь используется удобная для машинной графики левосторонняя система координат).
Начало отсчета находится в точке просмотра. Ясно, что изображения объектов, находящиеся между началом координат и плоскостью проекции увеличиваются, а изображения объектов, расположенных дальше от начала координат, чем плоскость проекции уменьшаются.
Из рис. 0.13 видно, что для координат (X1,Y1) точки P1, полученной проецированием точки P0(X,Y,Z) в плоскость Z = d (плоскость экрана) выполняются следующие соотношения:
|
Такое преобразование может быть представлено матрицей 4×4
|
|
Для перехода к декартовым координатам делим все на z/d и получаем:
|
Если же точка просмотра расположена в плоскости проекции, тогда центр проекции расположен в точке ( 0, 0, -d ). Рассматривая подобные треугольники, аналогично вышеописанному, можем получить:
|
Матрица преобразования в этом случае имеет вид:
|
Матрица M0 может быть представлена в виде:
|
т.е. преобразование проецирования выполняется для этого случая путем переноса начала координат в центр проецирования, собственно проецирования и обратного сдвига начала координат.
0.1.7 Стереоизображения
Существенное повышение наглядности изображения достигается использованием псевдостереоизображений. В этом случае каждым глазом надо рассматривать отдельный перспективный вид. Оба таких вида отображаются на экран дисплея. Для их разделения могут использоваться:
· цветовое разделение, когда, например, изображение для левого глаза строится красным цветом, а для правого — синим и для просмотра используются цветные очки; недостаток этого способа состоит в том, что по сути дела можно формировать только простые каркасные изображения, но зато реализация проста и полностью используется пространственное разрешение дисплея;
· пространственное-временное разделение, когда, например, изображение для левого глаза строится в четных строках, а для правого — в нечетных и для просмотра используются электронные или электромеханические очки, перекрывающие или левый или правый глаз на время прорисовки нечетных, четных строк, соответственно; этот подход может быть реализован на дисплеях с чересстрочной разверткой, позволяет выводить достаточно динамические цветные полутоновые изображения, но с уменьшением вдвое разрешения по вертикали;
· временное разделение, когда для левого глаза используется одна страница видеопамяти, а для правого — вторая и происходит их переключение с достаточно большой частотой кадровой развертки; для перекрытия глаз также должны использоваться электронные или электромеханические очки; пространственное разрешение по строкам здесь не теряется.
Кроме этого, статические цветные псевдостереоизображения могут быть получены последовательным фотографированием изображений для левого и правого глаз с последующим просмотром через стереоскоп.
Используя результаты, полученные в предыдущем пункте, легко сконструировать матрицы преобразований для получения стереопроекций для левого и правого глаз.
0.1.8 Геометрические преобразования растровых картин
Также как и для векторных изображений в двумерном случае, для растровых картин могут в общем случае требоваться преобразования сдвига, масштабирования и поворота. В связи с существенно дискретным характером изображения при выполнении этих преобразований имеется ряд особенностей.
Преобразование сдвига реализуется наиболее просто и заключается в переписывании части изображения (bitblt — операции Bit Block Transfer). При этом возможно исполнение некоторых операций над старым и новым пикселами с одинаковыми координатами.
Наиболее употребимыми являются:
· замена — новый пиксел просто заменяет старый,
· исключающее ИЛИ — в видеопамять заносится результат операции XOR над старым и новым кодами пикселов. Эта операция обычно используется дважды — вначале для занесения некоторого изображения, например, перекрестия и повторного его занесения для восстановления исходной картины.
Кроме этого, для реализации техники «акварель», т.е. техники работы с прозрачными цветами, в видеопамять заносится результат цветовой интерполяции между старым и новым оттенками пикселов. Эта операция всегда точно реализуема в полноцветных дисплеях, хранящих значения R, G и B в каждом пикселе. В дисплеях с таблицей цветности возможно получение не совсем правильных результатов.
Преобразование масштабирования
Принято различать два типа масштабирования:
· целочисленное — zoom,
· произвольное, когда коэффициент масштабирования не обязательно целое число, — transfocation.
Наиболее просто реализуется целочисленное масштабирование. При увеличении в K раз каждый пиксел в строке дублируется К раз и полученная строка дублируется К раз. При уменьшении в K раз из каждой группы в K строк выбирается одна строка и в ней из каждой группы в K пикселов берется один пиксел в качестве результата. Не целочисленное масштабирование требует нерегулярного дублирования при увеличении и выбрасывания при уменьшении. Для отсутствия «дырок» в результирующем изображении при любых преобразованиях растровых картин следует для очередного пиксела результирующего изображения определить соответствующий (соответствующие) пикселы исходного изображения, вычислить значение пиксела и занести его.
Рассмотрим нецелочисленное уменьшение, т.е. перепись из большего массива в меньший (увеличение строится похожим образом).
Алгоритм ясен из следующей программы:
Понятно, что такой алгоритм требует точной вещественной арифметики, версия алгоритма с целочисленной арифметикой имеет вид:
Внутренняя часть цикла при записи на ассемблере существенно упрощается, если использовать то, что для обычных 16-ти разрядных ЭВМ при переполнении происходит смена знака.
Преобразование поворота
Определенные проблемы, связанные с дискретных характером изображения, возникают и при повороте растровой картины на угол не кратный 90 ° . Здесь возможны два подхода:
🎥 Видео
Семинар №13 "Определители n го порядка"Скачать
Лекция 4 | Компьютерная графика | Виталий Галинский | ЛекториумСкачать
Преобразование системы координат (параллельный сдвиг)Скачать
Самый короткий тест на интеллект Задача Массачусетского профессораСкачать
Точки пересечения графиков линейных функций. 7 класс.ОбразовательныйСкачать
Удалили с экзамена ОГЭ Устное Собеседование shorts #shortsСкачать
Семинар №12 "Аффинные преобразования плоскости"Скачать
Аффинная карта и прямые на проективной плоскостиСкачать
Полярная система координатСкачать
Аффинные ПреобразованияСкачать