Laboratoare grafică

Previzualizare laborator:

Extras din laborator:

Scopul lucrării: Obţinerea cunoştinţelor practice în sinteza figurilor şi suprafetelor în baza bibliotecii grafice a oricărui limbaj de programare (Pascal, C++, ori Java).

Consideraţii teoretice:

Orice lucru în regim grafic se începe cu iniţializarea modului grafic care se face cu ajutorul functiei InitGraph(GraphDriver,GraphMode) – funcţia stabileşte valorile implicite ale parametrilor de operare în mod grafic şi incarcă de pe disc în memorie modulul driver corespunzător primului parametru. Modul de lucru al driver-ului încarcat este specificat prin al doilea parametru, iar denumirea completă a căii unde se va cauta fişierul .BGI corespunzător este prezentată prin al treilea parametru. Închiderea modului se face cu : Closegraph – funcţia efectuiază revenirea în mod text , modului implicit de lucru a sistemului de afişare. Ea apelează funcţia graphfreemen pentru a elibera memoria ocupată de driver-ulgrafic, setul sau seturile de caractere utilizate de program precum şi zonele de memorie interne.

Funcţiile de desenare a liniilor şi suprafeţelor sînt:

Line(x1,y1,x2,y2) – functia afiseaza o linie intre punctele de coordonate (x1,y1) si (x2,y2), specificate ca parametri.

Rectangle(x1,y1,x2,y2) – funcţia afişează un dreptunghi specificat prin două vîrfuri diametral opuse: stînga sus si dreapta jos.

În biblioteca grafică există funcţii pentru desenarea următoarelor curbe conice: cerc, arc de cerc, elipsă şi arc de elipsă

Circle(x,y,r) – funcţia afişează un cerc avînd centrul de coordonate (x,y) şi raza r,specificate ca parametri. Raza se exprimă printr-un număr întreg.

Arc(x,y,ui,uf,r) – funcţia afişează un arc de cerc, între unghiul iniţial şi unghiul final sînt specificate ca parametri. Raza cercului şi coordonatele centrului x şi y sînt de asemenea parametri ai funcţiei. Unghiurile iniţial şi final se exprimă în grade, cuprinse între 0 şi 360 grade.

Ellipse(x,y,ui,uf,a,b) – funcţia afişează elipsa sau un arc de elipsă. Coordonatele centrului x şi y, semiaxele a şi b precum şi unghiurile iniţial ui şi respectiv uf sînt specificate ca parametri ai funcţiei.

Drawpoly(n,m) – funcţia dată desenează un poligon cu numărul de vîrfuri n şi coordonatele m.

Suprafaţa poligonală

Fillpoly – funcţia afişează o suprafată poliginală utilizind valorile curente ale atributelor de afişare ale liniilor pentru contur, şi valorile curente ale atributelor de afişare ale suprafeţelor pentru restul punctelor suprafeţei. Poligonul se specifică prin numărul de vîrfuri şi vectorul coordonatelor (x,y) ale vîrfurilor. În cazul în care coordonatele ultimului vîrf diferă de coordonatele primului vîrf poligonul este închis automat.

setfillstyle(n,m) – funcţia dată defineşte culoarea şi stilul în care va fi colorată figura

Suprafaţa circulară şi eliptică, sector de cerc şi de elipsă

sector(x,y,ui,uf,a,b) - funcţia desenează un sector de cerc sau de elipsă (depinte ce lungime le dăm rayelor). x,y – coordonatele centrului, unghiurile iniţial şi respectiv final; a,b - razele.

Textul programului:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include<fstream.h>

int main(void)

{

/* request auto detection */

int gdriver = DETECT, gmode, errorcode;

int xmax, ymax;

/* initialize graphics and local variables */

initgraph(&gdriver, &gmode, "e:TCbgi");

/* read result of initialization */

errorcode = graphresult();

/* an error occurred */

if (errorcode != grOk)

{

printf("Graphics error: %sn", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

setcolor(getmaxcolor());

xmax = getmaxx();

ymax = getmaxy();

/* desenam liniile si coloanele */

line(0, ymax/3, xmax, ymax/3);

line(0,2*ymax/3,xmax,2*ymax/3);

line(xmax/3,0,xmax/3,ymax);

line(2*xmax/3,0,2*xmax/3,ymax);

//cercul

circle(100, 75, 50);

//sector de cerc

setfillstyle(1,10);

pieslice(300, 75, 135, 230, 80);

//triunghi

setfillstyle(2,4);

int poly[10];

setcolor(15);

poly[0] = 450;

poly[1] = 100;

poly[2] = 500;

poly[3] = 50;

poly[4] = 600;

poly[5] = 100;

poly[6] = poly[0];

poly[7] = poly[1];

fillpoly(4,poly);

//desenarea poligonului de 12 laturi

int a[30];

a[0]=50; a[1]=300;

a[2]=50; a[3]=250;

a[4]=70; a[5]=250;

a[6]=70; a[7]=200;

a[8]=90; a[9]=200;

a[10]=90; a[11]=210;

a[12]=150; a[13]=220;

a[14]=150; a[15]=230;

a[16]=190; a[17]=240;

a[18]=190; a[19]=250;

a[20]=150; a[21]=270;

a[22]=110; a[23]=310;

a[24]=a[0]; a[25]=a[1];

drawpoly(13,a);

//dreptunghi

setfillstyle(1,2);

bar3d(250,200,350,300,0,1);

//linia

setcolor(5);

line(450,250,630,250);

setcolor(15);

//elipsa

ellipse(100, 390,0,360,

75, 30);

//paralelipiped

setfillstyle(2,2);

bar3d(xmax/2, ymax-50, xmax/2+70,

ymax-100, 10, 1);

//sector de elipsa

sector(540, 400, 0, 180, 100, 50);

outtextxy(430, 280, "Lucrare de laborator nr.1");

outtextxy(480, 300, "Tirsina Sergiu")

Observații:

Universitatea Tehnică a Moldovei

Tehnologii Informaţionale

Download gratuit

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

Structură de fișiere:
  • lab_4.doc
  • Laborator 1.doc
  • Laborator 2.doc
  • Laborator_3.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
8/10 (1 voturi)
Nr fișiere:
4 fisiere
Pagini (total):
21 pagini
Imagini extrase:
21 imagini
Nr cuvinte:
3 510 cuvinte
Nr caractere:
24 446 caractere
Marime:
277.93KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Grafică Computerizată
Predat:
la facultate
Materie:
Grafică Computerizată
Profesorului:
Plotnic C.
Sus!