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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 30.6.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. Тема 8. Инвестиционная безопасность в сиетеме экономической безопасности государства
3. Розвиток соціальної педагогіки в соціокультурному контексті
4. О страховых взносах в Пенсионный фонд Российской Федерации Фонд социального страхования Российской Федера
5. Нефроптозды~ III д~режесі кезінде астауша нешінші бел омырт~а де~гейінде орналасады 1
6. Модуль 8 Философское осмысление глобальных проблем современности иметь представление о сложности тех п.html
7. Тема урока- Баскетбол
8. Особливості розмноження птахів різних видів на прикладі гусака сірого, журавля та великого строкатого дятла
9. Статья 1. Сфера действия настоящего Федерального закона Настоящий Федеральный закон регулирует отношени
10. варианта использования системы