Реализация программного обеспечения для изображения вращения пирамиды на примере центральной проекции

Рассмотрение проблемы создания трехмерного динамического изображения вращения пирамиды. Особенности построения в среде Microsoft Visual Studio пользовательского интерфейса, позволяющего изменять параметры визуализации и взаимодействовать с программой.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 06.02.2013
Размер файла 221,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • 1. Техническое задание
  • 1.1 Введение
  • 1.2 Основания для разработки
  • 1.3 Назначение разработки
  • 1.4 Требования к программе или программному изделию
  • 1.5 Требования к программной документации
  • 1.6 Технико-экономические показатели
  • 1.7 Стадии и этапы разработки
  • 1.8 Порядок контроля и приемки
  • 2. Описание программы
    • 2.1 Общие сведения
  • 2.2 Функциональное назначение
  • 2.3 Описание логической структуры
  • 2.4 Используемые технические средства
  • 2.5 Вызов и загрузка
  • 2.6 Входные данные
  • 2.7 Выходные данные
  • 3. Текст программы
  • 4. Руководство программиста
  • 4.1 Назначение и условия применения программы
  • 4.2 Характеристика программы
  • 4.3 Обращение к программе
  • 4.4 Сообщения
  • 5. Руководство оператора
  • 5.1 Назначение программы
  • 5.2 Условия выполнения программы
  • 5.3 Выполнение программы
  • 5.4 Сообщения оператору
  • 6. Программа и методика испытаний
    • 6.1 Объект испытаний
  • 6.2 Цель испытаний
  • 6.3 Требования к программе
  • 6.4 Требования к программной документации
  • 6.5 Средства и порядок испытаний
  • 6.6 Методы испытаний
  • Заключение
  • Список использованных источников

Введение

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

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

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

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

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

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

Для разработки используется язык программирования C++ и среда Borland C++Builder 6.

Пояснительная записка курсовой работы состоит из 6 документов. Коды документов приведены ниже в таблице 1.

Таблица 1

Обозначение

Наименование

Примечание

4217.02067988.08 - 773 12

Текст программы

4217.02067988.08 - 773 13

Описание программы

4217.02067988.08 - 773 33

Руководство программиста

4217.02067988.08 - 773 34

Руководство оператора

4217.02067988.08 - 773 51

Программа и методика испытаний

4217.02067988.08 - 773 90

Техническое задание

1. Техническое задание

1.1 Введение

Наименование программы

Наименование программного обеспечения: "Программное обеспечение для изображения вращения пирамиды (на примере центральной проекции)"

Краткая характеристика области применения программы

Возможные области применения программного обеспечения Pyramide:

· в качестве учебно-методического материала.

пирамида microsoft интерфейс программа

1.2 Основания для разработки

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

Документы, на основании которых создается программное обеспечение:

· календарный план-график выполнения этапов работы;

· техническое задание, рассмотренное ниже.

Наименование и условное обозначение темы разработки

Наименование темы разработки: Изображения вращения пирамиды (на примере центральной проекции).

Условное обозначение: "Pyramide".

Шифр темы: Курсовая работа.

Код работы: 4217.02067988.10 - 705.

Сведения о разработчике и заказчике

Разработчик: студенты группы 0ВТб-1 Комсомольского-на-Амуре государственного технического университета Н.Н. Чайка, В.С. Копылова.

Заказчик: Комсомольский-на-Амуре государственный технический университет, кафедра МОП ЭВМ в лице руководителя Н.Н. Михайлова.

Плановые сроки начала и окончания работы по созданию программы

Плановый срок начала работ: 10.09.2010г.

Плановый срок окончания работ: 12.01.2013г.

Сведения об источниках и порядке финансирования работ

Данная работа является инициативной, финансирование не проводится.

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

Оформление и предъявление заказчику результатов работ по созданию программного обеспечения "Pyramide" производится в соответствии с календарным планом-графиком выполнения работ.

Порядок взаимодействия разработчика с заказчиком:

1) создание рабочей программы;

2) предъявление программного обеспечения заказчику;

3) выявление заказчиком недостатков и недоработок в рамках настоящего технического задания;

4) устранение выявленных недостатков и недоработок;

5) создание пакета технической документации на программное обеспечение, оформленного в соответствии с ГОСТ 19.101 и ЕСПД.

1.3 Назначение разработки

Назначение программы

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

Цели создания программы

Цели создания программного обеспечения:

· разработка программного обеспечения для изображения вращения пирамиды на примере центральной проекции;

1.4 Требования к программе или программному изделию

Краткие сведения об объекте автоматизации

Объектом автоматизации является алгоритм, выполняющий расчет координат вершин пирамиды после поворота на заданный угол.

Результатом работы является изображение вращения пирамиды на примере центральной проекции.

Требования к функциям (задачам), выполняемым системой

Система должна обеспечить решение следующих задач:

· реализацию выбора оси вращения пирамиды и угла поворота;

· реализацию выбора режима работы программы - вращение или поворот;

· реализацию возможности сохранения целого изображения и его части;

· построение и вывод на экран пирамиды в центральной проекции.

Требования к надежности

Во время эксплуатации программы при условии соблюдения всех требований, перечисленных в пункте 1.4 настоящего "Технического задания", общий процент отказов программы не должен превышать 3%. Все возможные ошибки обрабатываются операционной системой.

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

Для восстановления работоспособности Pyramide необходимо иметь резервную копию программы.

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

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

Оценку надежности программы необходимо производить в результате многочасового тестирования с использованием всех функциональных возможностей Pyramide.

Условия эксплуатации

Требования к условиям эксплуатации и техническому обслуживанию

Условия эксплуатации программного обеспечения Pyramide определяются условиями эксплуатации использующегося аппаратного обеспечения. Программное обеспечение Pyramide не имеет ограничения по времени эксплуатации.

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

Требования к допустимым площадям размещения ПЭВМ с установленным программным обеспечением Pyramide, к параметрам сети энергоснабжения, уровню звукоизоляции, используемым в помещении отделочным материалам и т.п., определяются в соответствии с СанПиН 2.2.2. 542-96, с учетом требований использующегося аппаратного обеспечения.

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

Требования к численности и квалификации персонала и режиму его работы

С программным обеспечением Pyramide должен работать пользователь, обладающий навыками работы на ПК.

Режим работы с Pyramide ограничен режимом работы пользователя ПЭВМ.

Требования к составу и параметрам технических средств

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

· операционная система Windows 2000/XP/Vista/7;

· оперативная память 1024 Мб и выше;

· двуядерный процессор Intel Core 2 Duo 2 ГГц;

· существование логических и/или физических дисков со свободным дисковым пространством 100 Мб и выше;

· клавиатура;

· манипулятор "мышь";

· видеоадаптер SVGA и выше.

Требования к информационной и программной совместимости

Требования к информационному обеспечению

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

· трехмерная машинная графика [1-8];

Требования к лингвистическому обеспечению

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

· Язык программирования - C++.

· Язык взаимодействия пользователя с программным обеспечением - диалогово-оконный.

Требования к программному обеспечению для пользователя

Для данного программного обеспечения необходимо, что бы у пользователя была установлена операционная система Windows 2000/XP/Vista/7.

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

Для разработки данного программного обеспечения рекомендуется следующее программное обеспечение:

· Windows XP/Vista/7;

· Borland C++Builder 6.

Требования к техническому обеспечению для пользователя

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

· процессор Intel Core 2 Duo 2 ГГц;

· оперативной памяти 1024 Мб для нормального функционирования Windows;

· свободное место на диске размером не менее 250 Мб;

· клавиатура;

· манипулятор "мышь";

· видеоадаптер SVGA и выше.

Требования к техническому обеспечению для разработчика

Для разработки данного программного обеспечения необходимо следующее техническое обеспечение:

· процессор Intel Core 2 Duo 2 ГГц;

· оперативной памяти 1024 Мб для нормального функционирования Windows;

· свободное место на диске размером не менее 1,5 Гб для Borland C++Builder 6 и проекта Pyramide;

· клавиатура;

· манипулятор "мышь";

· видеоадаптер SVGA и выше.

Требования к режимам функционирования программного обеспечения

Требования к режимам функционирования программного обеспечения определяются требованиями к операционной системе.

Требования по диагностированию программного обеспечения

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

Требования развития и модернизации программного обеспечения

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

Требования безопасности

В процессе функционирования программное обеспечение Pyramide не должно влиять на работу любых других программных средств и не приводить к сбоям в работе компьютера и операционной системы.

Требования безопасности при эксплуатации и обслуживании программного обеспечения Pyramide устанавливаются в соответствии с СанПиН 2.2.2.542-96. Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы, введенным 14.07.96.

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

Требования к эргономике и технической эстетике

Создаваемое программное обеспечение должно обеспечивать дружественный интерфейс пользователя; удобное расположение элементов на формах; использование эргономичных цветовой гаммы и шрифтового оформления; наглядность представления данных, с которыми работает программа и результатов ее работы. Работа пользователя с программным обеспечением должно осуществляться при помощи стандартного оконного интерфейса.

Пользовательский интерфейс программы должен быть оформлен в стандартном стиле Windows (стандартные цвета и шрифты в зависимости от выбранной цветовой схемы), а именно:

· фон окна: стандартный;

· цвет меню: стандартный;

· шрифт: MS Sans Serif;

· размер шрифта: 8 пунктов;

· фон кнопок: стандартный, градиентная заливка переходит в фон окна;

· фон текстового поля: белый;

· фон надписи: стандартный, градиентная заливка переходит в фон окна;

· цвет текста надписи: черный;

· цвет текста в текстовом поле: черный.

Использование клавиатуры и мыши - стандартное для Windows-приложений. Клавиша "Tab" - перемещение по элементам управления, "Enter" - выполнение действий. Клавиши на клавиатуре должны использоваться для выбора действия (горячие клавиши). Для текстовых полей и списков использование клавиш управления курсором - стандартное. Мышь должна использоваться в качестве основного устройства ввода информации. Все манипуляции с элементами управления должны осуществляться с помощью мыши. В отсутствии мыши (или по желанию) пользователь может использовать клавиши клавиатуры для управления программой. Должна быть возможность выполнения каждой команды, как при помощи мыши, так и при помощи "горячих клавиш" на клавиатуре. Для выполнения желаемой операции, предусмотренной диалоговыми кнопочными формами программы, нужно навести курсор мыши на соответствующую кнопку формы, и выполнить однократное нажатие левой клавиши мыши.

Требования к защите информации от несанкционированного доступа

Защита программного обеспечения Pyramide и информации, с которой оно работает, от несанкционированного доступа возлагается на операционную систему.

Требования к защите от внешних воздействий

Программное обеспечение Pyramide должно быть устойчиво к наличию и параллельной с ним работе на той же персональной ЭВМ другого программного обеспечения.

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

Требования по стандартизации и унификации

Программное обеспечение Pyramide должно предоставлять пользователю привычный, общепринятый в среде Microsoft Windows интерфейс. Программная документация, поставляемая с ПО, должна быть оформлена в соответствии со стандартом ЕСПД.

Требования к транспортированию и хранению

Для хранения программного обеспечения Pyramide применяются любые носители емкостью не менее 5 Мб.

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

1.5 Требования к программной документации

Состав программной документации, предъявляемой заказчику по окончанию работ:

· "Техническое задание", ГОСТ 19.201-78;

· "Описание программы", ГОСТ 19.402-78;

· "Текст программы", ГОСТ 19.401-78;

· "Руководство программиста", ГОСТ 19.504-79;

· "Руководство оператора", ГОСТ 19.505-79;

· "Программа и методика испытаний", ГОСТ 19.301-79.

Пояснительная записка оформляется в соответствии с РД ГОУВПО "КнАГТУ" 013-2012 "Текстовые студенческие работы. Правила оформления" и ЕСПД.

1.6 Технико-экономические показатели

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

1.7 Стадии и этапы разработки

Этапы выполнения работ по созданию Pyramide приведены в таблице 1.1.

Таблица 1.1 - Стадии и этапы разработки

Этап

Дата начала

Дата окончания

Исследование объектов автоматизации

10.09.12

01.10.12

Формирование требований к программному обеспечению

01.10.12

15.10.12

Разработка структуры программного обеспечения

16.10.12

26.10.12

Разработка и утверждение технического задания

27.10.12

10.11.12

Программная реализация

11.11.12

1.12.12

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

2.12.12

8.12.12

Подготовка документации

9.12.12

20.12.12

Опытная эксплуатация

21.12.12

28.12.12

1.8 Порядок контроля и приемки

Контроль программного обеспечения и его приемка осуществляется в следующей последовательности:

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

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

3. Проводится повторное тестирование программного обеспечения и исправление его ошибок.

4. После устранения всех выявленных ошибок программное обеспечение сдается в эксплуатацию.

2. Описание программы

2.1 Общие сведения

Наименование программного обеспечения: "Программное обеспечение изображения вращения пирамиды в центральной проекции".

Краткое наименование программного обеспечения: "Pyramide".

Для функционирования данной программы необходима операционная система Windows 2000 или выше.

Исходным языком программирования является C++. Среда разработки, компилятор Borland C++Builder 6.

2.2 Функциональное назначение

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

2.3 Описание логической структуры

При запуске программы появляется главное окно программы (рисунок 2.1), которое содержит меню, область просмотра, и управляющие элементы: "Координаты вектора вращения", "Угол вращения", "Тип движения" и кнопки действий. "Координаты вектора вращения" позволяет задать ось вращения. "Угол вращения" предлагает выбрать пользователю угол поворота или вращения. "Тип движения" определяет выполняемое программой действие - поворот или вращение. Управляющая кнопка позволяет запустить программу. В главном меню можно сохранить изображение, загрузить изображение и завершить работу программы.

Рисунок 2.1 - Главное окно программы

При выборе пункта - "Вращать постоянно", пирамида начинает вращаться. В случае убирания пункта - "Вращать постоянно", пирамида поворачивается вокруг установленной оси на заданный угол.

После выбора оси вращения, угла вращения и типа движения, кнопка "Вращать" осуществляет выбранное действие с заданными параметрами.

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

При выборе пункта меню "Справка" можно получить краткое описание данного программного продукта и информация о её разработчике.

При выборе пункта меню "Выход" приложение завершает работу.

2.4 Используемые технические средства

Техническое обеспечение необходимое для работы программы:

· оперативная память 1024 Мб и выше;

· двуядерный процессор Intel Core 2 Duo 2 ГГц;

· существование логических и/или физических дисков со свободным дисковым пространством 250 Мб и выше;

· клавиатура;

· манипулятор "мышь";

· видеоадаптер SVGA и выше.

2.5 Вызов и загрузка

Для функционирования программного обеспечения на персональном компьютере должна быть установлена операционная система Windows 2000/XP/Vista/7. Для вызова данного программного продукта Pyramide осуществляется запуск исполняемого файла Pyramide.exe

2.6 Входные данные

Входными данными для программного обеспечения Pyramide являются:

· ось вращения (x, y, z -компоненты);

· угол поворота;

· выбор между вращением и поворотом;

2.7 Выходные данные

Выходными данными программного обеспечения Pyramide являются:

· выведенное изображение пирамиды;

3. Текст программы

#include <math.h>

#include <vcl.h>

#pragma hdrstop

#include "cursesrc.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tmainform *mainform;

float rv[3]; float angle; //угол и вектор вращения

#define vv 5.2

float vvminx = -vv, vvminy = -vv, vvminz = 0, //значения наблюдаемых минимумов

vvmaxx = vv, vvmaxy = vv, vvmaxz = vv,//значения наблюдаемых максимумов

vpx = 8, vpy = 10, vpz = 6.4, //точка наблюдения

vd = 16, //расстояние до наблюдателя

sine, cosine,//переменные для хранения синуса и косинуса

prjminx, prjminy, prjmaxx, prjmaxy;//расстояния до плоскости проекции

#undef vv

int grmaxx, grmaxy;//величина x и y на изображении

float xcoef, ycoef; // временные коэффициенты

struct pyramid3d { float v[6][3]; }; //5 вершин: верхушка и 4 остальные вершины

pyramid3d pyra = { { { 2, 0, 5 }, //верх пирамиды

//^^^^^^^^^база^^^^^^^^^^^^^^

{ -3, -3, 0 }, //координаты 1-ой вершины

{ -2, 2, 0 }, //координаты 2-ой вершины

{ 2, 2, 0 }, //координаты 3-ей вершины

{ 4, 0, 0 }, //координаты 4-ей вершины

{ 2, -2, 0 } } }; //координаты 5-ой вершины

//^^^^^^^^^^^^^^^^^^^^^^^^^^^

int pyr_color = clBlack;

// *** прототипы функций ***

void drawpyra(pyramid3d& pyraref); //прорисовывает 3d пирамиду

float calcx (float x, float y, float z); //вычисляет экранную координату OX

float calcy (float x, float y, float z); //вычисляет экранную координату OY

// ***************************

inline void imgline (int left, int top, int right, int bottom)

{ mainform -> viewport -> Canvas -> MoveTo(left, top); mainform -> viewport -> Canvas -> LineTo(right, bottom); }

bool wrongvals = false;

void initpaint() //инициализация параметров для прорисовки

{if (mainform -> rv_xval -> Text==""||mainform -> rv_yval -> Text==""||mainform -> rv_zval -> Text=="")

{for (int i=0;i<3;i++) rv[i]=0;}

else {

rv[0] = mainform -> rv_xval -> Text.ToInt();

rv[1] = mainform -> rv_yval -> Text.ToInt();

rv[2] = mainform -> rv_zval -> Text.ToInt();

}

float tmpval = sqrt (rv[0]*rv[0] + rv[1]*rv[1] + rv[2]*rv[2]);

wrongvals = (tmpval == 0? true: false);

if (wrongvals)

{

MessageBox(NULL, "Неправильное(ые) значение(я) указан(ы) для вектора вращения."

"\nПроверьте координаты вектора вращения.",

"Предупреждение!", MB_OK | MB_ICONERROR);

return;

}

rv[0] /= tmpval; rv[1] /= tmpval; rv[2] /= tmpval;

angle = M_PI * (float) (mainform -> angleval -> Text.ToInt())/180;

}

__fastcall Tmainform::Tmainform(TComponent* Owner) : TForm(Owner) //начало

{

initpaint();

//----------начальные вычисления--------------

grmaxx = viewport -> Width, grmaxy = viewport -> Height;

sine = vpy / sqrt(vpx * vpx + vpy * vpy);

cosine = vpx / sqrt(vpx * vpx + vpy * vpy);

prjminx = calcx (vvmaxx, vvminy, vvminz);

prjminy = calcy (vvmaxx, vvmaxy, vvminz);

prjmaxx = calcx (vvminx, vvmaxy, vvmaxz);

prjmaxy = calcy (vvminx, vvminy, vvmaxz);

xcoef = grmaxx / (prjmaxx - prjminx); // временные

ycoef = grmaxy / (prjmaxy - prjminy); //коэффициенты

//-------------------------------------------

viewport -> Canvas -> Pen -> Color = pyr_color;

drawpyra(pyra); //рисует начальное изображение пирамиды

}

void __fastcall Tmainform:: saveasbtnClick (TObject *Sender)

{ if (savedlg -> Execute()) viewport -> Picture -> SaveToFile (savedlg -> FileName); }

void __fastcall Tmainform::restoreprjitemClick(TObject *Sender)

{ if (opendlg -> Execute()) viewport -> Picture -> LoadFromFile (opendlg -> FileName); }

void __fastcall Tmainform::exititemClick(TObject *Sender) //выход из программы

{ exit(0); }

void __fastcall Tmainform::aboutitemClick(TObject *Sender) //copyright info

{

MessageBox(NULL, "Курсовая работа Чайка Николая и Копыловой Веры\n"

"\n**********************************\n"

"Программа реализует вывод и вращение \n"

"пирамиды в центральной проекции. Парамерты\n"

"вращения задаются координатами вектора\n"

"вращения и углом вращения."

,

"О программе", MB_OK | MB_ICONQUESTION);

}

float calcx (float x, float y, float z) //вычисляет экранную координату OX

{ return (-vd * (-(x - vpx) * sine + (y - vpy) * cosine)) / ((x - vpx) * cosine + (y - vpy) * sine); }

float calcy (float x, float y, float z) ////вычисляет экранную координату OY

{ return -vd * (z - vpz) / ((x - vpx) * cosine + (y - vpy) * sine); }

void drawpyra(pyramid3d& pyraref) //прорисовывает 3d пирамиду

{

char i; int scrv[6][2]; float *vptr;

for (i = 0; i < 6; ++i) //вычисление экранных координат вершин

{

vptr = pyraref.v[i];

scrv[i][0] = (calcx(vptr[0],vptr[1],vptr[2]) - prjminx) * xcoef;

scrv[i][1] = grmaxy - (calcy(vptr[0], vptr[1], vptr[2]) - prjminy) * ycoef;

}

#define imacro ((i != 5)? (i+1): 1)//макрос для связывания вершин

for(i=1; i<6; imgline(scrv[0][0], scrv[0][1], scrv[i][0], scrv[i][1]), ++i)

imgline (scrv[i][0], scrv[i][1], scrv[imacro][0], scrv[imacro][1]);

#undef imacro

}

float A[3][3]; //матрица вращения

void calcA() //вычисляет матрицу для вращения

{

float tmpsine = sin(angle), tmpcosine = cos(angle), tmp;

for (char i=0, j; i<3; ++i)

for(j=0; j<3; A[i][j] += tmpcosine * ((i==j?1:0) - A[i][j]), ++j)

A[i][j] = rv[j] * rv[i];

tmp = tmpsine * rv[2];A[0][1] += -tmp;A[1][0] += tmp;

tmp = tmpsine * rv[1];A[0][2] += tmp; A[2][0] += -tmp;

tmp = tmpsine * rv[0];A[1][2] += -tmp;A[2][1] += tmp;

}

void rotate (float& x, float& y, float& z) //вращает точку вокруг rv (вектора вращения)

{

float tmp[3] = { 0, 0, 0 }; char i, j;

for(i=0; i<3; ++i) for(j=0; j<3; ++j) tmp[i] += A[i][j] * (*(&x+j));

for (i=0; i<3; ++i) *(&x + i) = tmp[i];

}

void rotatepyra (pyramid3d& pyra) //вращает указанную пирамиду вокруг rv (вектора вращения)

{ calcA(); for (char i=0; i<6; ++i) rotate(pyra.v[i][0], pyra.v[i][1], pyra.v[i][2]); }

void inline redrawpyra() //подпрограмма перерисовки пирамиды

{

mainform->viewport->Canvas->Pen->Color = clWhite; drawpyra(pyra);

mainform -> viewport -> Canvas -> Pen -> Color = pyr_color;

rotatepyra(pyra); drawpyra(pyra);

}

void __fastcall Tmainform::rotatebtnClick(TObject *Sender)

{

if (pyratimer -> Enabled) pyratimer -> Enabled = false;

else //выбор длительного или единичного вращения

{

initpaint(); //перевычисляет угол и вектор вращения

if (wrongvals) return;

if (rotatechkbox -> Checked) pyratimer -> Enabled = true;

else redrawpyra();

}

rotatebtn -> Caption = (pyratimer -> Enabled)? "Стоп": "Вращение";

}

void __fastcall Tmainform::pyratimerTimer(TObject *Sender)

{ redrawpyra(); }

TRect R; // R - прямоугольная область выделения

bool RBegin = false, RegionSelected = false;

// RBegin - флаг начала выделения фрагмента

// RegionSelected - флаг того, что выделение области уже произведено

// подпрограмма обработки нажатия на кнопку Сохранить как...

void __fastcall Tmainform:: saveprjitemClick(TObject *Sender)

{

if(RegionSelected==true)

{

// Стирание рамки

mainform->viewport->Canvas->DrawFocusRect(R);

// Создание временного объекта ВМСору

Graphics::TBitmap *BMCopy = new Graphics::TBitmap;

BMCopy->Width = R.Right - R.Left;

BMCopy->Height = R.Bottom - R.Top;

try

{

// Копирование фрагмента в ВМСору

BMCopy->Canvas->CopyRect(Rect(0,0,BMCopy->Width,BMCopy->Height),mainform->viewport->Canvas,R);

// Восстановление рамки

mainform->viewport->Canvas->DrawFocusRect(R);

}

__finally

{

if(savedlg->Execute())

BMCopy->SaveToFile(savedlg->FileName);

// Освобождение памяти

BMCopy->Free();;

}

}

// Сброс флагов

RBegin = false;

RegionSelected = true;

}

//---------------------------------------------------------------------------

int XO, YO; // Координаты для запоминания начального положения курсора мыши

// Если кнопка мыши нажата

void __fastcall Tmainform::viewportMouseDown(TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

// Если область уже выделялась ранее, то очищаем предыдущее выделение

if(RegionSelected==true)

{

mainform->viewport->Canvas->FillRect(R);

mainform->viewport->Canvas->Pen->Color = clWhite; drawpyra(pyra);

mainform -> viewport -> Canvas -> Pen -> Color = pyr_color;

drawpyra(pyra);

}

// Запоминание начального положения курсора мыши

XO = X;

YO = Y;

// Формирование начального положения области фрагмента

R.Top = X;

R.Bottom = X;

R.Left = Y;

R.Right = Y;

// Рисование рамки

mainform->viewport->Canvas->DrawFocusRect(R);

RBegin = true; // Флаг начала выделения - выделение начато

RegionSelected = false; // Область выделения ещё не выбрана

}

//---------------------------------------------------------------------------

void __fastcall Tmainform::viewportMouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

if(RBegin == true)

{

// Стирание прежней рамки

mainform->viewport->Canvas->DrawFocusRect(R);

// Формирование области R

if(XO<X)

{

R.Left = XO;

R.Right = X;

}

else

{

R.Left = X;

R.Right = XO;

}

if(YO<X)

{

R.Top = YO;

R.Bottom = Y;

}

else

{

R.Top = Y;

R.Bottom = YO;

}

// Рисование новой рамки

mainform->viewport->Canvas->DrawFocusRect(R);

}

}

//---------------------------------------------------------------------------

// Если кнопка мыши отжата

void __fastcall Tmainform::viewportMouseUp(TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

RBegin = false; // Флаг начала выделения сбрасываем - выделение закончено

RegionSelected = true; // Заносим в флаг, что область выделена

}

//---------------------------------------------------------------------------

4. Руководство программиста

4.1 Назначение и условия применения программы

Назначение программы

Программное обеспечение Pyramide предназначено для изображения вращения пирамиды в центральной проекции.

В данном программном обеспечении были реализованы следующие функции:

· выбор оси вращения и угла поворота фигуры;

· выбор режима работы программы - вращение или поворот фигуры;

· вывод изображения пирамиды.

Условия применения программы

Техническое обеспечение необходимое для функционирования программы:

· операционная система Windows 2000/XP/Vista/7;

· оперативная память 1024 Мб и выше;

· процессор Intel Core 2 Duo 2 ГГц;

· существование логических и/или физических дисков со свободным дисковым пространством 250 Мб и выше;

· видеоадаптер SVGA и выше.

Для функционирования данной программы необходимо, что бы у пользователя была установлена операционная система Windows 2000/XP/Vista/7.

4.2 Характеристика программы

Программа Pyramide можно разделить на два взаимосвязанных модуля:

1) подсистемы графического интерфейса;

2) подсистема расчета положения фигуры.

Исходным языком программирования для программы является С++. Среда разработки, компилятор - Borland C++Builder 6.

Интерфейс полностью реализован с использованием визуальных компонентов Borland C++Builder 6. В программе все основные компоненты расположены на единственной форме.

В программе пользователь может задать такие параметры как: координаты вектора вращения (рисунок 4.1), угол вращения (рисунок 4.2), тип движения (рисунок 4.3).

Рисунок 4.1 - Группа элементов "Координаты вектора вращения"

Рисунок 4.2 -элемент "Угол вращения"

Рисунок 4.3 -элемент "Вращать постоянно"

При нажатии на кнопку "Вращать", программа выводит на экран изображение пирамиды в центральной проекции с параметрами, заданными пользователем. При выборе пункта - "Вращать постоянно", пирамида начинает вращаться. В случае убирания пункта - "Вращать постоянно", пирамида поворачивается вокруг установленной оси на заданный угол.

Также в программе реализована краткая справка об основных функциях программы (рисунок 4.4). Ее вызов осуществляется при выборе одноименного пункта меню.

Рисунок 4.4 - Окно справки

4.3 Обращение к программе

Программа запускается открытием файла Pyramide.exe, после чего она готова к работе и ожидает действий пользователя.

4.4 Сообщения

Программа не выдает никаких сообщений.

5. Руководство оператора

5.1 Назначение программы

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

В данном программном обеспечении были реализованы следующие функции:

· выбор оси вращения и угла поворота фигуры;

· выбор режима работы программы - вращение или поворот фигуры;

· вывод изображения пирамиды.

5.2 Условия выполнения программы

Техническое обеспечение на стороне пользователя, необходимое для функционирования программы:

· оперативная память 1024 Мб и выше;

· процессор Intel Core 2 Duo 2 ГГц;

· логический и/или физический диски со свободным дисковым пространством 250 Мб и выше;

· клавиатура;

· манипулятор "мышь";

· видеоадаптер SVGA и выше.

Для функционирования данной программы необходимо, что бы у пользователя была установлена операционная система Windows 2000/XP/Vista/7 и библиотека .NET Framework 2.0.

5.3 Выполнение программы

Программа запускается открытием файла Pyramide.exe, после этого она готова к работе и ожидает действий пользователя.

Пользователь выбирает ось вращения, задает угол вращения, тип движения (вращение или поворот) и нажимает кнопку "Вращение". Действие с заданными параметрами выполняется, на экран выводится результат в виде изображения пирамиды в центральной проекции.

5.4 Сообщения оператору

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

Рисунок 5.1 - Предупреждение

6. Программа и методика испытаний

6.1 Объект испытаний

Наименование программного обеспечения: "Программное обеспечение для изображения вращения пирамиды на примере центральной проекции".

Краткое наименование программного обеспечения: Pyramide.

Возможные области применения программного обеспечения Pyramide:

· в качестве учебно-методического материала.

6.2 Цель испытаний

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

6.3 Требования к программе

Программа Pyramide должна выполнять поворот пирамиды на любой угол вокруг любой оси. Программное обеспечение должно состоять из модулей, обеспечивающих гибкую настройку под конкретные нужды пользователя. Каждый модуль должен выполнять определенную функцию. Добавление или удаление какого-либо модуля не должно влиять на выполнение основной задачи и не должно приводить к отказам программы. Во время эксплуатации программы при условии соблюдения всех требований, перечисленных в пункте 1.4 "Технического задания", общий процент отказов программы не должен превышать 3%. Все возможные ошибки обрабатываются операционной системой. В процессе функционирования программное обеспечение Pyramide не должно влиять на работу любых других программных средств и не приводить к сбоям в работе компьютера и операционной системы. Диагностирование программного обеспечения должно производиться при соблюдении условий эксплуатации указанных в разделе 1.4 "Технического задания".

6.4 Требования к программной документации

При испытании программы Pyramide использовались следующие документы:

· "Техническое задание";

· "Описание программы";

· "Руководство программиста";

· "Руководство оператора".

6.5 Средства и порядок испытаний

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

· процессор Intel Core 2 Duo, Intel Core 2 Quad;

· оперативная память в объеме 1024, 2048 Мб;

· свободное место на диске в объеме 500 Мб;

· стандартная клавиатура;

· манипулятор "мышь".

Во время испытаний использовалась операционная система Windows 7.

Испытания программы проводились в следующем порядке:

· испытание на корректность (адекватно ли программа реагирует на ввод-вывод информации);

· испытание на правильность (соответствуют ли полученные результаты ожидаемым);

· испытание на надежность (процент отказов и сбоев системы).

6.6 Методы испытаний

Проверка на корректность

Был произведен запуск программы.

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

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

На третьем шаге был произведен ввод некорректной информации в виде нулевого вектора вращения. При вводе этого значения и нажатия кнопки "Вращение" было выведено предупреждение о неправильном вводе данных, тем самым исключается возможность вращения пирамиды вокруг нулевого вектора. Тот же самый результат был получен при оставлении полей координат пустыми.

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

Проверка на правильность

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

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

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

При проверке на правильность, результат не отличался от ожидаемого, поэтому можно сделать вывод, что программа работает правильно.

Проверка на надежность

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

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

Нарушений в работе операционной системы и параллельных программ не зафиксировано.

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

Заключение

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

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

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

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

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

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

Программное обеспечение разработано в среде Microsoft Visual Studio 2010. Тестирование производилось на компьютерах с процессорами Intel Core 2 Duo и Intel Core 2 Quad с установленной операционной системой Windows 7.

Список использованных источников

1. Блинова, Т.А. Компьютерная графика / Т.А. Блинова, В.Н. Пореев. - СПб.: КОРОНА принт, 2006 - 520 с.

2. Никулин, Е.А. Компьютерная геометрия и алгоритмы машинной графики /Е.А. Никулин. - СПб.: БХВ-Петербург, 2003. - 560 с.

3. Шикин, Е.В. Компьютерная графика. Полигональные модели /Е.В. Шикин, А.В. Боресков. - М.: "ДИАЛОГ-МИФИ", 2000. - 464 с.

4. Гилой, В. Интерактивная машинная графика: Структура данных, алгоритмы, языки /В. Гилой. - М.: Мир, 1981. - 384 с.

5. Ньюмен, У. Основы интерактивной машинной графики /У. Ньюмен, Р. Спрулл. - М.: Мир, 1976. - 573 с.

6. Ласло, М. Вычислительная геометрия и компьютерная графика на Си++ /М. Ласло. - М.: Бином, 1997.

7. Хусаинов, А.А. Интерактивные графические системы. Теория: учеб. пособие / А.А.Хусаинов , Н.Н. Михайлова. - Комсомольск-на-Амуре: ГОУВПО "КнАГТУ", 2007. - 132с.

8. Демин, А.Ю. Основы компьютерной графики: учебное пособие / А.Ю. Демин. - Томск, 2011. - 153с.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.