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

Звіт про виконання лабораторної роботи №2

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

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

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

Рік:
2012
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Програмування комп’ютерної графіки

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Звіт про виконання лабораторної роботи №2 з курсу “ Програмування комп’ютерної графіки” Львів-2011 Мета роботи: Набути практичних навиків в складанні програми для побудови графіків в середовищі Microsoft Visual Studio C++ 2008. Завдання: Написати програму, яка будує в середині екрану систему координат ХY і на ній графік функції Y=F(X), якщо аргумент або параметр змінюється на проміжку [a,b], з кроком h. Задана функція: X=7*(cos(t)-t*sin(t)+pow(cos(t),3))-50*sin(t/4); Y=7*(sin(t)-t*cos(t)+pow(sin(t),3))-50*cos(t/4); Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі, та їх пояснення dXmash, dYmash – змінні які відповідають за розширення екрану; dXreal, dYreal – змінні які відповідають за різницю між максимальним і мінімальним значеннями координат відповідних осей; Xmash, Ymash – поточні машинні координати; Kx, Ky – коефіцієнти розширення; Y0mash, X0mash – відносний початок машинних координатж; Xmax, Xmin, Ymax, Ymin – максимальні та мінімальні значення функцій відповідних координат; Y, X – значення функційж; t – параметр функцій, який змінюється на інтервалі [1,17]; i – змінна, за допомогою якої здійснюється проставляння засічок на осях; h – крок зміни параметра t; У програмі використано оператори умовності if та for. А також команди для створення користувацького пера типу: CPen red_pen; red_pen.CreatePen (PS_SOLID, 2, RGB (255, 0, 0)); dc.SelectObject(&red_pen); Остаточна версія програми: void CChildView::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here // Do not call CWnd::OnPaint() for painting messages double i, t, dXreal, dYreal, Kx, Ky, Xmash, Ymash, dXmash=900, dYmash=600, X0mash=640, Y0mash=500, Xmax=-10000, Xmin=10000, Ymax=-10000, Ymin=10000, h=0.01, X, Y; //Знаходження коефіцієнтів перетворення: for (t=1; t<=17; t=t+h) { X=7*(cos(t)-t*sin(t)+pow(cos(t),3))-50*sin(t/4); Y=7*(sin(t)-t*cos(t)+pow(sin(t),3))-50*cos(t/4); if (Xmax<X) Xmax=X; if (Xmin>X) Xmin=X; if (Ymax<Y) Ymax=Y; if (Ymin>Y) Ymin=Y; } dXreal=Xmax-Xmin; dYreal=Ymax-Ymin; Kx=dXmash/dXreal; Ky=dYmash/dYreal; Xmash=X0mash+X*Kx; Ymash=Y0mash-Y*Ky; //Малюємо вісь x: dc.MoveTo (X0mash-620, Y0mash); dc.LineTo (X0mash+620, Y0mash); //Малюємо стрілку на осі х: dc.MoveTo (X0mash+620, Y0mash); dc.LineTo (X0mash+615, Y0mash-5); dc.MoveTo (X0mash+620, Y0mash); dc.LineTo (X0mash+615, Y0mash+5); //Малюємо вісь у: dc.MoveTo (X0mash, Y0mash-500); dc.LineTo (X0mash, Y0mash+300); //Малюємо стрілку на осі у: dc.MoveTo (X0mash, Y0mash-500); dc.LineTo (X0mash-5, Y0mash-495); dc.MoveTo (X0mash, Y0mash-500); dc.LineTo (X0mash+5, Y0mash-495); //Будуємо графік: t=1; X=7*(cos(t)-t*sin(t)+pow(cos(t),3))-50*sin(t/4); Y=7*(sin(t)-t*cos(t)+pow(sin(t),3))-50*cos(t/4); Xmash=X0mash+X*Kx; Ymash=Y0mash-Y*Ky; dc.MoveTo (Xmash, Ymash); //Cтворюємо користувацьке перо червоного кольору, для того, щоб виділити графік: CPen red_pen; red_pen.CreatePen (PS_SOLID, 2, RGB (255, 0, 0)); dc.SelectObject(&red_pen); for (t=1; t<=17; t=t+h) { X=7*(cos(t)-t*sin(t)+pow(cos(t),3))-50*sin(t/4); Y=7*(sin(t)-t*cos(t)+pow(sin(t),3))-50*cos(t/4); Xmash=X0mash+X*Kx; Ymash=Y0mash-Y*Ky; dc.LineTo (Xmash, Ymash); } //Знову переходимо до стандартного пера: CPen black; black.CreatePen (PS_SOLID, 1, RGB (0, 0, 0)); dc.SelectObject(&black); //Робимо засічки на осі х: for (i=-160; i<=160; i=i+20) { dc.MoveTo (X0mash+i*Kx, Y0mash-3); dc.LineTo (X0mash+i*Kx, Y0mash+3); } //Робимо засічки на осі у: for (i=-140; i<=160; i=i+20) { dc.MoveTo (X0mash-3, Y0mash+i*Ky); dc.LineTo (X0mash+3, Y0mash+i*Ky); } //Підписуємо вісь х: const CString X0("0"); dc.TextOutW(X0mash-10,Y0mash+10, X0); const CString X1("-160"); dc.TextOutW(X0mash-165*Kx,Y0mash+10, X1); const CString X2("-140"); dc.TextOutW(X0mash-145*Kx,Y0mash+10, X2); const CString X3("-120"); dc.TextOutW(X0mash-125*Kx,Y0mash+10, X3); const CString X4("-100"); dc.TextOutW(X0mash-105*Kx,Y0mash+10, X4); const CString X5("-80"); dc.TextOutW(X0mash-85*Kx,Y0mash+10, X5); const CString X6("-60"); dc.TextOutW(X0mash-65*Kx,Y0mash+10, X6); const CString X7("-40"); dc.TextOutW(X0mash-45*Kx,Y0mash+10, X7); const CString X8("-20"); dc.TextOutW(X0mash-25*Kx,Y0mash+10, X8); const CString X9("20"); dc.TextOutW(X0mash+15*Kx,Y0mash+10, X9); const CString X10("40"); dc.TextOutW(X0mash+35*Kx,Y0mash+10, X10); const CString X11("60"); dc.TextOutW(X0mash+55*Kx,Y0mash+10, X11); const CString X12("80"); dc.TextOutW(X0mash+75*Kx,Y0mash+10, X12); const CString X13("100"); dc.TextOutW(X0mash+95*Kx,Y0mash+10, X13); const CString X14("120"); dc.TextOutW(X0mash+115*Kx,Y0mash+10, X14); const CString X15("140"); dc.TextOutW(X0mash+135*Kx,Y0mash+10, X15); const CString X16("160"); dc.TextOutW(X0mash+155*Kx,Y0mash+10, X16); const CString Xx("X"); dc.TextOutW(X0mash+610,Y0mash+10, Xx); //Підписуємо вісь y: const CString Yy("Y"); dc.TextOutW(X0mash+10,Y0mash-495, Yy); const CString Y1("140"); dc.TextOutW(X0mash+10,Y0mash-145*Ky, Y1); const CString Y2("120"); dc.TextOutW(X0mash+10,Y0mash-125*Ky, Y2); const CString Y3("100"); dc.TextOutW(X0mash+10,Y0mash-105*Ky, Y3); const CString Y4("80"); dc.TextOutW(X0mash+10,Y0mash-85*Ky, Y4); const CString Y5("60"); dc.TextOutW(X0mash+10,Y0mash-65*Ky, Y5); const CString Y6("40"); dc.TextOutW(X0mash+10,Y0mash-45*Ky, Y6); const CString Y7("20"); dc.TextOutW(X0mash+10,Y0mash-25*Ky, Y7); const CString Y8("-20"); dc.TextOutW(X0mash+10,Y0mash+15*Ky, Y8); const CString Y9("-40"); dc.TextOutW(X0mash+10,Y0mash+35*Ky, Y9); } Результат роботи програми: / Висновок: виконуючи дану лабораторну роботу я набув практичних навиків в складанні програми для побудови графіків в середовищі Microsoft Visual Studio C++ 2008.
Антиботан аватар за замовчуванням

24.04.2012 20:17

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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