Смекни!
smekni.com

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

Краткоеописание библиотекиOpenGl


БиблиотекаOpenGl предназначенадля моделированиякомпьютернойграфики навысоком уровне,и являетсяпрограммныминтерфейсомк аппаратномуобеспечению.Главное назначениебиблиотеки-–преобразовывать2-х и 3-хмерныеобъекты в специальныйформат в специальномбуфере. Этиобъекты описываютсякак последовательноститочек в пространстве,которые определяютгеометрическиеобъекты, илипикселов, которыеопределяютизображения.OpenGl производитнесколькопоследовательныхопераций обработкиэтих данных,чтобы сконвертироватьих в пикселыдля формированияокончательноготребуемогоизображенияв буфере.

OpenGl предоставляетВам прямойдоступ к контролюфундаментальныхопераций 2-х и3-хмерной графики.Это включаетспецификациютаких параметровкак трансформационныематрицы, коэффициентыуравненияосвещения,методы сглаживанияи операторымодифицированияпикселов. Однако,OpenGl не предоставляетВам способыописания илимоделированиясложных геометрическихобъектов. Такимобразом, командыOpenGl, которые Выиспользуете,определяюткак определенныйрезультатдолжен бытьвыработан(какие процедурыдолжны использоваться),а не как именнодолжен выглядетьрезультат. Тоесть OpenGl – библиотекапроцедурная,а не описательная.


[Документв стадии разработки.Примерно 5% отполного объема.]


========================================================================
MICROSOFT FOUNDATION CLASS LIBRARY : Polyhedron
========================================================================


AppWizard has created this Polyhedron application for you. This application
not only demonstrates the basics of using the Microsoft Foundation classes
but is also a starting point for writing your application.

This file contains a summary of what you will find in each of the files that
make up your Polyhedron application.

Polyhedron.h
This is the main header file for the application. It includes other
project specific headers (including Resource.h) and declares the
CPolyhedronApp application class.

Polyhedron.cpp
This is the main application source file that contains the application
class CPolyhedronApp.

Polyhedron.rc
This is a listing of all of the Microsoft Windows resources that the
program uses. It includes the icons, bitmaps, and cursors that are stored
in the RES subdirectory. This file can be directly edited in Microsoft
Developer Studio.

res\Polyhedron.ico
This is an icon file, which is used as the application's icon. This
icon is included by the main resource file Polyhedron.rc.

res\Polyhedron.rc2
This file contains resources that are not edited by Microsoft
Developer Studio. You should place all resources not
editable by the resource editor in this file.

Polyhedron.clw
This file contains information used by ClassWizard to edit existing
classes or add new classes. ClassWizard also uses this file to store
information needed to create and edit message maps and dialog data
maps and to create prototype member functions.

/////////////////////////////////////////////////////////////////////////////

For the main frame window:

MainFrm.h, MainFrm.cpp
These files contain the frame class CMainFrame, which is derived from
CFrameWnd and controls all SDI frame features.


/////////////////////////////////////////////////////////////////////////////

AppWizard creates one document type and one view:

PolyhedronDoc.h, PolyhedronDoc.cpp - the document
These files contain your CPolyhedronDoc class. Edit these files to
add your special document data and to implement file saving and loading
(via CPolyhedronDoc::Serialize).

PolyhedronView.h, PolyhedronView.cpp - the view of the document
These files contain your CPolyhedronView class.
CPolyhedronView objects are used to view CPolyhedronDoc objects.



/////////////////////////////////////////////////////////////////////////////
Other standard files:

StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named Polyhedron.pch and a precompiled types file named StdAfx.obj.

Resource.h
This is the standard header file, which defines new resource IDs.
Microsoft Developer Studio reads and updates this file.

/////////////////////////////////////////////////////////////////////////////
Other notes:

AppWizard uses 'TODO:' to indicate parts of the source code you
should add to or customize.

If your application uses MFC in a shared DLL, and your application is
in a language other than the operating system's current language, you
will need to copy the corresponding localized resources MFC40XXX.DLL
from the Microsoft Visual C++ CD-ROM onto the system or system32 directory,
and rename it to be MFCLOC.DLL. ('XXX' stands for the language abbreviation.
For example, MFC40DEU.DLL contains resources translated to German.) If you
don't do this, some of the UI elements of your application will remain in the
language of the operating system.

/////////////////////////////////////////////////////////////////////////////

Реферат.


Программныйпродукт позволяетнаглядно изучитьстроение исвойства платоновыхтел, а такжепозволяетначинающимпрограммистамреализоватьпринцип обученияна примерах.Продукт разработанна языке программированияМ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 Windows95;

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

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

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

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

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

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

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

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

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

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

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

Microsoft Visual C++обеспечиваетнесколькоразличных путейнаписанияпрограмм дляGUI Windows (graphical user interface).Во-первых, можнописать программыGUI на С и С++,напрямую обращаяськ функциям,которые обеспечиваютсянаходящимсявнутри Win32программныминтерфейсомприложений(API), и являетсячастью операционныхсистем Windows95 и 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.


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

Интерфейспредставляетсобой стандартноеокно Windows, состоящееиз панели меню,панели интсрументови окна представления.На панели менюпредставленоменю Polyhedron.Это меню представляетсобой списокиз 5 правильныхмногогранникови пункта Settings,открывающегоменю параметровпрограммы.Выбранныймногогранниквыделяетсяв этом менюгалочкой. Напанели инструментовимеется 3 кнопки.Первая кнопкаосуществляетзапуск движениямногогранника,вторая – егоостановку, атретья – непосредственноеоткрытие менюпараметровSettings.

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

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

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

Алгоритмрешения этойзадачи строитсяследующимобразом:

Вначаледвигаем камеруна заданноерасстояние“к пользователю”по оси OZ длятого, чтобыиметь возможностьсмотреть наплатоновоетело “состороны”,т.к. изначальнокамера находитсяв начале координат,где впоследствиии создаетсятело. Затемсдвигаем началокоординат назаданное расстояниеотносительнозаданной оси– оси вращения– для того, чтобыось вращениябыла от телаудалена, и создаемплатоновоетело. Решениефункциональнойзадачи созданияплатоновоготела интересане представляет,т.к. с помощьюбиблиотекиOpenGL это делаетсявызовом всеголишь однойопределеннойфункции. Телосоздается вначале координат.После созданияплатоновоготела оно поворачиваетсяотносительнооси вращенияна определенныйугол, значениекоторого постоянноувеличиваетсяили уменьшаетсяв зависимостиот направлениявращения. Таккак даннаяпоследовательностьдействий выполняетсяв цикле, телопостоянносдвигаетсяна все больший(меньший) угол,чем и достигаетсявращение, в товремя как всеостальныепараметрыостаются неизменными.

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


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

    1. Эксплуатационнаядокументацияна программныйпродукт.

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

Программныйпродукт "Polyhedron"может применяться:

  • длянаглядногоизучения строенияи свойств платоновыхтел;

  • дляобучения напримерах начинающихпрограммистов.

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

Внимание!


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

Если вы несогласны сэтим, то неиспользуйтеданную программу!


Введение


Авторы руководствапользователяприглашаютвас познакомитьсяс основнымивозможностями«Polyhedron». Мыпредоставляемсовершенноновую возможностьдля изученияплатоновыхтел в пространствена персональномкомпьютере.Результатомразработкиявляется болеепростой и наглядныйспособ изученияплатоновыхтел в пространстве.Руководствопользователянаписано длявсех, кто незнаком с платоновымителами. ЕслиВы являетесьопытным пользователемперсональногокомпьютера,то нижеследующийтекст, возможно,будет Вам неинтересен.Руководствопользователяявится для Васобширным справочнымруководством,помогающимразобратьсяв программномпродукте«Polyhedron».

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

  • операционнойсистемы Windows95;

  • FloppyDisk Drive 3,5”.

Вставте нашудискету в свойдисковод. Затемскопируйтевсе файлы взаранее созданнуюдиректорию.

Поместитеострие стрелкина файл Polyhedron.ехе,затем щелкнителевой кнопкоймыши два раза.Перед вамипоявится окнопрограммногопродукта «Polyhedron»(см. рис. 1).


р


ис.3.1.2.1.Окнопрограммногопродукта.

Д


ляначала Вы можетепросмотретьконтрольныйпример, наведякурсор мышина кнопку “Play”и нажать левуюкнопку мыши.Чтобы поменятьплатоново телоподведитекурсор мышына слово Polyhedron. Затемнажмите левуюкнопку мыши,чтобы открытьменю (см. рис.2).

рис. 3.1.2.2.Меню Polyhedron.

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

Выбрав пунктSettings откроетсядиалоговоеокно (см. рис.3).


р


ис.3.1.2.3. Диалоговоеокно.

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

  • длинуребра платоновоготела (Length of edge);

  • дистанциядо камеры (Distanceto the camera);

  • расстояниедо оси вращения(Distance to the axis);

  • осьвращения (Rotationaxis):

  • вращениевокруг оси OX,

  • вращениевокруг оси OY,

  • вращениевокруг оси OZ;

  • направлениевращения(Direction):

  • почасовой стрелке(clockwise),

  • противчасовой стрелки(counterclockwise);

  • структурутела – решетчатуюили сплошную(флажок Wired)

Закончиввыбор, нажмитена кнопку OK.

После завершениявыбора параметров,результат можнопросмотреть,подведя курсормыши на кнопку“Play” и нажав левуюкнопку мыши.


Функциональныеклавиши

Ctrl+1 илиAlt+P и Т –Тетраэдр(Tetrahedron);

Ctrl+2 или Alt+P иН – Гексаэдр(Hexahedron);

Ctrl+3 или Alt+P иО – Октаэдр(Octahedron);

Ctrl+4 или Alt+P иD – Додекаэдр(Dodecahedron);

Ctrl+5 или Alt+P иI – Икосаэдр(Icosahedron);

Ctrl+P или Alt+P иS – Установки(Settings).


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

      2. Контрольныйпример.

Контрольныйпример предоставленв виде заданныхпо умолчаниюзначений параметровзадачи:

Осуществляетсявращение почасовой стрелкене решетчатоготетраэдравокруг оси ОХна расстоянии10 и при расположениикамеры на расстоянии50 до оси вращения.


Списокиспользуемойлитературы.


  1. ЯнгМ. Microsoft Visual C++ 4 дляпрофессионалов.- М.:ЭНТРОП, 1997.

  2. ШикинА.В., БоресковА.В. Компьютернаяграфика. Динамика,реалистическиеизображения.-М.:ДИАЛОГ-МИФИ,1996.

  3. ПодбельскийВ.В. Язык С++. –М.:Финансы истатистика,1996.


13



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

  1. Введение.

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

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

Название

многогранника

Числограней Числоребер Числовершин
Тетраэдр 4 6 4
Гексаэдр 6 12 8
Октаэдр 8 12 6
Додекаэдр 12 30 20
Икосаэдр 20 30 12

Описываемыйпрограммныйпродукт состоитиз разделабиблиотеки,посвященногоплатоновымтелам, и приложениядля графическогоинтерфейсапользователя(graphicaluser interface – GUI)Windows, позволяющегопри помощираздела библиотекивыполнятьследующиеоперации надправильнымимногогранниками:

  • вращениетела вокругзаданной точки;

  • вращениетела вокругзаданной оси;

  • облеттела.

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

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

2. Основаниедля разработки.

Основаниемдля разработкикурсовогопроекта послужилплан специальности220100 "Вычислительныемашины, системы,комплексы исети" по дисциплине"Алгоритмическиеязыки и программирование"за второй курс.

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

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

4. Требованияк программеи программномупродукту.

4.1. Функциональныехарактеристики.

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

  • выбортипа ГРО;

  • созданиеграфическогообъекта;

  • вводпараметровобъекта ивыполняемойим функции;

  • демонстрацияобъектом выбраннойпользователемфункции.

Созданиеграфическогообъекта происходитв момент выборапользователемтипа многогранникаиз спискамногогранников,появляющегосяпосле "нажатия"пользователемкнопки Polyhedron.Ввод параметровмногогранника,а именно длиныего ребра,осуществляетсяв диалоговомокне, открываемомпри "нажатии"кнопки Settings,находящейсяв меню Polyhedron.Выбор функции,выполняемоймногогранником,производитсяиз меню Action.При "нажатии"кнопки Settings вэтом же меню,открываетсядиалоговоеокно, позволяющееввести параметрыфункций. Просмотрначинаетсяпосле "нажатия"кнопки Start иостанавливаетсяпосле "нажатия"кнопки Stop.Просмотр можноосуществлятьбез изменениякаких-либопараметров,т.е. в началеработы программывсе необходимыепараметрыпредустановленныи не требуютобязательногоописания.

4.2. Организациявходных/выходныхданных.

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

Имя

Семантика

Тип

Размерпамяти

Диапазон

изменения

m_Polyhedron типмногоугольника целое 1-5
m_Edge длинаребра целое *
m_Action типфункции целое 1-3
m_RotPoint_Dir направлениепри движениивокруг точки целое *
m_RotPoint_Dist расстояниеот объектадо точки целое *
m_RotLine_Dir направлениепри движениивокруг линии целое *
m_RotLine_Dispos расположениелинии в пространстве целое *
m_RotLine_Dist расстояниеот объектадо линии целое *
m_FlyRound_Dist расстояниедо объектапри облете целое *
Cx текущеемаксимальноезначение Хокна представления целое **
Cy текущеемаксимальноезначение Yокна представления целое **

*Диапазонизмененияпараметра неопределен, т.к.он зависит отразмера окнапредставления.

**Диапазонизмененияпараметра неопределен, т.к.он определяетсярежимом работывидеоадаптера.

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

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

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

Времявосстановленияпосле отказаопределяетсявременем перезагрузкиоперационнойсистемы Windowsи повторногозапуска программы.

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

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

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

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

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

  • 10 МВна жесткомдиске;

  • операционнаясистема Microsoft Windows95.

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

Выполнениепрограммынеобходимоосуществлятьв операционнойсистеме MicrosoftWindows 95.

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

Программнаядокументациясодержит:

  • описаниеприменения;

  • руководствопользователя(оператора);

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

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

6.1.Стадия аналитическойразработки:

  • ознакомлениес теоретическимматериалом;

  • аналитическаяобработкатеоретическойинформации.

6.2.Стадия программнойразработки:

  • формированиепрограммы какотдельныхструктур;

  • разработкаи отладка полученныхструктур;

  • объединениеструктур иформированиеединой программы.

7. Порядоксдачи работы.

7.1. Присдаче работыпроизводитсядемонстрацияна ЭВМ разработаннойпрограммы наконтрольномпримере.

7.2.Копиивсех документоввключают:

  • исходныйтекст программы;

  • загрузочныемодули;

  • текстовуюдокументацию.

Копиипередаютсяна магнитномносителе накафедру непозднее, чемза 3 дня до защиты.


Утверждаю:___________________


__________________