Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы3 / Отчет 2-14-12-07.doc
Скачиваний:
100
Добавлен:
02.05.2014
Размер:
224 Кб
Скачать
☆
  1. Вычисление координат точки при аксонометрическом проецировании.

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

Зададим точку наблюдения C (a, b, c) в произвольной ортогональной системе координат.

Для того чтобы получить картинку, наблюдаемому из положения камеры нужно:

Шаг1. Поворот системы координат, чтобы точка С располагалась на оси Оz. (А для того чтобы это случилось необходимо повернуть систему координат сначала вокруг оси Ох, а затем вокруг оси Оу.)

Шаг2. Вычисление матрицы аксонометрического проецирования.

Шаг3. Осуществление перехода к экранным координатам.

  1. Поворот системы координат на угол φ вокруг оси X (разворачиваем систему координат по часовой стрелке - это тоже самое, что разворот точки против часовой стрелки).

  1. Поворот системы координат вокруг оси ординат Y’ на угол ψ:

3) Проецирование вдоль оси Z’’ на плоскость X’’OY’’.

.

Для получения видовых координат можно просто отбросить координату z, минуя 3-й пункт.

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

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

;

.

После преобразования по этой формуле координат следующих точек:

  • Точку Т.

  • Проекции токи Т на плоскости xOy, xOz и yOz – Т1, Т2 и Т3 соответственно.

  • Проекции токи Т на оси Ox, Oy и Oz – Tx, Ty и Tz соответственно.

  • Точку С.

  • Точки необходимые для рисования осей.

мы получим искомую картинку.

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

  1. Вычисление координат точки при перспективном проецировании.

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

Основные свойства перспективного преобразования в центральной проекции:

  • Не сохраняется отношение длин и площадей.

  • Прямые линии изображаются прямыми линиями.

  • Параллельные прямые изображаются сходящимися.

Для реализации центрального проецирования необходимо выполнить следующие шаги:

Шаг1. Поворот системы координат, чтобы точка С располагалась на оси Z.

Шаг2. Вычисление матрицы центрального проецирования для этого частного случая.

Шаг3. Осуществление перехода к экранным координатам.

Перемещать камеру на ось Oz мы научились когда рассматривали аксонометрическое проецирование, поэтому предположим, для простоты, что центр проектирования лежит на оси Z в точке С(0,0,d) и плоскость проецирования совпадает с координатной плоскостью xOy. Возьмем в пространстве произвольную точку М(x,y,z), проведем через нее и точку С прямую, которая в пересечении с системой координат экрана (плоскостью XOY) даст точку M’ (x’,y’). Запишем соответствующие параметрические уравнения:

x’ = x*t

y’ = y*t

z’ = d + (z-d)*t

Найдем координаты точки пересечения построенной прямой с плоскостью xOy, из условия z’ = 0 получим:

; ; .

Аналогичного результата можно добиться, используя следующую матрицу:

.

Эта матрица называется матрицей перспективного преобразования с проецированием d.

, где a, b, c – знакомые нам координаты камеры.

В самом деле, переходя к однородным координатам, прямым вычислением легко проверить, что

.

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

.

Переход к экранным координатам осуществляется посредством следующей формулы:

, где Cx, Cy – координаты смещения.

Прорисовка выполняется так же как описано в лабораторной работе №1.

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

Отрисовка.

Этот пункт подробно рассматривался в лабораторной работе №1

Также добавляется переменная состояние, в которой хранятся состояния в критических_случаях:

если (состояние=камера_внутри)

вывод сообщения (Камера внутри)

если (состояние=выход за границы)

вывод сообщения (Выход за границы)

Соседние файлы в папке Лабораторные работы3