referat (Объектно-ориентированное программирование на C++ с использованием библиотеки OpenGL)

2016-07-31СтудИзба

Описание файла

Документ из архива "Объектно-ориентированное программирование на C++ с использованием библиотеки OpenGL", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "referat"

Текст из документа "referat"

Реферат.

Программный продукт позволяет наглядно изучить строение и свойства платоновых тел, а также позволяет начинающим программистам реализовать принцип обучения на примерах. Продукт разработан на языке программирования Мicrosoft Visual C++ 5.0 с использованием объектно-ориентированной методологии. При разработке была задействована библиотека моделирования трехмерной графики OpenGL. Запуск программы возможен только в операционной среде Microsoft Windows 95. Диалог пользователя с программой, а именно введение параметров, осуществляется посредством диалоговых окон программы. Диапазон вводимых значений программно ограничен, с целью недопущения некорректной работы или возникновения ошибки.

Содержание.

  1. Теоретическая часть……………………………………………………..3

    1. Введение…………………………………………………………………3

    2. Аналитический обзор…………………………………………………...3

    3. Описание математического аппарата аналитической геометрии……4

  2. Технический и рабочий проекты программного продукта………...…5

    1. Уточнение технических требований, сфрмулированных в теоретическом задании…………………………………………………5

    2. Постановка задачи………………………………………………………5

    3. Подход к решению задачи………………………………………...……5

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

    5. Разработка функциональной структуры ПС, требований к отдельным подсистемам, системных соглашения……………………7

    6. Реализация диалогового интрефейса и выдачи результатов…………8

    7. Описание алгоритмов решения функциональных задач………….….9

  3. Экспериментальная часть…………………………………………….…9

    1. Эксплуатационная документация на ПС………………………………9

      1. Описание применения……………………………………………….9

      2. Руководство пользователя…………………………………………..9

      3. Руководство программиста………………………………………...12

      4. Контрольный пример……………………………………………....12

  1. Теоретическая часть.

1.1 Введение.

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

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

  • не требуется больших затрат ресурсов;

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

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

1.2 Аналитический обзор.

Существует ровно пять правильных многогранников. Их основные характеристики приведены в следующей таблице:

Название

Многогранника

Число граней

Число ребер

Число вершин

Тетраэдр

4

6

4

Гексаэдр

6

12

8

Октаэдр

8

12

6

Додекаэдр

12

30

20

Икосаэдр

20

30

12

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

Современное программное обеспечение предоставляет программисту широкий спектр возможностей по работе с компьютерной графикой, причем, как с двумерной, так и с трехмерной. В зависимости от поставленной перед программистом задачи и уровня его подготовки, у него есть ряд возможностей при разработке программы для работы с графикой. Во-первых, программист может разработать программный продукт при помощи прямого программирования аффинных преобразований на плоскости и в пространстве. Во-вторых, он может воспользоваться уже созданными библиотеками для моделирования графических объектов (например, библиотека OpenGL). В-третьих, существуют программные продукты, посвященные графическому моделированию и не требующие написания кода программы для работы с графикой (например, 3D-Studio).

    1. Описание математического аппарата аналитической геометрии.

Движение графических объектов в пространстве осуществляется посредством аффинных преобразований. Любое аффинное преобразование в трехмерном пространстве может быть представлено в виде суперпозиции вращений, растяжений, отражений и переносов. Каждая точка пространства (кроме начальной точки О) может быть задана четверкой одновреммено не равных нулю чисел (hx, hy,hz,h); эта четверка чисел определена однозначно с точностью до общего множителя.

Рассмотрим матрицы преобразований.

1) Матрицы вращения в пространстве

Матрица вращения вокруг оси абсцисс на угол :



М
атрица вращения вокруг оси ординат на угол :

Матрица вращения вокруг оси аппликат на угол :



2) Матрица растяжения (сжатия):

г
де

>0 – коэффициент растяжения (сжатия) вдоль оси абсцисс;

>0 – коэффициент растяжения (сжатия) вдоль оси ординат;

>0 – коэффициент растяжения (сжатия) вдоль оси аппликат.

3) Матрицы отражения.

М
атрица отражения относительно плоскости xy:

М
атрица отражения относительно плоскости yz:

М
атрица отражения относительно плоскости zx:

4
) Матрица переноса

где ( - вектор переноса.

  1. Технический и рабочий проекты программного продукта.

    1. Уточнение технических требований, сформулированных в теоретическом задании.

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

  • IBM-совместимый компьютер с процессором Pentium 90;

  • VGA видеокарта;

  • 16 МВ оперативной памяти;

  • операционная система Microsoft Windows 95;

  • 4 МВ на жестком диске.

    1. Постановка задачи.

Разработать раздел графической библиотеки, описывающий платоновы тела и функции для работы с ними, а также средство работы с ней. Программный продукт должен осуществлять мониторинг вращения графического объекта (платонова тела) вокруг осей координат (OX, OY, OZ).

    1. Подход к решению задачи.

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

Исходная задача разбивается на следующие подзадачи:

  • разработка интерфейса программы;

  • разработка класса многогранников;

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

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

В качестве программной среды выбран язык программирования Microsoft Visual C++ 5.0, поскольку он основан на новейших технологиях программирования (например: С++, программирование графического интерфейса Windows, фундаментальные классы фирмы Microsoft (Microsoft Foundation Classes) и генераторы кода Wizard).

Microsoft Visual C++ обеспечивает несколько различных путей написания программ для GUI Windows (graphical user interface). Во-первых, можно писать программы GUI на С и С++, напрямую обращаясь к функциям, которые обеспечиваются находящимся внутри Win32 программным интерфейсом приложений (API), и является частью операционных систем Windows 95 и Windows NT. Однако, используя этот подход, необходимо множество строк кода перед тем, как появится возможность сосредоточиться на задаче, которая является особенной в приложении.

Во-вторых, можно писать программы для GUI Windows на С++, используя МFC (Microsoft Foundation Classes). MFC обеспечивает большой набор написанных классов, как и код поддержки, который может выполнять много стандартных задач при программировании для Windows (таких, как создание окон с обработкой сообщений). Также можно использовать MFC, чтобы быстро добавить к вашим программам такие сложные элементы, как панель инструментов, разделенные окна представлений. MFC может упростить программы GUI и сделать работу при программировании значительно проще.

В-третьих, можно писать GUI Windows программы на С++, используя и MFC и мастер-блоки Microsoft Wizard. Можно использовать AppWizard, чтобы сгенерировать основные исходные файлы для разнообразных типов программ GUI. Затем можно использовать интсрумент ClassWizard, чтобы создать большую часть кода, необходимого для порождения классов; определить функции-члены для обработки сообщений или настройки поведения MFC; управлять блоками диалога и выполнить другие задачи. Код, сгенерированный с использованием мастер-блоков Wizard, полностью использует MFC. Причем, мастер-блоки Wizard не ограничиваются только генерацией оболочек простых программ, а, напротив, может быть использован для создания программ, содержащих большой набор сложных компонентов.

Используя этот третий подход, можно получить пользу не только от кода, уже написанного в MFC, но и от сгенерированного исходного кода, который использует MFC и решает множество задач программирования. MFC и мастер-блоки Wizard облегчают усилия по созданию визуального интерфейса программы и помогают убедиться, что этот интерфейс согласуется с описаниями (guidelines) Microsoft.

Разработка программы велась на базе третьего и самого высокоуровневого способа написания программ для GUI Windows.

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

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

  • CpolyhedronApp – основной класс приложения, наследуемый от CWinApp

  • CmainFraim – класс окна, наследуемый от CframeWnd и контролирующий все свойства и особенности окна приложения

  • CpolyhedronDoc – класс документа приложения, наследуемый от CDocument. Документ – это совокупность всех или части данных, используемых приложением, в том числе значения параметров, указываемых пользователем и т.д. Приложение может иметь несколько документов, хотя в нашем случае документ всего один.

  • CpolyhedronView – класс, позволяющий отображать содержимое класса CPolyhedronDoc. Наследуется от Cview. В нашем случае служит в том числе и для отображения платоновых тел по параметрам из CpolyhedronDoc.

  • CpolyhedronAction – класс, содержащий функции для создания и действий над платоновыми телами.

  • CpolySet, CaboutDlg – классы, наследуемые от Cdialog и служащие для построения и работы с диалоговым окном настроек программы и диалоговым окном About.

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

Системные соглашения:

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

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

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

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

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

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

    1. Реализация диалогового интерфейса и выдачи результатов.

Структура диалогового интерфейса программного продукта показана на рис. 4.6.1.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее