ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / ЗВІТ До лабораторної роботи №2 З курсу :”Комп’ютерна графіка” На тему: “ ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ ” Львів 2014 Мета роботи - набути практичних навиків в складанні програм для побудови графіків. ЗАВДАННЯ Написати програму, яка будує в середині екрану систему координат XY і на ній графік функції Y=F(X), якщо аргумент або параметр змінюється на проміжку [а;Ь] з кроком h. / Блок-схема:   СПИСОК ФУНКЦІЙ ВИКОРИСТАНИХ В ПРОГРАМІ for()-цикл. MovcTo(int x, int у) - переміщує поточну вершину, jc, у визначають координати нової поточної вершини. Повертає х- та y-координати попередньої поточної вершини як CPoint об’єкт. LineTo(int x, int y )- малює лінію з поточної вершини до вершини з координатами лс, у. Поточна вершина переміщується у вершину з координатами jc, у. CreatePen(int nPenStyle, int пWidth, COLORREF crColor) - ініціалізує перо заданими атрибутами. TextOutW(int х, int у, const CString& str) - виводить стрічку на екран. х,у задають координати початкової вершини виведення тексту, str об’єкт типу CString, який містить текст для виведення. kx, ky – змінні коефіціентів перетворення; dXmash,dYmash- різниця мінімальних і максимальних координат; Xmash, Ymash – машинні координати; dXreal, dYreal - реальні координати; t – інтервал; xmax, xmin, ymax, ymin, xmin, xmax, ymin, ymax – мінімальні і максимальні значення функції; xc, yc – координати центру екрану; ТЕКСТ ПРОГРАМИ: #include "stdafx.h" #include "PKG lab_2.h" #include "ChildView.h" #include"math.h" #ifdef _DEBUG #define new DEBUG_NEW #endif CChildView::CChildView() { } CChildView::~CChildView() { } BEGIN_MESSAGE_MAP(CChildView, CWnd) ON_WM_PAINT() END_MESSAGE_MAP() BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) { if (!CWnd::PreCreateWindow(cs)) return FALSE; cs.dwExStyle |= WS_EX_CLIENTEDGE; cs.style &= ~WS_BORDER; cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, ::LoadCursor(NULL, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), return TRUE; } void CChildView::OnPaint() { CPaintDC dc(this); // контекст устройства для рисования double i, t, dXreal, dYreal, Kx, Ky, Xmash, Ymash, dXmash=900, dYmash=500, X0mash=640, Y0mash=400, Xmax=-10000, Xmin=10000, Ymax=-10000, Ymin=10000, h=0.5, X, Y; for (t=-100; t<=100; t=t+h) { X=90*cos(t)*sqrt(abs(cos(2*t))); Y=90*sin(t)*sqrt(abs(cos(2*t))); 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; dc.MoveTo (X0mash-720, Y0mash); dc.LineTo (X0mash+720, Y0mash); dc.MoveTo (X0mash+720, Y0mash); dc.LineTo (X0mash+715, Y0mash-5); dc.MoveTo (X0mash+720, Y0mash); dc.LineTo (X0mash+715, Y0mash+5); dc.MoveTo (X0mash, Y0mash-400); dc.LineTo (X0mash, Y0mash+400); dc.MoveTo (X0mash, Y0mash-400); dc.LineTo (X0mash-5, Y0mash-395); dc.MoveTo (X0mash, Y0mash-400); dc.LineTo (X0mash+5, Y0mash-395); t=-100; X=90*cos(t)*sqrt(abs(cos(2*t))); Y=90*sin(t)*sqrt(abs(cos(2*t))); Xmash=X0mash+X*Kx; Ymash=Y0mash-Y*Ky; dc.MoveTo (Xmash, Ymash); CPen red_pen; red_pen.CreatePen (PS_SOLID, 2, RGB (255, 0, 0)); dc.SelectObject(&red_pen); for (t=-100; t<=100; t=t+h) { X=90*cos(t)*sqrt(abs(cos(2*t))); Y=90*sin(t)*sqrt(abs(cos(2*t))); 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=-120; i<=120; i=i+20) { dc.MoveTo (X0mash+i*Kx, Y0mash-3); dc.LineTo (X0mash+i*Kx, Y0mash+3); } for (i=-120; i<=120; 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+700,Y0mash+10, Xx); const CString Yy("Y"); dc.TextOutW(X0mash-20,Y0mash-400, 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); const CString Y10("-60"); dc.TextOutW(X0mash+10,Y0mash+55*Ky, Y10); const CString Y11("-80"); dc.TextOutW(X0mash+10,Y0mash+75*Ky, Y11); } Результат програми / Висновок: під час лабораторної роботи я набув практичних навиків в складанні програм для побудови графіків.
Антиботан аватар за замовчуванням

14.12.2014 13:12-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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