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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 6.4.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. Тема Производные пиразола План- 1 Понятие о производных пиразола 2 Феназон Антипирин 3 Метамизол
2. Реферат- Банки, их виды и функции
3. Система управления персоналом на ЗАО Азовэлектросталь.html
4. на тему великие открытия генетики Работу выполнил Студент группы ТОБ 11 Киселев Михаил Введе
5. Задание Запроектировать подкрановую балку пролетом под два крана грузоподъемностью среднего режима раб
6. а4 Оценка идей4 Правила проведения мозгового штурма4 Этапы проведения мозгового штурма5 Этап 15 Эта
7. делают живые люди то их психология неизбежно накладывает свою печать на всю политическую жизнь общества
8. Жидкие кристаллы их практическое применение
9. тема представляет собой сложное взаимодействие объективного и субъективного стихийного и сознательного об
10. варіант 1. Недостатність зовнішнього дихання за обструктивним типом виникає внаслідок