Lab 2 GC Var14
-
Upload
cazacliuion -
Category
Documents
-
view
215 -
download
0
Transcript of Lab 2 GC Var14
-
8/18/2019 Lab 2 GC Var14
1/11
Ministerul Educaţiei al Republicii Moldova Universitatea Tehnică a Moldovei
Calculatoare Informatică si Microelectronică Catedra Automatica i Tehnologii Informa ionaleș ț
Raport LUCRAREA DE LABORATOR 2
la disciplina
Grafica pe calculator
Tema: „Transformări geometrice 2D”
A efectuat: gr. MI!"!
Ca#ac$iu Ion
A %erificat: conf. uni%.
&. Moraru
C'i(inau 2)!*
&arianta !+Transformări ,eometrice 2D
http://www.utm.md/ro/facultatea-calculatoare-informatica-si-microelectronica/catedra-stiinte-socio-umanehttp://www.utm.md/ro/facultatea-calculatoare-informatica-si-microelectronica/catedra-stiinte-socio-umanehttp://www.utm.md/ro/facultatea-calculatoare-informatica-si-microelectronica/catedra-stiinte-socio-umane
-
8/18/2019 Lab 2 GC Var14
2/11
Scopul lucrării: Realizarea practică a transformărilor geometrice bidimensionale
Sarcina lucrării:
! Elabora i un program pentru rotire" scalare i transla ie a obiectelor #n plan!ț ș ț
! a$ %esena i un triunghi de culoarea R i un pătrat de culoarea &! Alege i dimensiuni iț ș ț ș pozi ii convenabile pentru vizualizare!ț
! b$ Realiza i transformarea tuturor pi'elilor de culoarea & #n conformitate cu variantele dințtabelul (! )i'elii transforma i se vor colora #n culoarea R! )entru determinarea culoriiț
pi'elilor folosi i primitiva grafică gț etpixel iar pentru a efectua transformările utiliza ițe'clusiv primitiva putpixel sau una echivalentă * i nu o func ie de biblioteca$! Rotirea se vaș țefectua #n +urul unui punct la alegerea studentului care va trebui men ionat #n raport!ț
Tabelul (! ,ariantele de #ndeplinire a lucrării
(! &ă se rotească un pătrat necolorat *construit din linii$ #n +urul centrului ecranului! &e vor
-
8/18/2019 Lab 2 GC Var14
3/11
efectua n rotatii succesive *#n sensul trigonometric$ cu pasul 2 /nπ ! Alegeti orice valoare n>10.
E'emplu de #ndeplinire a rotatiei pentru n=10
-! &e consideră originea sistemului de coordonate #n centrul ecranului! &ă se deseneze un pătrat*centrul pătratului diferit de centrul ecranului$ si apoi să se realizeze oglindirea lui faţă dedreapta y = x .i y = − x !
/! &e consideră un avion descris #ntr0un sistem de coordonate propriu prin1 A*0-2"2$" 3*04"-2$" C*04"/2$" %*2"/4$" E*4"/2$" 5*4"-2$" 6*-2"2$" 7*4"(2$" I*4"0-2$" 8*4"0/2$" 9*2"0-4$" :*04"0/2$"M*04"0-2$" ;*04"(2$! &ă se rotească avionul #n +urul centrului ecranului #n sens trigonometric!
Avionul va fi initial orientat la dreapta si deplasat faţă de centru cu 42 pi'eli #n +os! )entruafisarea avionului #ntr0o nouă pozitie" se utilizează un timer cu a+utorul căruia la un anumitinterval de timp se actualizează suprafata de desenare! %acă e necesar efectuati o scalare pentruo reprezentare convenabila a deplasării avionului pe ecran! Alegeti pasul deplasării si duratatimer0ului *valorile lor ma'ime$ pentru care deplasarea avionului pe ecran devine fluidă simentionati acesti parametri #n raport!
Listingu$ -rogramu$ui:
#include
#include
#include
#include
# define PI 3.14159265
# define !"$%a& %%int&%a'(.5&&# define pt)%)& ) ' 32(
# define pt*%*& 24( + *
# define t)%)& 32( + )
-
8/18/2019 Lab 2 GC Var14
4/11
# define t*%*& 24( + *
int ,idth - 6((
int height - 6((
/oid a/ion%int )f0 int *f0 int fi0 int &
int ne,ale,idthheight
int )0 *
int ne,)0 ne,*
for %) - 12( ) < 47( )''&
for %* - 12( * < 47( *''&
ne,ale)* - getpi)el%)0 *&
clearde/ice%&
for %) - 12( ) < 47( )''&
for %* - 12( * < 47( *''&
if % ne,ale)* -- &
ne,) - %int&round%%)8cos%fi8 PI 17(.(&& + %*8sin%fi8 PI
17(.(&& ' )f + %)f8cos%fi8 PI 17(.(&& ' %*f8sin%fi8 PI 17(.(&&& ne,* - %int&round%%)8sin%fi8 PI 17(.(&& ' %*8cos%fi8 PI
17(.(&& ' *f + %)f8sin%fi8 PI 17(.(&& + %*f8cos%fi8 PI 17(.(&&&
putpi)el%ne,)0 ne,*0 &
ne,ale)* - :;=
?
?
/oid $ra,=ordinates%&
setlinest*le%10 (0 1&
line%32(0(032(064(&
line%(024(064(024(&
setlinest*le%(0 (0 1&?
int main%&
int gd-$@@=0gm
int ang0c0A-(0)10*10sh0sh)0sh*0c10lung0 lat0 n - 1(0 ne,)0 ne,*0 )f -
3((0 *f - 3((
float s)0 s*
int patrat2(0triunghi1(0choice0i0td)0td*0shchoice
int )0*
initgraph%Bgd0Bgm0C=DEE=EE:FIC&
$ra,=ordinates%&
Patrat
patrat( - pt)%2(&
patrat1 - pt*%2(&
patrat2 - pt)%G(&
patrat3 - pt*%2(&
patrat4 - pt)%G(&
patrat5 - pt*%G(&
patrat6 - pt)%2(&
patratG - pt*%G(&
patrat7 - patrat(
patrat9 - patrat1
setfillst*le%10 2&
fillpol*%50patrat&
riunghi
triunghi( - t)%2(&
-
8/18/2019 Lab 2 GC Var14
5/11
triunghi1 - t*%2(&
triunghi2 - t)%G(&
triunghi3 - t*%2(&
triunghi4 - t)%G(&
triunghi5 - t*%G(&
triunghi6 - triunghi(
triunghiG - triunghi1
setfillst*le%10 1&
fillpol*%40 triunghi&
/ion
printf%Cceste 2 figuri se /or folosi pentru transformari 2$Enastati
pentru a continua...C&
getch%&
closegraph%&
do
printf%CEn8888888888888888H@"888888888888888EnC&
printf%CEn1.ranslareEn2.otireEn3.calareEn4.!glindireEn5./ionEnEn6.IesireC
&
printf%CEnlegerea este D C&
scanf%CJdC0Bchoice&
s,itch%choice&
case 1D
initgraph%Bgd0Bgm0CcDEEturoc3EEgiC&
$ra,=ordinates%&
dra,pol*%50patrat&
printf%CEnIntroduceti /ectorul de translare %t)0t*&D
C&
scanf%CJdJdC0Btd)0Btd*&
for%i-(i
-
8/18/2019 Lab 2 GC Var14
6/11
c-getch%&
? ,hile %cN-KErK&
lung - 1((
lat - 1((
n - 15
fi - 36(.(n
i - (
,hile %i
-
8/18/2019 Lab 2 GC Var14
7/11
patrat7-patrat(
patrat9-patrat1
setfillst*le%10 1&
fillpol*%50patrat&
getch%&
reaA
case 2D
for%A-(A
-
8/18/2019 Lab 2 GC Var14
8/11
Anexă :
1.
2.
-
8/18/2019 Lab 2 GC Var14
9/11
3.
4.
5.
-
8/18/2019 Lab 2 GC Var14
10/11
6.
7.
-
8/18/2019 Lab 2 GC Var14
11/11
Concluzie: