Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив2 / курсовая docx17 / Moya_kursovaya (2).docx
Скачиваний:
36
Добавлен:
07.08.2013
Размер:
2.62 Mб
Скачать

2.4 Закраска трехмерного объекта с использованием простой модели освещения

Так как расчет нормалей в нашей сцене мы уже реализовали, то добавить освещение к нашим объектам уже не составит больших проблем. Помимо освещенности будем одновременно закрашивать получившиеся поверхности объектов. Идея алгоритма состоит в следующем: будем закрашивать каждую грань объекта, умножив значение заданного цветового канала (A, R, G, B) на значение координаты Z вектора нормали. Цвет и настройки прозрачности у объектов разные, но система цветов одна, поэтому зададим предварительно значения альфа-канала для граней куба полностью непрозрачными - 255, а для граней стакана значения определим следующие: 80 для боковых граней, и 100 для основания стакана. Чем больше значение Nz будет приближаться к единице, тем меньше будет угол между нормалью и лучом света и тем соответственно больше будет интенсивность цвета.

Для закраски полигонов воспользуемся стандартной функцией закраски – FillPolygon. Данная функция заполняет внутреннюю часть полигона, определяемого массивом точек, один из двух параметров данной функции отвечает за цвет закраски. В итоге получаем простейшую, но эффектную систему освещения.

  1. ОПИСАНИЕ ПРОГРАММЫ

    1. Введенные типы данных и их предназначение

В таблице 3 указаны все типы данных, используемые в программе.

Таблица 3 – Типы данных, используемые в программе

Тип данных

Предназначение

int

Используются для целочисленных вычислений

double

Используются для точных вычислений

bool

Используется для логических преобразований и операций

int[]

Используется в качестве массивов, хранящих целые значения (номера полигонов, вершин)

double[]

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

Структуры

Используются для описания координат вершин

Классы

Используются для возможности реализации методов и функций программы

    1. Основные переменные и их предназначение

Основные переменные и их предназначение рассмотрены в таблице 4.

Таблица 4 – Основные переменные и их функции

Переменная

Тип данных

Функция

b

Класс Bitmap

Используется для работы с изображениями, определяемыми данными пикселей

g

Класс Graphics

Инкапсулирует поверхность рисования

image

Класс Image

Позволяет загрузить фоновое изображение для компонентов программы

Vertex

Point3D[]

Определяет структуру координат вершин

View

Point3D[]

Видовые координаты вершин

Scrn

Point[]

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

Perspective

Point[]

Массив перспективных координат

NZ

double[]

Массив, содержащий все значения координаты Z вектора нормали

Order

int[]

Массив, задающий порядок отображения граней, порядковые номера полигонов

D

double[]

Массив, хранящий среднее значение по координате Z плоскости

Teta, Phi

double

Переменные, хранящие значения углов

nx, ny, nz

double

Координаты вектора нормали

R0

int

Коэффициент масштабирования сцены

D0

int

Коэффициент перспективы сцены

mousePress

bool

Логическая переменная, отслеживающая нажатие на кнопку мыши

    1. Описание основных процедур и функций

Рассмотрим основные функции и процедуры.

  1. Процедура «ПостроитьСцену». Главная процедура, в которой происходит преобразование координат, создание полигонов, вычисление средних значений координаты Z, закрашивание поверхностей и создание модели освещения.

  2. Функция «СортировкаГраней». Сортирует грани по глубине и заполняет массив упорядоченных граней для отображения.

  3. Процедура «ВычислениеНормали». Вычисляет нормаль к поверхности и заполняет массив с координатой Z этой нормали.

  4. Процедура «ПоказатьСцену». Данная процедура используется для перерисовки сцены.

  5. Функция «Flag». Вспомогательный метод для реализации функции «СортировкаГраней». Определяет грани для сравнения.

    1. Алгоритм взаимодействия процедур и функций

Рассмотрим алгоритм взаимодействия вышеописанных процедур и функций. Процедура «ПоказатьСцену» вызывается каждый раз при изменении изображения сцены, данная процедура содержит в своем теле основную процедуру программы «ПостроениеСцены». Процедура «ПостроениеСцены» помимо своих наборов действий состоит из функции: «СортировкаГраней» и функции «ВычислениеНормали». Функция «СортировкаГраней» включает в себе метод «Flag». Условная схема взаимодействия процедур и функций представлена на рисунке 2.

Рисунок 2 – Условная схема взаимодействия процедур

и функций

  1. ТЕСТИРОВАНИЕ ПРОГРАММЫ

    1. Описание интерфейса

При запуске программы пользователь сразу видит сцену: стакан и куб перед ним (рисунок 3).

Рисунок 3 – Интерфейс программы

Программа имеет интуитивно понятный интерфейс, то, что было заявлено, то и получилось – два объекта: прозрачный объект (стакан) и непрозрачный (куб). А также надпись на самой форме «С# Alpha Blending» говорит о теме работы, альфа смешении. Окно приложения нельзя масштабировать, можно только закрывать и сворачивать. Заголовок окна приложения также дает понять о тематике приложения.

    1. Руководство по использованию программы

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

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

Таблица 5 – Управления сценой

Элемент управления

Действие

Мышь

Зажатая ЛКМ/ПКМ

Обзор сцены со всех ракурсов

Вращение колесика

Масштабирование +/-

Нажатие ПКМ

Привидение к сходному размеру

Клавиатура

Вверх

Вращение сцены вертикально вверх

Вниз

Вращение сцены вертикально вниз

Влево

Вращение сцены в левую сторону

Вправо

Вращение сцены в правую сторону

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

Минимальные системные требования:

  • операционная система Windows XP, Vista, 7 (совместимость сWindows 8 неизвестна);

  • процессор с тактовой частотой 1 Ггц или выше;

  • ОЗУ 512 Мб или выше;

  • Видеопамять 128 Мб или выше;

  • Клавиатура, мышь.

Соседние файлы в папке курсовая docx17