Facultatea Calculatoare Informatic i Microelectronic
Referat La disciplina: GAC Lucrare de Laborator Nr.3
Tema: TRANSFORMRI GEOMETRICE 2D A IMAGINILOR
A afectuat:
A verificat
Chiinu 2014 Sarcina Elaborarea programului de rotire, scalare i deplasare a imaginilor n plan i n spaiu Extragei la ecran un triunghi de culoarea R. Extragei la ecran un ptrat de culoarea S. ndeplinii transformarea tuturor punctelor de culoarea S n conformitate cu variant 3. Punctul ce se deplaseaz se recoloreaz n culoarea R. Pentru determinarea culorii punctului folosii procedura GetPixel.
var. rotirea scalare deplasarea 3 45 x*1.6 x+20, y+40
Descrierea teoretic
Transformare de vizualizare 2D Este transformarea care trebuie sa fie aplicata coordonatelor oricrei reprezentri grafice descrise intr-un sistem de coordonate carteziene diferit de cel ataat dispozitivului de vizualizare. Pentru exprimarea sa matematica se definesc doua dreptunghiuri cu laturile paralele cu axele sistemului de coordonate: unul n sistemul de coordonate n care este descrisa reprezentarea grafica, celalalt n sistemul de coordonate al dispozitivului de afiare (de exemplu, al ecranului). Cele doua dreptunghiuri sunt numite "fereastra", respectiv "poarta de vizualizare" sau pe scurt "poarta". Transformarea de vizualizare 2D, numita i transformarea fereastra-poarta este definita astfel incit poziia relaiva a unui punct (xf,yf) n fereastra sa fie aceeai cu poziia relaiva a punctului (xp, yp) n poarta, unde (xp, yp) este punctul obinut prin transformarea lui (xf,yf). Din punct de vedere matematic transformarea este definita astfel: y y f p x x f p t *s y y t *s x x
unde s x i s y sunt factorii de scalare ai transformrii, care se calculeaz n funcie de mrimea ferestrei i a porii; t x i t y este translaia presupusa de transformare, determinata de poziiile celor doua dreptunghiuri, fereastra i poarta, n sistemele de coordonate la care sunt raportate. Formula transformrii se modifica pentru a se tine cont de faptul ca axa OY a ecranului este orientat n jos. De asemenea, daca pentru asigurarea decuprii la frontiera porii se folosete funcia setviewport, formula se corecteaz tiind ca toate coordonatele transmise funciilor de afiare sunt considerate relative la originea porii de vizualizare.
for(x=0;x<640;x++) // Ciclu de recolorare a figurilor. for(y=0;y<480;y++) { color=getpixel(x,y); if(color==RED) putpixel(x,y,BLUE); if(color==BLUE) putpixel(x,y,RED); } getch();
closegraph(); //inchiderea driverul GRAPHICS !!!
return 0; }
Rezultate obtinute
Concluzie:
Efectuind lucrarea data am fcut cunotin cu metodele i algoritmii de reprezentare grafic a figurilor 2D. In loc de figure 2D am utilizat patrat si triunghi. Am realizat niste actiuni asupra lor. Adica: rotirea, scalare si deplasarea conform variantul meu 3. Lucrarea data am facut cu ajutorul functii, pe care le-am chemat din functia principala: main(). Inca cu ajutorul multor functii primitive: line(x1,y1,x2,y2), setcolor(c), outtextxy(x,y,) si alte