DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

Рік:
2015
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування комп’ютерної графіки
Група:
СІ-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:20

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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