Осуществление работы разрабатываемой программы на основе алгоритма, использующего Z-буфер. Аналитическое описание программной реализации. Алгоритмы основных функций программы. Содержание руководства пользователя. Файлы программы, пункты главного меню.
Аннотация к работе
Разработать программу реализующую алгоритм использующий z-буфер.В ходе выполнения курсовой работы была разработана программа, имеющая следующий функционал: § Отображение геометрических тел (куб и усеченная пирамида) в 3 вариантах: каркасная модель, каркасная модель с удалением невидимых линий и закрашенная модель § Работа программы осуществляется на основе алгоритма использующего Z-буфер.Для описания геометрической модели куба нам понадобится: § Массивы вершин куба xw_kubik [8],yw_kubik [8],zw_kubik [8] - хранит координаты вершин куба; § Массив ребер куба MR_kubik [12] [2] - хранит номера вершин начала и конца ребра;Для описания геометрической модели призмы, как было описано ранее для куба будут использоваться следующие массивы: § Массивы вершин xw_piramida [N*2],yw_piramida [N*2],zw_piramida [N*2] - хранит координаты вершин усеченной пирамиды; § Массив ребер MRV [Nr*3] [2] - хранит номера вершин начала и конца ребра; § Массив граней по ребрам mgr_piramida [N 2] [N] - хранит номера ребер составляющих грань; § Массив граней по вершинам mgv_piramida [N 2] [3] - хранит номера вершин составляющих грань; Для расчета координат вершин воспользуемся следующими формулами: § Из того, что расположена в начале мировой СК следует, что координата yw_piramidaбудет принимать только 2 значения: H/2 для верхнего основания и - H/2 для нижнего основанияИсходное описание объекта осуществляется в абстрактной трехмерной системе координат, т. е в мировой системе координат. Исправить это можно использую видовое преобразования, для перехода в видовую систему координат, т.е. систему координат центром которой является наблюдатель.Как сказано выше проецирование позволит нам перейти от видовых координат объекта непосредственно к экранным координатам.Элементарные преобразования которые были использованы в разработанной программе описаны ниже.Данное преобразование переносит точку на заданное расстояние вдоль координатных осей X,Y,Z. Реализация этого преобразования имеет следующий вид: -Реализация для поворота на угол будет иметь вид: § Поворот вокруг оси ZВращение вокруг произвольного вектора не относится к элементарным геометрическим преобразованием, потому что реализуется через их последовательное выполнение. Для того чтобы повернуть точку вокруг произвольного вектора на угол надо выполнить следующие преобразования: 1. Поворот вокруг оси Z на уголВ данной курсовой работе для удаления невидимых линий и граней используется алгоритм использующий Z-буфер. Суть алгоритма заключается в наличии в программе двух буферов: буфер кадра и z-буфер. В z-буфере хранятся z координаты каждого пикселя тела. Из минусов стоит отметить большие объемы памяти требующейся для хранения буферов и программная реализация, изза частого обращения к памяти и потребности каждый раз попиксельно выводить кадр на экран, работает достаточно медленно. Однако существует ряд улучшенных методов работы с буфером (например деление экрана на области и отдельной их обработки), которые ускоряют работу его программной реализации.Ниже в Таблице 1 и Таблице 2 представлены основные глобальные переменные и функции программы и их назначение. Имя переменной Тип Назначение xw _kubik, yw _kubik,zw_kubik float Координаты куба в мировой СК xw _piramida, yw _piramida, zw_piramida float Координаты усеченной пирамиды в мировой СК xe _kubik, ye _kubik,ze _kubik float Координаты куба в видовой СК xe _piramida, ye _piramida, ze_piramida float Координаты усеченной пирамиды в видовой СК x_kubik,y_kubik int Экранные координаты куба x_piramida, y_piramida int Экранные координаты усеченной пирамиды MR_kubik, MR_piramida int Списки ребер куба и усеченной пирамиды mgr_kubik, mgr_piramida int Списки граней по ребрам куба и усеченной пирамиды mgv_kubik, mgv_piramida int Список граней по вершинам куба и усеченной пирамиды VK,VP int Признак видимости граней и ребер куба buf_kadr int Буфер кадра z_buf float Z-буфер Zapolnenie_kubik (),Zapolnenie_piramida () Закраска куба и усеченной пирамиды vvod_D (),vvod_A (),vvod_W (),vvod_S (), vvod_Q (),vvod_E (),vvod_O (),vvod_P (), vvod_K (),vvod_L (),vvod_N (),vvod_M () vvod_R () Нажатие горячих клавиш rotate_vector_piramida () Вращение усеченной пирамиды вокруг произвольного вектора povorot_x_kubik (),povorot_y_kubik (), povorot_z_kubik () povorot_x_piramida (),povorot_y_piramida (), povorot_z_piramida () Вращения куба и призмы вокруг координатных осей perenos_kubik (),perenos_piramida () Перенос куба и усеченной пирамиды z_buffer (),z_buffer2 () Вычисление значения координаты z menu (),menu1 (), menucamera (), vvod (),selectmodel (),knopki () vyvod_dannyh (),ramka (),vvod_vector () Подменю osi () Рисование координатных осей на экранДанные функции предназначаются для преобразования мировых координат вершин в видовые координаты. Результатом выполнения функции является значение видовых координат вершины, занесенное в соответствующий массив Данные функции предназначаются для преобразования видовых координат вершины в экранные координаты. Данные функции предназначены для
План
1. Содержание
1. Техническое задание
2. Возможности программы
3. Аналитическое описание программной реализации
3.1 Геометрическая модель графических объектов
3.1.1 Геометрическая модель куба
3.1.2 Геометрическая модель усеченной пирамиды
3.2 Видовое преобразование
3.3 Проецирование
3.4 Элементарные геометрические преобразования в пространстве