Referat Tehnici De Animatie
Mai jos puteti citi fragmente din
Referat Tehnici De Animatie si de asemenea puteti face
Download Referat Tehnici de animatieCiteste fragmente din Referat Tehnici De Animatie
Tehnici de animaţie
Ne propunem să răspundem la următoarea întrebare: cum facem o
figură să se mişte pe ecran? Pentru rezolvarea acestei probleme
există mai multe tehnici care vor fi prezentate în continuare, dar
toate au acelaşi principiu de funcţionare şi anume:
se desenează figura:
se aşteaptă o perioadă de timp;
se şterge figura şi se deplasează într-o altă poziţie.
Pentru ca figura să pară că se mişcă în mod real, un rol important
îl are timpul de aşteptare (timpul în care figura rămâne pe ecran
până a se şterge). Acesta se reglează de la caz la caz cu ajutorul
procedurii Delay.
În principal, există trei tehnici de realizare a animaţiei. Ele
diferă prin procedurile pe care le utilizează şi prin viteza de
execuţie. Pentru exemplificarea lor vom folosi o singură problemă şi
anume de a mişca un pătrat pe orizontală.
Tehnica 1
Operaţiile de desenare şi ştergere a figurii se fac cu ajutorul
procedurii SetWriteMode, pe care o vom prezenta în continuare.
Forma generală a acestei proceduri este SetWriteMode(valoare
întreagă). Vom folosi această procedură cu un singur parametru şi
anume XorPut (valoarea 1 predefinită în Unit-ul Graph). În concluzie,
vom pune SetWriteMode(XorPut).
După apelul acestei proceduri procedăm astfel:
apelăm o procedură care desenează o figură (aceasta va fi vizibilă
pe ecran);
aşteptăm o perioadă de timp;
apelăm din nou procedura care realizează desenul, exact in aceeaşi
poziţie (la acest apel desenul va dispărea, pentru că, de fapt,
desenul se realizează acum utilizând culoarea fondului);
apelăm procedura care realizează desenul într-o altă poziţie
(acesta va deveni vizibil, pentru că se realizează utilizând culoarea
curentă);
aşteptăm o perioadă de timp;
procedeul se repetă până când figura a ajuns în poziţia dorită.
Tehnica 2
Această tehnică de animaţie este superioară primei tehnici,
datorită faptului că este mai rapidă operaţia de aducere din memorie
pe ecran a unei imagini, decât desenarea ei. Acest fapt constituie un
mare avantaj în cazul imaginilor complexe.
Pentru a înţelege această tehnică, trebuie să prezentăm în
prealabil câteva proceduri.
Orice imagine care se află pe ecran poate fi salvată în memoria
internă. Există posibilitatea ca anumite informaţii (cum ar fi cele
care permit vizualizarea unei imagini) să fie salvate în memoria
internă, alocând spaţiul necesar pentru aceasta în timpul execuţiei
programului. O astfel de alocare a memoriei poartă numele de alocare
dinamică şi se va studia în detaliu în clasa a zecea, dar pentru
această tehnică de animaţie ne sunt necesare câteva cunoştinţe
minimale.
Variabila de tip Pointer are posibilitatea de a reţine o adresă în
memorie (a nu se face confuzie între adresa unei zone de memorie şi
conţinutul ei). Alocarea spaţiului în memorie (un număr de octeţi
consecutivi la o anumită adresă) se face cu ajutorul procedurii GetMem
care creează în heap o variabilă dinamică de dimensiune
specificată.
Sintaxă: Procedure GetMem (Var p : Pointer, dim : Word);
P – variabilă de tip pointer care va conţine adresa de început a
zonei alocate variabilei
dinamice
Dim – este o expresie care stabileşte lungimea în octeţi a zonei
care va fi ocupată în heap.
Valorea sa maximă este 65521.
necesari pentru salvarea unei imagini în cazul când dispunem de acest
spaţiu, în caz contrar se returnează valoarea 0.
Până acum ştim cum putem afla numărul de octeţi necesari memorării
imaginii, cum să rezervăm spaţiul necesar memorării imaginii, dar nu
ştim cum salvăm efectiv imaginea (octeţii corespunzători ei aflaţi
în memoria video). Pentru a putea realiza aceasta, folosim procedura
GetImage are forma următoare: GetImage (x1,y1,x2,y2,a^).
Parametrii au următoarea semnificaţie:
x1,y1,x2,y2 - coordonatele colţului din stânga sus şi dreapta jos ale
dreptunghiului care conţine imaginea;
a^ - spaţiul în care se face salvarea. Referitor la ultimul parametru,
facem următoarele precizări:
a este variabilă de tip Pointer
când scriem a, ne referim la adresa unde s-a făcut rezervarea);
când scriem a^ ne referim la conţinutul de la adresa care se găseşte
în variabila a.
În concluzie, procedura GetImage are rolul de a salva o imagine în
memorie. Operaţia inversă, da a reface imaginea prin aducerea
octeţilor de informaţie în memoria video, se face prin utilizarea
procedurii PutImage. Aceasta are forma generală:
PutImage(x1,y1,a^,XorPut).
Parametrii au următoarea semnificaţie:
x1,y1 - coordonatele colţului din stânga sus al dreptunghiului care
conţine imaginea (nu este obligatoriu să refacem imaginea în poziţia
pe care a avut-o înainte de salvare, acest fapt permite şi animaţia);
a^ - conţinutul zonei de memorie a cărei adresă se găseşte în a;
parametrul XorPut, prezentat ÅŸi la SetWriteMode ÅŸi care are rolul ca
odată figura să fie vizibilă, odată nu (se desenează utilizând
culoarea de fond).
Utilizând tehnica salvării şi refacerii imaginii, pentru a realiza
animaţia se procedează astfel:
se desenează figura într-o primă poziţie;
se calculează numărul de octeţi necesari salvării ei în memoria
internă;
se salvează imaginea;
se aşteaptă un interval de timp;
se reface imaginea dar cu culoarea fondului, ceea ce duce de fapt la
ÅŸtergerea ei;
repetitiv se procedează astfel:
se reface imaginea într-o poziţie nouă;
se aşteaptă un interval de timp;
se reface imaginea în aceeaşi poziţie dar, datorită parametrului
XorPut, de fapt se ÅŸterge;
procedeul continuă până când s-a ajuns în poziţia finală.
Tehnica 3
Această tehnică nu este aplicabilă în general, ci numai în cazul
în care se lucrează într-un mod grafic, cu un driver grafic ce
permite utilizarea mai multor pagini video. O pagină video este memoria
necesară (existentă fizic pe placa grafică) ce permite reţinerea
unei imagini.
Ideea de bază este următoarea: atât timp cât este vizualizată o
pagină, într-o alta se realizează desenul în noua poziţie. Prin
aceasta se câştigă timp.
Un exemplu în care putem folosi această tehnică este atunci când
folosim driverul VGA si lucrăm în modul VGALo, caz in care dispunem de
4 pagini video. Apar două noţiuni noi şi anume pagina vizualizată
şi pagina activă.
Pagina vizualizată este aceea care se vede pe ecran, iar cea activă
este cea în care acţionează procedurile grafice. Dacă avem o
singură pagină video, cele două naţiuni coincid. În cazul în care
se lucrează cu mai multe pagini video, una poate fi vizualizată şi
alta activă. Stabilirea paginii care se vizualizează se face cu
ajutorul procedurii SetVisualPage(nr), unde nr reprezintă numărul
paginii. Facem precizarea că paginile se numerotează începând cu 0
(astfel, dacă dispunem de 4 pagini video, acestea sunt numerotate
între 0 şi 3). Stabilirea paginii active se face cu procedura
SetActivePage(nr), unde parametrul nr este de tip Integer ÅŸi are
semnificaţia de număr al paginii.
ì¥Â@