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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Звіт про виконання лабораторної роботи №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:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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