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

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

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

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

Рік:
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:53

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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