Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа.doc
Скачиваний:
12
Добавлен:
20.06.2014
Размер:
304.64 Кб
Скачать

4. Описание алгоритмов

4.1.Алгоритм разбиения сферической поверхности на примитивы

В силу симметричности сферы, разобьем на примитивы часть сферы, лежащую в одном октанте, а потом семь раз отобразим эту часть.

Пусть центр сферы лежит в начале координат, тогда создадим два счетчика, изменяющихся на определенный угол mGridAngle, вращаясь относительно осей X и Y соответственно. Таким образом, при изменении двух счетчиков на один шаг, имеем четыре точки на сферической поверхности, определяющие вершины двух треугольников с одной одинаковой стороной. Пройдя обоими счетчиками угол π/2, получим разбиение части сферической поверхности на примитивы (треугольники).

4.2.Алгоритм разбиения цилиндрической поверхности на примитивы

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

Пусть ось вращения цилиндрической поверхности совпадает с осью X, тогда создадим два счетчика. Первый будет изменятся на определенный угол nGridAngle, вращаясь относительно оси X. Второй будет проходить всю длину цилиндра по оси X с шагом nGridX. Таким образом, при изменении двух счетчиков на один шаг, имеем четыре точки на цилиндрической поверхности, определяющие вершины двух треугольников с одной одинаковой стороной. Пройдя обоими счетчиками угол π/2, получим разбиение части цилиндрической поверхности на примитивы (треугольники).

4.3.Алгоритм вращения камеры

Камера в Direct3D задается непосредственным положением камеры в пространстве (eye), т.е. откуда происходит обзор сцены, и точку в пространстве, на которую направлена камера.

При вращении камеры точка eye (положение камеры) остается постоянной, а изменения координаты точки at задают вращение взгляда.

4.4.Алгоритм движения камеры

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

5. Описание структуры ПО

5.1. Пользовательское управление

Пользовательский интерфейс данной программы предполагает управление визуализируемой сценой с помощью клавиатуры и мыши. Управление сценой включает в себя:

- включение и выключение источников света в визуализируемой сцене.

- вращение объекта сцены относительно трех осей координат этого объекта.

- движение камеры (относительно направления обзора камеры): вперед, назад, вправо, влево, вверх, вниз.

- изменение направления обзора камеры.

5.1.1.Управление с клавиатуры

"1" – клавиша включает (выключает) точечный источник света, если он выключен (включен).

"2" – клавиша включает (выключает) прожекторный источник света, если он выключен (включен).

"3" – клавиша включает (выключает) направленный источник света, если он выключен (включен).

"x" – клавиша увеличивает скорость вращения относительно оси x объекта (доступные скорости: 0,1,2,3), при нажатии на "x" на 3 скорости скорость вращения становиться 0.

"y" – клавиша увеличивает скорость вращения относительно оси y объекта (доступные скорости: 0,1,2,3), при нажатии на "y" на 3 скорости скорость вращения становиться 0.

"z" – клавиша увеличивает скорость вращения относительно оси z объекта (доступные скорости: 0,1,2,3), при нажатии на "z" на 3 скорости скорость вращения становиться 0.

"▲" – клавиша двигает камеру вперед, относительно направления обзора камеры.

"▼" – клавиша двигает камеру назад, относительно направления обзора камеры.

"◄" – клавиша двигает камеру влево, относительно направления обзора камеры.

"►" – клавиша двигает камеру вправо, относительно направления обзора камеры.

"Page Up" – клавиша двигает камеру вверх, относительно направления обзора камеры.

"Page Down" – клавиша двигает камеру вниз, относительно направления обзора камеры.