У вас вопросы?
У нас ответы:) SamZan.net

з курсу Програмування комп~ютерної графіки ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ В СЕРЕДОВИЩІ MICROSOFT

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.2.2025

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»

Лабораторна робота №2

з курсу        

«Програмування компютерної графіки»

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

В СЕРЕДОВИЩІ MICROSOFT VISUAL STUDIO C++ 2008

Підготував ст. гр. СІ-21

Белов Ю. Г.

Прийняв

Іванюк О.О

Львів-2012

ЗАВДАННЯ

Варіант №2

Блок-схема

Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі, та їх пояснення

rect – структура, в якій записані розміри екрана.

GetClientRect(&rect) – команда для запису розмірів екрана в структуру rect.

str[192] – массив символів.

kx,ky – коефініент перетворення по осях x та y відповідно.

x0,y0 – мінімальне значення графіка в машинних координатах по осях x та y відповідно.

x – змінна, з інтервалом зміни від x1 до x2 з кроком h.

yзначення функції.

lx,lyдовжина осі по x та y відповідно.

sx,syціле значення від розбиття осі на 10 частин по x та y відповідно.

tx,ty – змінна, значення якої відповідає довжині додатної осі по x та відємної по y відповідно.

xc,yc – центр графіка в точці x=0 по осях x та y відповідно.

xx,yy – змінна, яка відповідає за розбиття графіка на 10 частин по осях x та y відповідно.

t – тимчасова змінна.

xmax,xmin,ymax,ymin – мінімальне та максимальне значення функції по осях x та y відповідно.

txp,txm,typ,tym – змінні, які визначають положення тексту розмітки осей у додатному та від’мному напрямках x та y відповідно.

rect.bottom,rect.right – нижня та права сторона вікна, відповідає за розміри клієнтського вікна.

rect.top,rect.left – верхня та ліва сторона вікна, рівна 0.

Остаточно відлагоджений текст програми відповідно до отриманого завдання

// ChildView.cpp : implementation of the CChildView class

//

#include "stdafx.h"

#include "Lab_02.h"

#include "ChildView.h"

#include "math.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CChildView

CChildView::CChildView()

{

}

CChildView::~CChildView()

{

}

BEGIN_MESSAGE_MAP(CChildView, CWnd)

ON_WM_PAINT()

END_MESSAGE_MAP()

// CChildView message handlers

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), NULL);

 return TRUE;

}

void CChildView::OnPaint()

{

CPaintDC dc(this);

 wchar_t str[192];

 double kx,ky,x0,y0,x,y,lx,ly,sx,sy,xc,yc,tx,ty,xx,yy,t;

 double xmax=0,xmin=0,ymax=0,ymin=0,txp=0,txm=0,typ=0,tym=0;

 double x1=0,x2=16,h=0.1;

 

RECT rect;

GetClientRect(&rect);

 

 //vuzna4ennya xmax,xmin,ymax,ymin

 for(x=x1;x<=x2;x=x+h)

{

 y=pow(exp(x),1./8.)*sin(x/3);

 if(ymin>-y)

 {

  ymin=-y;

 }

 else if(ymax<-y)

 {

  ymax=-y;

 }

 if(xmin>x)

 {

  xmin=x;

 }

 else if(xmax<x)

 {

  xmax=x;

 }

}

 //znahodzhennya znachennja funkcii v tochci x=0

x=0;

y=pow(exp(x),1./8.)*sin(x/3);

 //znahodzhennya koeficientiv i centra realjnuh koordunat

kx=(rect.right-50)/(xmax-xmin);

ky=(rect.bottom-50)/(ymax-ymin);

x0=xmin*kx-25;

y0=ymin*ky-25;

xc=x*kx-x0;

yc=-y*ky-y0;

 

 //pobudova osej

dc.MoveTo(xc,rect.top+10);

dc.LineTo(xc,rect.bottom-10);

dc.MoveTo(rect.left+10,yc);

dc.LineTo(rect.right-10,yc);

dc.MoveTo(xc-5,rect.top+15);

dc.LineTo(xc,rect.top+10);

dc.LineTo(xc+5,rect.top+15);

dc.MoveTo(rect.right-15,yc-5);

dc.LineTo(rect.right-10,yc);

dc.LineTo(rect.right-15,yc+5);

 //poznachaemo osi

 const CString Y("Y"),X("X"),O("0");

dc.TextOutW(xc-20,rect.top+5,Y);

dc.TextOutW(rect.right-20,yc+5,X);

dc.TextOutW(xc+5,yc+5,O);

lx=(rect.right-10)-(rect.left+10);

ly=(rect.bottom-10)-(rect.top+10);

sx=floor(lx/10);

sy=floor(ly/10);

tx=rect.right-fabs(x0);

ty=rect.bottom-fabs(y0);

xx=(xmax-xmin)/10;

yy=(ymax-ymin)/10;

 //visj x

 for(t=sx;t<=-x0-30;t=t+sx)

{

 txm=txm-xx;

 dc.MoveTo(xc-t,yc-5);

 dc.LineTo(xc-t,yc+5);

 swprintf_s (str,50,L"%.1f",txm);

 dc.TextOut(xc-t-10,yc+5,str);

}

 for(t=sx;t<=tx-30;t=t+sx)

{

 txp=txp+xx;

 dc.MoveTo(xc+t,yc-5);

 dc.LineTo(xc+t,yc+5);

 swprintf_s (str,50,L"%.1f",txp);

 dc.TextOut(xc+t-10,yc+5,str);

}

 //visj y

 for(t=sy;t<=-y0-15;t=t+sy)

{

 typ=typ+yy;

 dc.MoveTo(xc-5,yc-t);

 dc.LineTo(xc+5,yc-t);

 swprintf_s (str,50,L"%.1f",typ);

 dc.TextOut(xc+10,yc-t-10,str);

}

 for(t=sy;t<=ty-15;t=t+sy)

{

 tym=tym-yy;

 dc.MoveTo(xc-5,yc+t);

 dc.LineTo(xc+5,yc+t);

 swprintf_s (str,50,L"%.1f",tym);

 dc.TextOut(xc+10,yc+t-10,str);

}

 //pobudova grafika

 for(x=x1;x<=x2;x=x+h)

{

 y=pow(exp(x),1./8.)*sin(x/3);

 if(x==x1)

 {

  dc.MoveTo(x*kx-x0,-y*ky-y0);

 }

 dc.LineTo(x*kx-x0,-y*ky-y0);

}

 

}

Результати виконання програми




1. САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ имени академика С
2. Кинетика замедленной флуоресценции органических молекул в Н-парафинах при 77 К и ее математическая модель
3. Малый бизнес
4. Notes123 Джон Гришем Рождество с неудачниками Глава 1 Зал ожидания был битком набит усталыми путе
5. Духовно-нравственное воспитание детей средствами этнокультурного образования
6. Методические рекомендации по исполнению мнемонического практикума по дисциплине Гражданское право Для
7. Гражданско-правовые способы защиты права собственности
8. Международный институт бизнесобразования Кафедра журналистики и филологии Вопросы для подготовки к з
9. Туристические и гостиничные услуги бухгалтерский учет и налогообложение
10. Реферат- Почему я должен быть моральным