Реферат.
Програмний продукт дозволяє наочно вивчити будову та властивості Платонових тіл, а також дозволяє починаючим програмістам реалізувати принцип навчання на прикладах. Продукт розроблений на мові програмування Мicrosoft Visual C + + 5.0 з використанням об'єктно-орієнтованої методології. При розробці була задіяна бібліотека моделювання тривимірної графіки OpenGL. Запуск програми можливий тільки в операційному середовищі Microsoft Windows 95. Діалог користувача з програмою, а саме введення параметрів, здійснюється за допомогою діалогових вікон програми. Діапазон що вводяться значень програмно обмежений, з метою недопущення некоректної роботи або виникнення помилки.
Зміст.
1. Теоретична частина ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 3
1.1. Введення ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1.2. Аналітичний огляд ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1.3. Опис математичного апарату аналітичної геометрії ... ... 4
2. Технічний і робочий проекти програмного продукту ... ... ... ... ... 5
2.1. Уточнення технічних вимог, сфрмулірованних в теоретичному завданні ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 5
2.2. Постановка завдання ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 5
2.3. Підхід до вирішення завдання ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 5
2.4. Вибір програмного середовища, інструментальних засобів разработкі.6
2.5. Розробка функціональної структури ПС, вимог до окремих підсистем, системних угоди ... ... ... ... ... ... ... ... 7
2.6. Реалізація діалогового інтрефейса і видачі результатів ... ... ... ... 8
2.7. Опис алгоритмів рішення функціональних задач ... ... ... .... ... .9
3. Експериментальна частина ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... ... 9
3.1. Експлуатаційна документація на ПС ... ... ... ... ... ... ... ... ... ... ... ... 9
3.1.1. Опис застосування ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .9
3.1.2. Керівництво користувача ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 9
3.1.3. Керівництво програміста ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 12
3.1.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.3 Опис математичного апарату аналітичної геометрії.
Рух графічних об'єктів в просторі здійснюється за допомогою афінних перетворень. Будь-яке Афінний перетворення в тривимірному просторі може бути представлено у вигляді суперпозиції обертань, розтягань, відображень та переносів. Кожна точка простору (крім початкової точки О) може бути задана четвіркою одновреммено не дорівнює нулю чисел (hx, hy, hz, h); ця четвірка чисел визначена однозначно з точністю до загального множника.
Розглянемо матриці перетворень.
1) Матриці обертання в просторі
Матриця обертання навколо осі абсцис на кут?:
Матриця обертання навколо осі ординат на кут?:
Матриця обертання навколо осі апплікат на кут?:
2) Матриця розтягування (стискання):
де
?> 0 - коефіцієнт розтягування (стискання) уздовж осі абсцис;
?> 0 - коефіцієнт розтягування (стискання) уздовж осі ординат;
?> 0 - коефіцієнт розтягування (стискання) уздовж осі апплікат.
3) Матриці відображення.
Матриця відображення відносно площини xy:
Матриця відображення відносно площини yz:
Матриця відображення відносно площини zx:
4) Матриця перенесення
де (???????? - вектор переносу.
2. Технічний і робочий проекти програмного продукту.
2.1 Уточнення технічних вимог, сформульованих в теоретичному завданні.
Для успішного запуску програми та роботи з нею необхідно виконання нижче перерахованих вимог:
- IBM-сумісний комп'ютер із процесором Pentium 90;
- VGA відеокарта;
- 16 МВ оперативної пам'яті;
- Операційна система Microsoft Windows 95;
- 4 МВ на жорсткому диску.
2.2 Постановка завдання.
Розробити розділ графічної бібліотеки, що описує Платонова тіла та функції для роботи з ними, а також засіб роботи з нею. Програмний продукт повинен здійснювати моніторинг обертання графічного об'єкта (Платонова тіла) навколо осей координат (OX, OY, OZ).
2.3 Підхід до вирішення завдання.
Підхід до рішення задачі заснований на об'єктно-орієнтованої методології. Але слід зазначити, що об'єктно-орієнтоване програмування можна ефективно використовувати, якщо йому передують об'єктно-орієнтований аналіз задачі і об'єктивно-орієнтоване проектування програмного комплексу. Без об'єктно-орієнтованого проекту спроби застосування об'єктно-орієнтованого програмування є щонайменше малоефективними і вельми трудомісткими.
Вихідна задача розбивається на наступні підзадачі:
- Розробка інтерфейсу програми;
- Розробка класу багатогранників;
- Розробка класу функцій, які дозволяють проводити перетворення багатогранників в просторі;
2.4 Вибір програмного середовища, інструментальних засобів розробки.
В якості програмного середовища вибрана мова програмування 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.
2.5 Розробка функціональної структури програмного продукту, вимог до окремих підсистем, системних угод.
Функціональна структура програмного продукту містить наступні класи:
* CpolyhedronApp - основний клас додатки, успадковані від CWinApp
* CmainFraim - клас вікна, успадковані від CframeWnd і контролює всі властивості та особливості вікна програми
* CpolyhedronDoc - клас документа програми, успадковані від CDocument. Документ - це сукупність всіх або частини даних, що використовуються додатком, в тому числі значення параметрів, що вказуються користувачем і т.д. Програма може мати кілька документів, хоча в нашому випадку документ всього один.
* CpolyhedronView - клас, що дозволяє відображати вміст класу CPolyhedronDoc. Успадковується від Cview. У нашому випадку служить в тому числі і для відображення Платонових тіл по параметрам з CpolyhedronDoc.
* CpolyhedronAction - клас, що містить функції для створення і дій над Платоновим тілами.
* CpolySet, CaboutDlg - класи, успадковані від Cdialog і службовці для побудови і роботи з діалогове вікно налаштувань програми і діалогове вікно About.
Детальний дерево класів програмного продукту з перерахуванням всіх функцій і змінних додається.
Системні угоди:
1. Завдання всіх параметрів необхідних у технічному завданні операцій, таких як координати точок, рівняння прямих і т.п. веде до значного ускладнення роботи з програмою і вимагає додаткових знань і зусиль від користувача. У зв'язку з цим вводяться обмеження на вироблені операції: наприклад, обертання навколо лінії реалізується тільки навколо координатних осей. Але результатом введення подібних обмежень є те, що операції обертання навколо точки і обльоту тіла зводяться до вже реалізованого обертанню навколо лінії.
На прикладі обльоту тіла: при допущенні, що обліт тіла виробляється на колі заданого радіуса, існують два принципових варіанти обльоту: з камерою, спрямованої постійно на тіло, і з камерою, спрямованої по дотичній до траєкторії руху. Перший з цих варіантів зводиться до обертання тіла навколо власної осі на певній відстані від камери при розташуванні тіла по центру екрана, другий - до обертання тіла навколо власної осі при розташуванні тіла з краю екрану так, що видно лише його частину.
У зв'язку з вищевикладеним операції обертання навколо точки і обльоту тіла не представляють інтересу і не будуть реалізовані. Також стають непотрібними деякі параметри з передбачених раніше, які також не будуть реалізовані.
2. Введення параметра відстані до камери дозволяє візуально визначити довжину ребра тіла, і разом з тим розширює можливості програми. У зв'язку з цим параметр довжини ребра тіла в програмі замінений вищевказаним параметром.
3. У зв'язку зі зміною набору функцій і параметрів програми, а також введенням додаткових елементів інтерфейсу, таких як панель інструментів, змінений початковий проект інтерфейсу. Детальний опис його міститься в керівництві користувача.
4. Вибрані програмні засоби дозволяють моделювати рух тіла за межами видимого простору, тим самим обмеження на вихід тіла за межі екрану представляється зайвим і звужує можливості програми. Контроль вхідних даних не буде полягати в недопущенні цього, однак буде здійснюватися контроль, що запобігає появі помилок.
2.6 Реалізація діалогового інтерфейсу і видачі результатів.
Структура діалогового інтерфейсу програмного продукту показана на рис. 4.6.1.
рис. 4.6.1. Структура діалогового інтерфейсу.
Інтерфейс являє собою стандартне вікно Windows, що складається з панелі меню, панелі интсрумент і вікна подання. На панелі меню представлено меню Polyhedron. Це меню є список з 5 правильних багатогранників та пункту Settings, який відкриває меню параметрів програми. Обраний багатогранник виділяється цього меню галочкою. На панелі інструментів є 3 кнопки. Перша кнопка здійснює запуск руху багатогранника, другий - його зупинку, а третій - безпосереднє відкриття меню параметрів Settings.
Видача результатів здійснюється у вікні вистави. Результатом роботи програми є рух Платонова тіла з урахуванням заданих користувачем параметрів.
2.7 Описи алгоритмів рішення функціональних задач.
Реалізація 3-хмірні графіки за допомогою бібліотеки OpenGL базується на основі принципів афінних перетворень в просторі. Також дуже важливо поняття камери - образно кажучи, такого собі віртуального вікна в тривимірному просторі. Все те, що відображається в графічному вікні, ми бачимо за допомогою камери. Ще одне важливе поняття - це поняття матриці, що описує об'єкти в просторі - фактично, деякої тривимірної моделі простору. На основі цих понять вирішується основна функціональна завдання проекту - обертання Платонових тел.
Алгоритм рішення цієї задачі будується наступним чином:
Спочатку рухає камеру на задану відстань "до користувача" по осі OZ для того, щоб мати можливість дивитися на Платонове тіло "з боку", тому що спочатку камера знаходиться на початку координат, де згодом і створюється тіло. Потім Зрушуємо початок координат на заданий відстань щодо заданої осі - осі обертання - для того, щоб вісь обертання була від тіла вилучена, і створюємо Платонове тіло. Рішення функціональної задачі створення Платоново тіла інтересу не представляє, тому що за допомогою бібліотеки OpenGL це робиться викликом всього лише однієї певної функції. Тіло створюється на початку координат. Після створення Платоново тіла воно повертається щодо осі обертання на певний кут, значення якого постійно збільшується або зменшується в залежності від напрямку обертання. Так як дана послідовність дій виконується в циклі, тіло постійно зсувається на все більший (менший) кут, чим і досягається обертання, у той час як всі інші параметри залишаються незмінними.
Всі процедури зсуву початку координат, повороту і т.п. досягаються, як це і було описано раніше, за допомогою афінних перетворень, шляхом множення матриці, яка описує тривимірний простір, на матриці повороту, зсуву тощо Для кожного такого дії передбачені функції бібліотеки OpenGL.
3. Експериментальна частина.
3.1 Експлуатаційна документація на програмний продукт.
3.1.1 Опис застосування.
Программмний продукт "Polyhedron" може застосовуватися:
- Для наочного вивчення будови і властивостей Платонових тіл;
- Для навчання на прикладах початківців програмістів.
3.1.2 Керівництво користувача.
Увага!
За можливі помилки, збої, можливий заподіяний моральний або матеріальний збиток і т.д., автори відповідальності не несуть. Ви використовуєте програму на свій страх і ризик!
Якщо ви не згодні з цим, то не використовуйте цю програму!
Введення
Автори посібника користувача запрошують вас познайомитися з основними можливостями «Polyhedron». Ми надаємо абсолютно нову можливість для вивчення Платонових тіл в просторі на персональному комп'ютері. Результатом розробки є більш простий і наочний спосіб вивчення Платонових тіл в просторі. Керівництво користувача написано для всіх, хто не знайомий з Платоновим тілами. Якщо Ви є досвідченим користувачем персонального комп'ютера, то другої текст, можливо, Вам не цікавий. Керівництво користувача з'явиться для Вас великим довідковим керівництвом, що допомагає розібратися в програмному продукті «Polyhedron».
Для того, щоб запустити програмний продукт необхідна наявність на вашому персональному комп'ютері:
- Операційної системи Windows 95;
- Floppy Disk 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);
- Дистанція до камери (Distance to the camera)
- Відстань до осі обертання (Distance to the axis);
- Вісь обертання (Rotation axis):
- Обертання навколо осі 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).
3.1.3 Керівництво програміста.
3.1.4 Контрольний приклад.
Контрольний приклад надано у вигляді заданих за замовчуванням значень параметрів задачі:
Здійснюється обертання за годинниковою стрілкою НЕ гратчастого тетраедра навколо осі ОХ на відстані 10 і при розташуванні камери на відстані 50 до осі обертання.
Список використаної літератури.
1. Янг М. Microsoft Visual C + + 4 для професіоналів. - М.: ентропія, 1997.
2. Шикін А.В., Боресков А.В. Комп'ютерна графіка. Динаміка, реалістичні зображення .- М.: ДИАЛОГ-МИФИ, 1996.
3. Подбельський В.В. Мова С + +. - М.: Фінанси і статистика, 1996.
4.
3