Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Связь преобразований объектов c преобразованиями координат

Когда пользователь графической системы видит на экране перемещающийся объект, то, как вы считаете, что на самом деле происходит — перемещаются объекты или система координат в обратном направлении? Например, если в кино вы видите объекты, вращающиеся на экране по часовой стрелке, то может в действительности это камера поворачивается против часовой стрелки?

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

Такая относительность для объектов отображения и систем координат дает разработчикам компьютерных систем дополнительные возможности для мо-делирования и визуализации пространственных объектов. С каждым объек­том можно связывать как собственную локальную систему координат, так и единую для нескольких объектов. Это можно использовать, например, для моделирования подвижных объектов.

Обычно, того же самого эффекта можно добиться, если использовать различные подходы. Однако в одних случаях удобнее использовать преобразование координат, а в других — преобразование объектов. Не последнюю роль иг­рает сложность обоснования какого-то способа, его понятность.

Рассмотрим пример комбинированного подхода. Пусть нам нужно получить функцию расчета координат (X, Y) для поворота вокруг центра с координата­ми (Xo, Yo) (рис. 2.13).

Рис. 2.13. Вращение вокруг произвольного центра

Выше мы рассмотрели поворот относительно центра координат (0, 0). Для решения нашей задачи введем новую систему координат (xOy’) с центром в точке (х0, у0):

Для такой системы поворот точек происходит вокруг ее центра:


Преобразуем координаты (X’,Y’) в (X, Y) сдвигом системы координат в

точку (0,0).

Если объединить формулы преобразований, то получим результат:

Решение этой задачи можно было бы осуществить и в матричной форме:

Рассмотрим второй пример. Нашей задачей будет вывод формул параметри­ческого описания поверхности тора. Изобразим тор следующим образом (рис. 2.14).

Для произвольной точки Р, лежащей на поверхности тора, требуется выра­зить координаты (х, у, z) через константы, описывающие размеры фигуры, а также через некоторые параметры. Для поверхности в трехмерном простран­стве необходимо использовать два параметра. В качестве таковых выберем угловые величины: φ(широта) и ω (долгота).

Непосредственное определение координат точки Р представляется сложным, поэтому искомые координаты будем искать несколькими шагами преобразо­ваний. Рассмотрим окружность, лежащую в плоскости zOy, центр этой ок­ружности совпадает с центром координат. Координаты точки Р" с широтой составляют

где r— малый радиус тора.

Теперь перенесем окружность на расстояние R (большой радиус тора) по оси у в той же плоскости zOy. Получим точку P. Ее координаты:

Окружность, которой принадлежит точка Р', является геометрическим ме­стом точек тора с нулевой долготой (о. Если точку Р' повернуть на угол to, то получим искомую точку Р поверхности тора с координатами

Подставляя значения x’,y’,zполучим искомые формулы:

Эту задачу можно было бы решить, используя преобразование координат. Подобный случай мы рассмотрим ниже (пример studex8 в разделе програм­мирования). Однако, как представляется, более ясным здесь выглядит ис­пользование операций перемещения точки (из положения P’’ в P’, а за­тем в Р).

2.4. Проекции

В настоящее время наиболее распространены устройства отображения, кото­рые синтезируют изображения на плоскости — экране дисплея или бумаге. Устройства, которые создают истинно объемные изображения, пока доста­точно редки. Но все чаще появляются сведения о таких разработках, напри­мер, об объемных дисплеях [37] или даже о трехмерных принтерах [45].

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

Мировые и экранные координаты

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

Пусть мировые координаты будут трехмерными декартовыми координатами. Где должен размещаться центр координат и какими будут единицы измере - ния вдоль каждой оси, пока для нас не очень важно. Важно то, что для ото­бражения мы будем знать какие-то числовые значения координат отображае­мых объектов.

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

НЕ нашли? Не то? Что вы ищете?

Основные типы проекций

В компьютерной графике наиболее распространены параллельная и цент­ральная проекции (рис. 2.15).

Рис. 2.15. Параллельная и центральная проекции

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

Аксонометрическая проекция

Аксонометрическая проекция — разновидность параллельной проекции. Для нее все лучи проецирования располагаются под прямым углом к плоскости проецирования (рис. 2.16).

Зададим положения плоскости проецирования с помощью двух углов — а и й Расположим камеру так, чтобы проекция оси z на плоскости проецирова­ния ЛТЗУбыла бы вертикальной линией (параллельной оси О У)-

Рис. 2.16. Аксонометрическая проекция

Для того чтобы найти соотношения между координатами (х, у, z) и (X, Y, Z) для любой точки в трехмерном пространстве, рассмотрим преобразования системы координат (х, у, z) в систему (X, Y, Z). Зададим такое преобразование двумя шагами.

1-й шаг. Поворот системы координат относительно оси z на угол а. Такой поворот осей описывается матрицей

2-й шаг. Поворачиваем систему координат (х', у', z') относительно оси х' на угол /?— получаем координаты (X, Y, Z). Матрица поворота

Преобразования координат выражаем произведением матриц BxA:


Запишем преобразование для координат проекции в виде формул:



Как вы считаете, будет ли получена та же проекция, если описывать преобра­зования координат теми же двумя шагами, но в другой последовательности — • сначала поворот системы координат относительно оси х на угол В, а потом поворот системы координат относительно оси z' на угол а? И будут ли вер­тикальные линии в системе координат (x,y,z) рисоваться также вертикалями в системе координат (X, Y, Z)? Иначе говоря, выполняется ли А*В = В* А!

Обратное преобразование координат аксонометрической проекции. Для того, чтобы координаты проекции (X, У, Z) преобразовать в мировые коорди­наты (х, у, z), нужно проделать обратную последовательность поворотов. Вначале выполнить поворот на угол - Д а затем — поворот на угол -а. Запи­шем обратное преобразование в матричном виде

Матрицы поворотов:

Перемножив матрицы А и В, получим матрицу обратного преобразования:

Запишем обратное преобразование также и в виде формул


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

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

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

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


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

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

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

Теперь рассмотрим общий случай — для произвольных углов наклона каме­ры и Д) так же, как и для параллельной аксонометрической проекции. Пусть (х', у', z') — координаты для системы координат, повернутой относи­тельно начальной системы (х, у, z) на углы а и /?.

Тогда


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


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


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

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

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

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

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

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

Последнее свойство широко используется в начертательной геометрии для ручного рисования на бумаге. Проиллюстрируем это на примере каркаса до­мика (рис. 2.18).

Существуют и другие перспективные проекции, которые различаются поло­жением плоскости проецирования и местом точки схождения лучей проеци­рования. Кроме того, проецирование может осуществляться не на плоскость, а> например, на сферическую или цилиндрическую поверхность.

Рассмотрим косоугольную проекцию, для которой лучи проецирования не перпендикулярны плоскости проецирования. Основная идея такой проекции — камера поднята на высоту h с сохранением вертикального положения плоскости проектирования (рис. 2.19).

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

Рис. 2.19. Косоугольная проекция

Получить такую проекцию можно следующим способом:

1.  Выполняем поворот вокруг оси z на угол а.

2.  Заменяем z' на -у', а у'на z'.

3.  Выполняем сдвиг системы координат вверх на высоту камеры h.

4.  В плоскости (х', у', 0) строим перспективою проекцию уже рассмотрен­ным выше способом (точка схода лучей на оси z).

Преобразование координат может быть описано таким образом. Сначала оп­ределяются (*', у', z').

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

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

Примеры изображений в различных проекциях. Приведем примеры изо­бражений одинаковых объектов в различных проекциях. В качестве объектов будут кубы одинакового размера. Положение камеры определим углами на­клона а = 27°, у? = 70°.

Пример аксонометрической проекции приведен на рис. 2.20.


Рис. 2.20. Аксонометрическая проекция

Теперь рассмотрим примеры для перспективной проекции. В отличие от па­раллельной проекции, изображение в перспективной проекции существенно зависит от положения плоскости проецирования и расстояния до камеры.

В оптических системах известно понятие фокусного расстояния. Чем больше фокусное расстояние объектива, тем меньше восприятие перспективы (рис. 2.21) и наоборот, для короткофокусных объективов перспектива наибольшая (рис. 2.22). Данный эффект вы, наверное, уже замечали, если занимались съемками видеокамерой или фотоаппаратом. В наших примерах можно на­блюдать некоторое соответствие величины расстояния от камеры до плоско­сти проецирования (zKz, M) и фокусного расстояния объектива. Это соответ­ствие, однако, условно, аналогия с оптическими системами здесь неполная Для приведенных ниже примеров (рис. 2.21, 2.22) zm = 700. Углы наклона камеры а = 27°,/? = 70°.

Рис. 2.21. Перспективная проекция для длиннофокусной камеры (z„ = 2000


Рис. 2.22. Перспективная проекция для короткофокусной камеры (z„ = 1200)

В случае короткофокусной камеры (zK = 1200) восприятие перспективы наи­более заметно для кубов, которые расположены ближе всего к камере. Вер­тикальные линии объектов не являются вертикалями на проекции (объекты "разваливаются").

Рассмотрим примеры косоугольной проекции (рис. 2.23, 2.24). Для нее вер­тикальные линии объектов сохраняют вертикальное расположение на проек­ции. Положение камеры (точки схождения лучей проецирования) описывает­ся углом поворота a = 27° и высотой подъема h = 500. Плоскость проециро­вания параллельна плоскости (х'0уг) и располагается на расстоянии zm = 700.

Рис. 2.23. Косоугольная перспективная проекция для длиннофокусной камеры (z«= 2000)

Рис. 2.24. Косоугольная перспективная проекция для короткофокусной камеры (z* = 1200)

Рассмотрим еще один пример изображения в центральной проекции — текст в стиле фильма "Звездные войны":