Координатные системы двух мерного геометрического конвейера и их преобразование | MetodPro.ru

Реклама на сайте

Координатные системы двух мерного геометрического конвейера и их преобразование


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

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

В двухмерном видовом конвейере используются декартовы системы координат, их три:

Мировые координаты (World coordinate - WC). Координатная система пользователя. Используется прикладным программистом для описания графического ввода и вывода, ее размеры зависят от реальных размеров моделируемых объектов.

Нормализованные координаты устройства (Normalize device coordinate - NDC). Независимая от устройств декартова система координат, приведенная к диапазону от 0 до 1. Используется для хранения данных, обеспечивает защиту от переполнения и потери точности.

Координаты устройства (Device coordinate – DC). Координатная система, определяемая конкретным устройством вывода графической информации.

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

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

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

 

В рассматриваемом нами конвейере два преобразования:  WC – NDC (из Window1 во ViewPort1) и NDC – DC (из Window2 во ViewPort2). Оба преобразования выполняются по одинаковой схеме. Рассмотрим ее.

Определим, как найти в поле вывода точку, соответствующую точке, заданной в окне. Для этого используем простую пропорцию  откуда, выразим Х координату поля вывода через Х координату окна

в этой формуле выражение можно рассматривать как масштабирующий коэффициент.

 

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

И переходя к матричной  форме

Pv=PwST=PwM

[x’ y’ 1] =  [x y 1]

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

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

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



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем