0% au considerat acest document util (0 voturi)
4 vizualizări10 pagini

Main

Lucrarea de licență prezintă o aplicație de animație 3D, detaliind elementele care determină animația și soluția propusă. Se discută despre variabilele necesare pentru controlul rotației cuburilor și transformările aplicate acestora. Concluziile subliniază importanța utilizării variabilelor statice pentru păstrarea valorilor între iterații.

Încărcat de

Raluu Ilincq
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
4 vizualizări10 pagini

Main

Lucrarea de licență prezintă o aplicație de animație 3D, detaliind elementele care determină animația și soluția propusă. Se discută despre variabilele necesare pentru controlul rotației cuburilor și transformările aplicate acestora. Concluziile subliniază importanța utilizării variabilelor statice pentru păstrarea valorilor între iterații.

Încărcat de

Raluu Ilincq
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Ministerul Educaţiei

Universitatea ”OVIDIUS” Constanţa


Facultatea de Matematică şi Informatică
Specializarea Informatică

Titlul extins al lucrării de absolvire


Lucrare de licenţă

Coordonator ştiinţific:
Lect. univ. dr. Nume Prenume Coordonator Principal

Absolvent:
Nume prenume absolvent

Constanţa
2021
Cuprins

Cuprins i

Lista Figurilor 1

1 Motivaţie 2

1.1 Secţiune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.1.1 subsecţiune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Elementele care determină animaţia . . . . . . . . . . . . . . . . . . . . . 3

2 Soluţia propusă 5

3 Prezentarea aplicaţiei 6

4 Concluzii 7

Referinţe bibliografice 8

i
Lista Figurilor

1.1 Explicaţie figură. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Prima noastră animaţie! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1
Capitolul 1

Motivaţie

1.1 Secţiune

1.1.1 subsecţiune

Text demonstrativ pentru diacritice:

ı̂ Î â Â ş Ş ţ Ţ ă Ă

Demo figura 1.1 şi o citare din fişierul [Link] [1], [2].

Figura 1.1 : Explicaţie figură.

1
Proiectul s-a derulat ı̂n cadrul şi cu sprijinul Laboratorului de CErcetare ı̂n domeniul Realităţii Virtuale şi
Augmentate (CERVA). Pentru detalii vizitaţi: [Link]

2
Motivaţie Elementele care determină animaţia

Figura 1.2 : Prima noastră animaţie!

1.2 Elementele care determină animaţia


În primul rând ne vor trebui câteva variabile care să conţină deplasarea până ı̂n momentul
curent.
static float axisRot = 0.0f;
static float globRotR = 0.0f;
static float globRotG = 120.0f;
static float globRotB = 240.0f;

Astfel avem o variabilă ce reţine rotaţia ı̂n jurul axei proprii, axisRot, ı̂mpreună cu alte 3
variabile ce reţin rotaţiile fiecărui cub ı̂n jurul originii (globRotR, globRotG, globRotB).
Arbitrar, am atribuit un caracter static acestor variabile; acest lucru face ca variabilele
marcate cu static să ı̂şi păstreze valorile de la o iteraţie la alta. Acelaşi efect se putea
obţine şi cu variabile globale. Urmează afişarea celor 3 cuburi:
glColor3f(1.0f, 0.0f, 0.0f);
glPushMatrix();
glTranslatef(0.0f,0.0f,-20); //deplasat pe axele x, y, z
glRotatef(globRotR, 0,0,1);
glTranslatef(5.0f,0.0f,0.0f);
glRotatef(axisRot,0,1,0); //rotit pe axa Y
glutSolidCube(2); //cub cu latura 2
glPopMatrix();

glColor3f(0.0f, 1.0f, 0.0f);


glPushMatrix();
glTranslatef(0.0f,0.0f,-20); //deplasat pe axele x, y, z
glRotatef(globRotG, 0,0,1);
glTranslatef(5.0f,0.0f,0.0f);
glRotatef(axisRot,0,1,0); //rotit pe axa Y
glutSolidCube(2); //cub cu latura 2
glPopMatrix();

glColor3f(0.0f, 0.0f, 1.0f);


glPushMatrix();

3
Motivaţie Elementele care determină animaţia

glTranslatef(0.0f,0.0f,-20); //deplasat pe axele x, y, z


glRotatef(globRotB, 0,0,1);
glTranslatef(5.0f,0.0f,0.0f);
glRotatef(axisRot,0,1,0); //rotit pe axa Y
glutSolidCube(2); //cub cu latura 2
glPopMatrix();

Este important de observat modul ı̂n care sunt aplicate transformările pe fiecare cub ı̂n parte:

1. prima dată cubul este deplasat cu −20 pe axa Oz astfel ı̂ncât să fie vizibil,

2. apoi se roteşte cubul cu un unghi,

3. datorită rotaţiei, translaţia aplicată, +5 pe axa Ox, va fi conformă orientării obiectului,

4. ı̂nainte de a fi afişat cubul se aplică şi o rotaţie ı̂n jurul axei sale.

După afişarea celor 3 cuburi, urmează pasul de modificare a gradelor de rotaţie folosite.
axisRot += 1.0f; axisRot=fmod(axisRot, 360.0f);
globRotR += 0.5f; globRotR=fmod(globRotR, 360.0f);
globRotG += 0.5f; globRotG=fmod(globRotG, 360.0f);
globRotB += 0.5f; globRotB=fmod(globRotB, 360.0f);

Fiind variabile statice, acestea ı̂şi păstrează valorile de la o iteraţie la alta. Mai exact, aplicând
o incrementare, axisRot += 1.0f, obţinem o nouă rotaţie care diferă de vechea rotaţie
cu un grad.

Funcţia fmod() este echivalentul operatorului %, dar acţionează asupra variabilelor ı̂n
virgulă flotantă. Mai exact, fmod(a,b) returnează restul, ı̂n virgulă flotantă, a ı̂mpărţirii
lui a la b. În acest exemplu ne ajută să păstrăm variabilele ı̂n intervalul [0, 360) grade.

4
Capitolul 2

Soluţia propusă

5
Capitolul 3

Prezentarea aplicaţiei

6
Capitolul 4

Concluzii

7
Referinţe bibliografice

[1] [Link]. Modelare şi tehnci de programare ı̂n realitatea virtuală. In Conferinţa
Naţională de Învăţământ Virtual, pages 33–38, 2005.

[2] Nicola is the great white. Dynamics and unification of animation control. The Visual
Computer, 4(5):22–31, 1989.

S-ar putea să vă placă și