Lab 2 GC Var14

download Lab 2 GC Var14

of 11

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: