ПОБУДОВА РУХОМИХ ЗОБРАЖЕНЬ В СЕРЕДОВИЩІ MICROSOFT VISUAL STUDIO C++ 2008

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
ЗІ
Кафедра:
Кафедра КСА

Інформація про роботу

Рік:
2014
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування комп’ютерної графіки
Група:
СІ-21

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра КСА Лабораторна робота №4 З курсу «Програмування комп’ютерної графіки» На тему: “ ПОБУДОВА РУХОМИХ ЗОБРАЖЕНЬ В СЕРЕДОВИЩІ MICROSOFT VISUAL STUDIO C++ 2008” Варіант № 23 Завдання: Написати програму мовою C++, що дозволяє сформувати на екрані комп’ютера рухоме зображення, використовуючи матричні операції. / Блок-схема алгоритму програми: Список ідентифікаторів констант, змінних, процедур і функцій: MoveTo( ) – переносить курсор у задану точку; LineTo( ) – будує лінію до заданої точки; SelectStockObject(BLACK_PEN)– функція для вибору чорного пензля. SelectStockObject(WHITE_PEN)– функція для вибору білого пензля. Ellipse ( ) – малює еліпс Остаточно відлагоджений текст програми згідно з отриманим завданням. #include "stdafx.h" #include "MFC 4 LABA.h" #include "math.h" #include "MFC 4 LABADoc.h" #include "MFC 4 LABAView.h" #ifdef _DEBUG #define new DEBUG_NEW #endif void CMFC4LABAView::OnDraw(CDC* dc) { CMFC4LABADoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; RECT rect; GetClientRect(&rect); double xc, yc, r, rd, angle, x, y, h=0.4; double dxc, dyc; xc = rect.right / 2; yc = rect.bottom / 2; rd = 10; double C = 550+rd; x = xc; y = yc + 100; dc->MoveTo( C-rd +18 , C+39-300+1 ); dc->LineTo( C-rd + 18 , C + 9-300+1 ); dc->LineTo( C-rd + 18 , C + 59-300+1 ); dc->MoveTo( C-rd +18 , C+40-300+1 ); dc->LineTo( C-rd + 138 , C + 40-300+1 ); dc->LineTo( C-rd + 138 , C + 9-300+1 ); dc->LineTo( C-rd + 138 , C + 59-300+1 ); while(1){ ///// Хід Праворуч for (angle = 0; angle <= 3.1415*4+3.1415; angle += h/10) { double step= angle*6.3; double angle2 = 3.1415/2; dxc = rd * sin(angle2)+570+step; dyc = -rd * cos(angle2)+250+rd+32; double dxc2 = rd * sin(angle)+dxc; double dyc2 = -rd * cos(angle)+dyc; double dxc1 = rd * sin(angle+3.1415/2)+dxc; double dyc1 = -rd * cos(angle+3.1415/2)+dyc; double dxc3 = rd * sin(angle+3.1415)+dxc; double dyc3 = -rd * cos(angle+3.1415)+dyc; double dxc4 = rd * sin(angle+3.1415+3.1415/2)+dxc; double dyc4 = -rd * cos(angle+3.1415+3.1415/2)+dyc; dc->SelectStockObject(BLACK_PEN); dc->Ellipse(dxc - rd, dyc - rd, dxc + rd, dyc + rd); dc->MoveTo(dxc, dyc); dc->LineTo(dxc2 , dyc2 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc1 , dyc1 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc3 , dyc3 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc4 , dyc4 ); Sleep(10); dc->SelectStockObject(WHITE_PEN); dc->Ellipse(dxc - rd, dyc - rd, dxc + rd, dyc + rd); dc->MoveTo(dxc, dyc); dc->LineTo(dxc2 , dyc2 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc1 , dyc1 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc3 , dyc3 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc4 , dyc4 ); } //// Хід ліворуч for (angle = 3.1415*4-2; angle >= -4.95; angle-= h/10) { double step= angle*6.3; double angle2 = 3.1415/2; dxc = rd * sin(angle2)+600+step; dyc = -rd * cos(angle2)+250+rd+32; double dxc2 = rd * sin(angle)+dxc; double dyc2 = -rd * cos(angle)+dyc; double dxc1 = rd * sin(angle+3.1415/2)+dxc; double dyc1 = -rd * cos(angle+3.1415/2)+dyc; double dxc3 = rd * sin(angle+3.1415)+dxc; double dyc3 = -rd * cos(angle+3.1415)+dyc; double dxc4 = rd * sin(angle+3.1415+3.1415/2)+dxc; double dyc4 = -rd * cos(angle+3.1415+3.1415/2)+dyc; dc->SelectStockObject(BLACK_PEN); dc->Ellipse(dxc - rd, dyc - rd, dxc + rd, dyc + rd); dc->MoveTo(dxc, dyc); dc->LineTo(dxc2 , dyc2 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc1 , dyc1 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc3 , dyc3 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc4 , dyc4 ); Sleep(10); dc->SelectStockObject(WHITE_PEN); dc->Ellipse(dxc - rd, dyc - rd, dxc + rd, dyc + rd); dc->MoveTo(dxc, dyc); dc->LineTo(dxc2 , dyc2 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc1 , dyc1 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc3 , dyc3 ); dc->MoveTo(dxc, dyc); dc->LineTo(dxc4 , dyc4 ); }}; Результати виконання програми. / Висновок: Я набув практичних навиків в складанні програм для побудови рухомих зображень на екрані комп’ютера за допомогою матричних перетворень.
Антиботан аватар за замовчуванням

02.04.2015 22:04-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!