Documente Academic
Documente Profesional
Documente Cultură
RAPORT
Lucrare de laborator Nr.1
la Grafica pe Calculator
A efectuat:
st. gr. SI-151 Cucu Dumitru
A verificat:
lector superior Plotnic Constantin
Chiinu 2017
Tema: SINTEZAREA FIGURILOR GRAFICE
Sarcina lucrrii:
1. De a elabora un program pentru sintezarea i afiarea figurilor grafice conform variantelor tabelul 1 i 2.
2. De a afia figuri sintezate n diferite pori de vizualizare.
3. De a utiliza operaiuni de salvare i restaurare a imaginilor n/din fiiere
Varianta 9
8,1,6,2,5,3,4,7,9
Tabelul 1. Figuri grafice
Nr. Denumirea figurii
1 Linia
2 Triunghi
3 Dreptungi
4 Poligon numrul de vrfuri este egal
cu nr.de ordin al studentului n registru
+ 4
5 Paralelepiped
6 Cerc
7 Elipsa
8 Sector de cerc
9 Sector de elips
1. 1,2,3,4,5,6,7,8,9
2. 3,1,5,4,8,6,7,9,2
3. 2,5,4,3,9,7,6,8,1
4. 4,1,3,8,7,6,9,2,5
5. 7,3,1,2,8,4,9,5,6
6. 5,2,4,6,8,3,7,9,1
7. 1,3,5,7,9,2,4,6,8
8. 6,8,2,4,3,1,7,5,9
9. 8,1,6,2,5,3,4,7,9
10. 9,2,4,3,5,7,6,8,1
11. 1,3,5,7,9,2,4,6,8
12. 2,4,6,8,1,3,5,7,9
13. 3,4,2,1,9,6,5,8,7
14. 7,4,2,1,9,6,5,8,3
15. 1,2,4,3,5,7,6,8,9
Figuri subliniate se coloreaz
Listingul programului
#include <graphics.h>
#include <conio.h>
#include <fstream>
using namespace std;
void salvare() {
int i, j;
ofstream f;
f.open("1.png", ios::out);
for (i = 0; i<640; i++)
for (j = 0; j<480; j++)
f << getpixel(i, j) << " ";
f.close();
}
void citire() {
int i, j;
unsigned int p;
ifstream r;
r.open("1.png", ios::in);
for (i = 0; i<640; i++)
for (j = 0; j<480; j++) {
r >> p;
putpixel(i, j, p);
}
r.close();
}
int main(void)
{
int driver, mode;
char c;
int triunghi[8] = { 60,270, 110,180, 160,270, 60,270 };
int polinom[28] = { 20,430, 20,400, 35,360, 50,400, 65,360, 80,400, 95,360, 110,400, 125,360, 140,400, 155,360,
170,400, 170,430, 20,430 };
driver = DETECT;
initgraph(&driver, &mode, "c:\\bc5\\bgi");
citire();
getch();
line(0, 160, 650, 160);
line(0, 320, 650, 320);
line(216, 0, 216, 500);
line(432, 0, 432, 500);
setfillstyle(XHATCH_FILL,1);
setcolor (15);
circle(540 , 80, 50);//cerc
pieslice(120, 80, 50, 260, 50);//sector de cerc
fillpoly(4, triunghi);//triunghi
bar3d(270, 200, 350, 270, 20, 20);//paralelipiped
setcolor (15);
rectangle(470, 205, 600, 270);//dreptunghi
setcolor (15);
drawpoly(14, polinom);//polinom
fillellipse(320, 380, 80, 40);// elipsa
sector(530, 380, 0, 270, 80, 40);//sector de elipsa
setcolor (1);
line(250, 70, 380, 70);//linie
setcolor(15);
floodfill(540,80,15);
circle(540,80,50);//cerc
salvare();
getch();
return 0;
}
Datele obinute:
Concluzie:
Pentru realizarea sarcinii acestei lucrri de laborator am avut ca scop utilizarea a mai
multor metode de gestionare i folosire a variabilelor, i anume: variabile globale care pot fi
utilizate i modificate oriunde n program, variabile dinamice care se creeaz pe parcursul
rulrii programului i nu la nceputul funciei ca de obicei; acestea pot fi create i distruse pe
parcursul rulrii programului, astfel economisind memoria i nu la nceputul i la sfr itul
acestuia, i transmiterea variabilelor prin adrese ceea ce presupune accesul direct la adresa
unei variabile i modificarea nemijlocit a acesteia.