Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов...

Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов...

^ Трехмерные преобразования
При переходе в место добавляется координата Z и, как следует, размерность матриц возрастает на единицу. Точки в пространстве представляются четверками [x y z 1], размерность матриц преобразований становится 4*4.

В главную диагональ матрицы Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... масштабирования добавляется масштабирующий коэффициент по оси Z, а в матрицу переноса добавляется проекция вектора переноса на ось Z.

Отображение в пространстве делается относительно плоскостей. Так при отображении относительно плоскости XOY поменяют Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... знаки только координаты Z. Матрица такового преобразования будет смотреться последующим образом. М = . Аналогично для других плоскостей.

С поворотами ситуация более непростая.
^ Преобразования поворота в пространстве
Повороты в пространстве выполняются вокруг осей. Разглядим повороты Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... вокруг основных координатных осей. Положительными числятся повороты против часовой стрелки, если глядеть с конца положительной полуоси. Изученный нами ранее поворот относительно начала координат на плоскости XOY можно рассматривать как поворот в Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... пространстве относительно оси Z. Для получения матриц поворота относительно других координатных осей можно использовать ту же схему рассуждений, что приводилась нами для определения поворота на плоскости XOY.

Повороты вокруг случайных осей строятся за счет Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... композиции поворотов вокруг основных координатных осей. Схема такового подхода нами уже разбиралась. Применим ее на практике снова.

Поначалу уточним начальные данные. Для задания случайного поворота в пространстве недостаточно найти только Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... ось. При всем этом нереально найти направление поворота. Нужно задать направляющий вектор и точку его привязки. Так же нужно задать величину угла поворота .

Для выполнения данного преобразования нужно:

Скооперировать точку привязки с началом координат Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... за счет преобразования переноса Т, задаваемого вектором, соединяющим начало координат с этой точкой.

Выполнить поворот вокруг оси X на угол , переводящий направляющий вектор в плоскость XOZ .

Выполнить поворот вокруг оси Y Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... на угол , совмещающий направляющий вектор с положительной полуосью Z.

Выполнить поворот вокруг оси Z на требуемый угол .

Выполнить оборотные преобразования, приводящие сцену в начальное состояние.
^ Коммутативность преобразований Преобразования как изменение координатных Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... систем
На первой лекции мы рассматривали геометрический сборочный поток и гласили о разных координатных системах и переходах меж ними. В данной лекции мы говорим о преобразованиях геометрических объектов. Как убрать данное противоречие?

Разглядим Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... хоть какое преобразование объекта, к примеру перенос точки. Перенесем точку в согласовании с данным вектором. Точка Р с координатами (2 3) преобразуется в точку Р’ с координатами (4 5).

Данную ситуацию можно трактовать по другому. Точка осталась Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... постоянной, а изменению подверглась координатная система. Таким макаром, мы при помощи преобразования сдвига преобразовали координатную систему С1 в координатную систему С2.

Таковой взор можно рассматривать как метафору, так как для реализации перевода Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... сцены из одной координатной системы в другую нужно подвергнуть преобразованию каждый объект сцены. Мы используем такую нотацию, потому что в определениях координатных систем и их преобразований легче разъяснять устройство и работу графических Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... систем, а так же писать программки. В этом мы убедимся позднее при написании программ с внедрением OpenGL.

Разглядим очередной пример. В начальной координатной системе С1 при помощи преобразования масштабирования ( Sx=0.5 Sy Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов...=0.5 ) определим координатную систему C2=C1*S21. На ее базе при помощи преобразований переноса (Dx=4 Dy=2) и поворота (=45є) определим координатную систему

C3=C2*T23*R23. С учетом композиции запишем С3=С2*M Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов...23 Разумеется, что дела меж координатными системами С3 и С1 описываются формулой C3= C1*S21*T23*R23 =С1*М31.

Таким макаром, мы обусловили три координатные системы и установили дела меж ними. Нарисуем Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... в координатных системах С2 и С3 два схожих домика и перейдем в координатную систему С1. Изображения подверглись масштабированию, повороту и смещению согласно установленных нами отношений.

Этот обычный пример показывает принципиальный шаг визуализации Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... – сборку сцены. В процессе сборки мы определяем куски сцены в координатных системах, комфортных для построения. Обычно такие координатные системы в графическом конвейере носят заглавие модельных координат. В неких источниках, дающих более серьезное Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... математическое обоснование, употребляют термин фрейм.

После определения всех нужных фрагментов создают преобразование всех модельных координатных систем в единую систему, носящую заглавие глобальных координат.
^ Лекция 3. Двумерный сборочный поток. Координатные системы 2-ух мерного геометрического сборочного потока и Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... их преобразование
Мы разглядели набор базисных геометрических преобразований на плоскости и в пространстве. Сейчас перейдем к рассмотрению основного механизма визуализации –геометрического сборочного потока. Почему фактически сборочный поток? С этим словом, у Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... нас ассоциируется Генри Форд, в первый раз применивший сборочный поток при производстве автомобилей. Геометрический сборочный поток употребляет главный принцип хоть какого сборочного потока – параллельность выполнения всех шагов технологического цикла. Так же как Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... на сборочном конвейере большого завода сразу находятся 10-ки автомобилей на разной стадии готовности, в геометрическом конвейере могут сразу обрабатываться несколько сцен. Когда одни из их только собираются, другие могут растеризоваться и Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... демонстрироваться юзеру. Более того, составляющие одной сцены могут обрабатываться параллельно на различных ветках сборочного потока.

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

В двухмерном видовом конвейере употребляются декартовы системы координат, их Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... три:

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

^ Нормализованные координаты устройства (Normalize device coordinate Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... - NDC). Независящая от устройств декартова система координат, приведенная к спектру от 0 до 1. Употребляется для хранения данных, обеспечивает защиту от переполнения и утраты точности.

^ Координаты устройства (Device coordinate – DC). Координатная система, определяемая определенным устройством вывода Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... графической инфы.





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

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

Таким макаром, мы пришли к последующему: преобразование на плоскости меж координатными системами задается 2-мя прямоугольниками: окном и Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... полем вывода.



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

Определим, как отыскать в Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... поле вывода точку, подобающую точке, данной в окне. Для этого используем ординарную пропорцию откуда, выразим Х координату поля вывода через Х координату окна

в этой формуле выражение можно рассматривать как Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... масштабирующий коэффициент.



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

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

Pv=PwST=PwM

[x’ y’ 1] = [x Трехмерные преобразования - Задание аффинных преобразований 20 Координатные системы 21 Задание векторных примитивов... y 1]

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

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

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




trebovaniya-po-oformleniyu-raschetno-graficheskoj-raboti.html
trebovaniya-po-oformleniyu-tezisov.html
trebovaniya-po-ohrane-truda-i-pozharnoj-bezopasnosti.html