Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шп гр.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
2.81 Mб
Скачать

Перспективная проекция

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

Исходя из подобия треугольников, запишем такие пропорции:

Учитывая также координату Z:

В матричной форме преобразования координат можно записать так:

Обратите внимание на то, что здесь коэффициенты матрицы зависят от координаты (в знаменателе дробей). Это означает, что преобразование координат является нелинейным (а точнее, дробно-линейным), оно относится к классу проективных преобразований.

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

Пусть ( ) – координаты для системы координат, повернутой относительно начальной системы ( ) на углы и . Тогда:

Запишем преобразования координат перспективной проекции в виде:

Последовательность преобразования координат можно описать так:

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

Для такой перспективной проекции плоскость проецирования перпендикулярна лучу, исходящему из центра ( ) = (0,0,0) и наклоненному под углом и . Если камеру отдалять от центра координат, то центральная проекция видоизменяется. Когда камера в бесконечности, центральная проекция вырождается в параллельную проекцию.

Укажем основные свойства перспективного преобразования. В центральной проекции:

-- не сохраняется отношение длин и площадей;

--прямые линии изображаются прямыми линиями;

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

10 Лекции по компьютерной графике

3.1. Координаты и преобразования

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

Далее большими буквами x, y, z будут обозначаться обычные декартовые координаты, а маленькие буквы X, Y, Z будут использоваться для обозначения т.н. однородных координат.

3.2. Двумерные геометрические преобразования

Параллельный перенос

Параллельный перенос в плоском случае имеет вид:

 

   x` = x + Dx

 y` = y + Dy

[x’, y’] = [x, y] + [Dx, Dy]

 

 P’ P T

или в векторной форме:

P` = P + T,

где  P` = [x` y`] - вектор-строка преобразованных координат,

где x, y - исходные координаты точки, Tx, Ty - величина сдвига по осям, x`, y` - преобразованные координаты. P = [x y] -- вектор-строка исходных координат, P` = [x` y`] -- вектор-строка преобразованных координат, T = [Tx Ty] -- вектор-строка сдвига.

Масштабирование

Преобразование масштабирования относительно начала координат имеет вид:

  x` = x ·Sx

 y` = y ·Sy или

 

  Sx 0

[x`, y`] = [x, y] ·

   0 Sy 

  P` P

  S 

или в матричной форме:

P` = P ·S,

где Sx, Sy -- коэффициенты масштабирования по осям, а

S - матрица масштабирования

Поворот

Преобразование поворота относительно начала координат имеет вид:

 

  x`= x·cos(φ) – y·sin(φ)

  y`= x·sin(φ) + y·cos(φ)

или

   cos(φ) sin(φ)

[x`, y`] = [x, y] ·

   –sin(φ) cos(φ) 

  P` P

  R 

Где R – матрица поворота

φ – положительный угол поворота

или в матричной форме:

P` = P ·R,

 

Столбцы и строки матрицы поворота представляют собой взаимно ортогональные единичные векторы. В самом деле квадраты длин векторов-строк равны единице:

cos·cos+sin·sin = 1

(-sin) ·(-sin)+cos·cos = 1,

а скалярное произведение векторов-строк есть

cos·(-sin) + sin·cos = 0.

Так как скалярное произведение векторов A ·B = A ·B ·cos, где A - длина вектора A, B - длина вектора B, а  - наименьший положительный угол между ними, то из равенства скалярного произведения двух векторов-строк длины 1 следует, что угол между ними равен 90.

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

 

 

 

cos

-sin

 

 

·

 

 

cos

sin

 

 

=

 

 

1 0

 

 

 

,

 

 

-sin

cos

 

т.е. это единичный вектор вдоль оси X.

Аналогично, произведение второго столбца на матрицу даст вектор [ 0 1 ]. Это позволяет сформировать матрицу, если известны результаты преобразования.