Grafică pe calculator

Previzualizare laborator:

Extras din laborator:

Condiţia: Să se scrie un program MFC de tipul single document care va desena în fereastra aplicaţiei graficul funcţiei y = cos(x) şi va înscrie date în 2 fişiere.

Primul fişier va conţine:

- valoarea argumentului

- valoarea funcţiei standarte în punctul stabilit

- valoarea funcţiei proprii în acelaşi punct

- valoarea absolută a diferenţei dintre valoarea funcţiei standarte şi a funcţiei proprii

- precizia

Al doilea fişier va conţine:

- valoarea argumentului

- valoarea funcţiei prorii in punctul stabilit

Funcţia proprie va fi calculată cu ajutorul seriei:

Codul programului:

GraficaLabView.cpp

#include "stdafx.h"

#include "GraficaLab1.h"

#include "GraficaLab1Doc.h"

#include "GraficaLab1View.h"

#include <cmath>

#include <fstream>

#include <iostream>

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

using namespace std;

double fact(int n)

{

double factorial = 1;

for(int i = 1; i <= n; i++)

{

factorial *= i;

}

return factorial;

}

double MyCos(double x, double E)

{

double value = 0, term_serie;

int k = 0;

do

{

term_serie = pow(-1.0, k) * pow(x, 2 * k) / fact(2 * k);

value += term_serie;

k++;

}

while(fabs(term_serie) > E);

return value;

}

void CGraficaLab1View::OnDraw(CDC* pDC)

{

CGraficaLab1Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc)

return;

else

{

CRect RClient;

GetClientRect(&RClient);

int nrseg = 100;

double E = 0.0001, scale = 60, a = (-RClient.Width() / 2) / scale, b = (RClient.Width() / 2) / scale, step = (b - a) / nrseg;

double x,y;

double ah = (-RClient.Height() / 2) / scale, bh = (RClient.Height() / 2) / scale;

CPen pen_axis(PS_SOLID, 2, RGB(0, 0, 255));

CPen pen_cos(PS_SOLID, 1, RGB(255, 0, 0));

CPen pen_divisions(PS_SOLID, 2, RGB(0, 255, 0));

CPen *current_pen = pDC->SelectObject(&pen_axis);

pDC->MoveTo(0, RClient.CenterPoint().y);

pDC->LineTo(RClient.Width() - 1, RClient.CenterPoint().y);

pDC->MoveTo(RClient.CenterPoint().x, 0);

pDC->LineTo(RClient.CenterPoint().x, RClient.Height() - 1);

pDC->SelectObject(pen_divisions);

for(x = ceil(a); x <= b; ++x)

{

pDC->MoveTo(RClient.CenterPoint().x + (int)(x * scale), RClient.CenterPoint().y - 3);

pDC->LineTo(RClient.CenterPoint().x + (int)(x * scale), RClient.CenterPoint().y + 3);

}

for(y = ceil(ah); y <= bh; ++y)

{

pDC->MoveTo(RClient.CenterPoint().x - 3, RClient.CenterPoint().y - (int)(y * scale));

pDC->LineTo(RClient.CenterPoint().x + 3, RClient.CenterPoint().y - (int)(y * scale));

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Grafica pe Calculator.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
4/10 (2 voturi)
Nr fișiere:
1 fisier
Pagini (total):
4 pagini
Imagini extrase:
4 imagini
Nr cuvinte:
558 cuvinte
Nr caractere:
3 871 caractere
Marime:
51.00KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Calculatoare
Predat:
la facultate
Materie:
Calculatoare
Sus!