prelucrare grafică asistată de calculator

80
1 Prelucrare Grafică Asistată de Calculator ENESCU FLORENTINA MAGDA

Upload: vlad-tanase

Post on 09-Dec-2015

62 views

Category:

Documents


14 download

DESCRIPTION

Laboratoare

TRANSCRIPT

Page 1: Prelucrare Grafică Asistată de Calculator

1

Prelucrare Grafică Asistată de Calculator

ENESCU FLORENTINA MAGDA

Page 2: Prelucrare Grafică Asistată de Calculator

2

Câteva precizări

Structura cursului

• 1 oră curs – titular curs: Lector dr. Ing. Florentina Enescu

• 1 oră laborator – titular aplicaţii practice:Lector dr. Ing. Florentina

Enescu

Forme de examinare:

• Examen final – 30%

• Temă casă - 40 %

• Verificarea abilităților practice de a opera în Matlab 20 %

• Lucrările practice de laborator susţinute pe parcursul semestrului –

10%

Page 3: Prelucrare Grafică Asistată de Calculator

3

CUPRINS

1. SISTEME GRAFICE

1.1. Prezentare generală

1.2. Definiție, Clasificare

1.3. Arhitecturi ale sistemelor grafice

1.4. Dispozitive de intrare ale sistemelor grafice

1.5. Echipamentele de ieşire grafică

1.6 Aplicații grafice

1.7. Softul sistemelor grafice

1.8. Standarde în grafică

2. Adaptoare video şi moduri grafice

2.1. Adaptoare video

2.2. Moduri grafice

3. Primitive grafice

3.1. Operaţii cu pixeli

3.2. Construirea liniilor

4. Transformări grafice 2D (bidimensionale)

4.1. Transformări geometrice

4.1.1. Translaţia

4.1.2. Scalarea

Page 4: Prelucrare Grafică Asistată de Calculator

4

4.1.3. Rotaţia

4.2. Compunerea transformărilor

4.3. Coordonate omogene

4.4. Alte transformări grafice 2D

4.5Transformări ale sistemului de coordonate

5. Transformarea de instanţiere

5.1. Transformarea de instanţiere

5.2. Formatele fişierelor de grafică

5.3. Modele de reprezentare bitmap (hărţi de biţi)

6. Transformări grafice 3D

6.1. Translaţia

6.2. Scalarea

6.3. Rotaţia

6.4. Transformări inverse

6.5. Forfecarea

6.6. Oglindirea faţă de un plan al sistemului de

coordonate

6.7. Compunerea transformărilor tridimensionale

6.8. Rotaţia în jurul unei axe oarecare

6.9. Oglindirea faţă de un plan oarecare

Page 5: Prelucrare Grafică Asistată de Calculator

5

1. SISTEME GRAFICE

1.1. Prezentare generală.

1.2. Definiție, Clasificare.

1.3. Arhitecturi ale sistemelor grafice.

1.4. Dispozitive de intrare ale sistemelor grafice.

1.5. Echipamentele de ieşire grafică.

1.6. Softul sistemelor grafice.

1.7. Standarde în grafică.

1.8. Standarde în grafică.

Page 6: Prelucrare Grafică Asistată de Calculator

6

1.1Prezentare generală

Există în prezent extrem de multe programe care se ocupă cu grafica

asistată de calculator, de la cele mai simple, cum ar fi Paint sau Photo Editor, la programele de animaţie 3D folosite în realizarea desenelor animate sau a trucajelor din filme. Toate aceste programe au ca scop generarea, prelucrarea şi utilizarea de imagini. Se pune însă întrebarea la ce sunt utile aceste programe, deoarece ele reprezintă doar un instrument pentru a obţine ceva şi nu un scop în sine. Din punct de vedere ingineresc, acest ceva estetransmiterea de informaţii cu caracter tehnic.

Informaţia tehnică prezintă anumite specificităţi în ceea ce priveşte limbajul, structurarea informaţiei şi modul de prezentare. Dacă informaţiaeste transmisă în scris atunci organizarea ei este diferită, un text scris oferind posibilitatea unei abordări mai cuprinzătoare şi mai bogate în este prezentată oral, dar folosind un suport electronic, cu nuanţe, în care elementele de grafică pot fi folosite din plin pentru a prezenta o idee cât mai eficient. Similar, dacă informaţia tehnică m ar fi prezentarea în Power Point, elementele de grafică pot fi utilizate astfel încât informaţia să fie exprimată mai sugestiv şi mai clar, diversificând mijloacele de exprimare.

Elementele de grafică utilizate în generarea şi transmiterea informaţiilor tehnice se referă la imagini de tip:

• imagini fotografiate, imagini video • desene/schiţe • scheme • grafice

O binecunoscută lege a lui Murphy precizează că un calculator face ce i se spune să facă, nu ce ar vrea utilizatorul.

Page 7: Prelucrare Grafică Asistată de Calculator

7

Page 8: Prelucrare Grafică Asistată de Calculator

8

1.1. Definiție, Clasificare

• Prin sistem grafic se înţelege un ansamblu format din echipamente şi programe,specializate în sinteză, prelucrare şi analiză a informaţiei grafice, prezentate în formă de imagini.

• Echipamentele pot fi calculatoare, staţii grafice,imprimante, plottere, ş.a.m.d.

• Un sistem grafic care permite interacţiunea cu utilizatorul prin echipamente specializate (mouse, tableta grafică, joy-stick ş.a.m.d.) se numeşte sistem grafic interactiv.

Clasificări ale sistemelor grafice:

Sistemele grafice pot fi clasificate după scopul prelucrărilor pe care le

efectuează. Din acest punct de vedere se face distincţie între: • sisteme de sinteză a imaginilor. • sisteme de prelucrare a imaginilor. • sisteme de analiză a imaginilor. Sisteme de sinteză a imaginilor.

Modelul imaginii este o listă de primitive grafice(linia, cercul, poligonul, textul

şi altele), însoţite de atribute cum ar fi: culoarea, tipul şi lăţimea liniei, etc. • Într-un sistem grafic 3D primitive pot fi şi diferite tipuri de suprafeţe şi

obiecte. • Algoritmii de sinteză codifică fiecare primitivă grafică într-o formă

specială. • Modelul imaginii poate rezulta din calcule specifice aplicaţiei (de exemplu,

reprezentarea grafică a unei funcţii) sau poate fi editat de utilizator prin intermediul programului de aplicaţie (de exemplu,schiţa unei piese, a unei case, etc.).

Utilizatorul poate solicita diferite transformări asupra obiectelor redate în

imagine sau asupraimaginii în ansamblu.

Page 9: Prelucrare Grafică Asistată de Calculator

9

Programele de aplicaţie sunt specializate pe diferite domenii, de exemplu:

• proiectarea asistată de calculator în electronică • proiectarea asistată de calculator în mecanică • proiectarea asistată de calculator în arhitectură • proiectarea asistată de calculator în cartografie • proiectarea asistată de calculator în birotică • proiectarea asistată de calculator în gestiune economică • proiectarea asistată de calculator în tipografie electronică • proiectarea asistată de calculator în producţia de filme, etc.

Sisteme de prelucrare a imaginilor În sistemele de prelucrare şi de analiză a imaginilor datele de intrare se

extrag din imagini. Imaginea poate fi o fotografie sau o imagine din lumea reală. Sistemele de prelucrare a imaginilor au cascop ameliorarea imaginilor sub

aspectul perceperiilor de către om prin: • modificarea culorilor. • îmbunătăţirea contrastului. • redarea selectivă a diferitelor părţi din imagine şi altele.

Sisteme de analiză a imaginilor Analiza imaginilor are ca scop identificarea obiectelor reprezentate în imaginile

codificate numeric. Sistemele de analiză a imaginilor se folosesc în aplicaţii de recunoaştere a

formelor, de exemplu pentru identificarea obiectelor, pentru analiza reliefului şi a resurselor naturale, etc.

Page 10: Prelucrare Grafică Asistată de Calculator

10

1.2. Dispozitive de afişare

Echipamentele de ieşire grafică sunt acele echipamente care prezintă

imaginea sintetizată de către sistemul de calcul, pe un suport cu carácter

permanent (hîrtie, film ,etc.), sau pe ecranul unui

monitor.

În această clasă de echipamente se

încadrează:

• imprimantele cu ace.

• înregistratoarele (plotter) cu peniţă sau

electrostatic.

• imprimantele laser, cu jet de cerneală, cu

transfer termic şi foto înregistratoare pe

peliculă (photo-plotter).

Se vor defini noţiunile care caracterizează calitatea imaginii obţinute pe

suportul de ieşire:

• Dimensiunea punctului reprezintă diametrul unui punct singular generat de

echipamentul de ieşire.

Forma punctului este în general circulară, deşi anumite echipamente pot fi

astfel construite încât forma punctului este dreptunghiulară.

Adresabilitatea reprezintă numărul de puncte individuale pe care le poate

creea echipamentul pe unitatea de lungime.

Adresabilitatea axei X este inversă distanţe idintre centrele a două puncte

vecine (adiacente) aflate pe aceeaşi linie orizontală.

Page 11: Prelucrare Grafică Asistată de Calculator

11

În mod similar se defineşte adresabilitatea axei Y. Nu întotdeauna

adresabilitatea are aceeaşi valoare pe ambele axe.

Rezoluţia este o noţiune corelată cu dimensiunea punctului, iar valoarea ei

maximă este egală cu valoarea adresabilităţii.

Rezoluţia se defineşte ca spaţierea minimă între şiruri de linii negre alternate

cu linii albe, care pot fi decalate de observator.

De exemplu dacă pe un centimetru pot fi decalate 20 de perechi intercalate de

linii albe şi negre, spunem că rezoluţia este de 40 linii pe centimetru.

Dispozitivele grafice de afişare există de două tipuri:

• video display

• display cu cristale lichide

Video display-ul este un ecran cu o peliculă foto-luminiscentă pe bază de

fosfor, care permite fiecărui pixel al său să fie luminos doar când este lovit de un

fascicol de electroni.

Deoarece pelicula fosforescentă îşi pierde luminozitatea, imaginea trebuie

rescanată repetat, cu o frecvenţă de cel puţin 60 ori pe secundă.

Afişajul cu cristale lichide (Liquid CrystalDisplay - LCD) este un dispozitiv care

foloseşte un câmp electric pentru a modifica polarizarea celulelor cristaline la

nivelul fiecărui pixel.

Fiecare astfel de celulă este caracterizată de strălucire:

• prin schimbarea polarizării pe pixel, se modifică nivelul strălucirii, deci

intensitatea afişării pixelului.

Afişarea la ecran poate fi făcută în două moduri:

în regim text

în regim grafic

Page 12: Prelucrare Grafică Asistată de Calculator

12

În regim grafic, ecranul este considerat format din pixeli.

Pixelii ecranului sunt puşi în corespondenţă Biunivocă cu biţii din memoria

video (video buffer).

Rezoluţia dispozitivului grafic reprezintă produsul dintre numărul de pixeli pe

linie şi coloană.

Rezoluția defineşte dimensiunea (exprimată în pixeli) a dreptunghiului în care

imaginea este reprezentată.

În regimul text, ecranul este considerat împărţit în 25 linii de 80 coloane

fiecare în fiecare zonă fiind afişate diferite caractere grafice (litere, cifre,

simboluri etc.)

Şi în această regiune, ecranul este pus în corespondenţă biunivocă cu o parte a

memoriei, de data aceasta zonele de ecran fiind asociate cu octeţii ce definesc

caracterele text.

Indiferent de tipul dispozitivului de afişare, pentru ca imaginea să fie afişată,

memoria video (frame buffer) este citită de un dispozitiv hardware, numit placa

video (video controller sau adaptor grafic).

În cazul în care se doreşte o creştere a calităţii şi vitezei de afişare în mod

grafic, adaptorul graphic este “înzestrat” cu

memorie video suplimentară şi cu dispozitive

de procesare grafică (coprocesor grafic), care

preiau o mare parte din sarcina de procesare

grafică realizată prin software de unitatea

centrală de prelucrare (CentralProcessing

Unit - CPU).Acestea se numesc acceleratoare

(plăci)grafice.

Page 13: Prelucrare Grafică Asistată de Calculator

13

1.3. Dispozitive de intrare ale sistemelor grafice

Dispozitivele de intrare au funcţia de realizare a interacţiunii

dintre utilizator şi sistemul grafic.

Tastatura: este cel mai comun dispozitiv de intrare.

Prin intermediul acesteia pot fi implementate toate funcţiile de

intrare într-un sistem, prin alocarea corespunzătoare, prin

program, a fiecărei taste sau grupuri de taste.

Mouse-ul: este actualmente cel mai utilizat dispozitiv pentru

implementarea funcţiei de intrare de tip locator-punctator la nivelul ecranului.

Mouse-ul posedă două sau trei butoane a căror apăsare determină

transferul la calculator a unui cod special.

Acţiunea pe care programul o efectuează ca urmare a apăsării unui buton

este specifică programului care utilizează acest dispozitiv.

Page 14: Prelucrare Grafică Asistată de Calculator

14

Tracking-ball-ul: principiul constructiv şi funcţional al

acestui dispozitiv este cel al mouse-ului, cu deosebirea că

dispozitivul stă fix, iar mişcarea de rotaţie a sferei este

produsă de către palma operatorului.

Joy-stick: este un dispozitiv utilizat calocator -

punctator.

Este alcătuit dintr-o manetă care are două grade

de libertate de rotaţie pe două axe

perpendiculare.

Fiecare mişcare de rotaţie se transferă într-un

număr de impulsuri care se transmit la calculator.

Light pen: este un dispozitiv punctator direct pe ecran,

al cărui principiu se bazează pe elementul fotosensibil din

vîrful creionului optic impresionat de lumina emisă de către

punctul de pe ecran atins de creion.

Digitizorul (digitizer) şi tableta grafică. Construcţia

este de forma unei plăci plane dreptunghiulare, cu

dimensiune de la formatul A3 până la o masă cu

laturi de doi metri.

Page 15: Prelucrare Grafică Asistată de Calculator

15

Sub această placă se găsesc reţele de fire paralele amplasate la distanţe

foarte mici (sutimi de milimetru).

Există două reţele, câte una pentru fiecare axă.

Pe masa de desen se poate amplasa desenul care trebuie digitizat.

Operaţia de introducere a punctelor se poate face cu un dispozitiv special.

La selecţia unui punct de pe desen se apasă un buton, sistemul depistează

linia şi coloana deasupra căruia este amplasat punctatorul şi transmite la

calculator indicii liniei şi coloanei astfel determinate.

Scanner: acest dispozitiv utilizează tehnici de

fotografiere a imaginii prezentate pe o foaie de hîrtie,

peliculă etc.

Scanner-ul descompune imaginea în rastru de puncte

şi o transferă pixel cu pixel la calculator.

Pentru diminuarea volumului de date transferate,

scanner-ul realizează o compresie de date, anterioară

transferului.

Page 16: Prelucrare Grafică Asistată de Calculator

16

1.5 Arhitecturi ale sistemelor grafice

În calculatoarele personale grafica este susţinută de către procesorul unic al

sistemului.

Calculatoarele conţin un modul denumit placă grafică

care conţine memoria grafică, dispozitivele de semnalizare

şi conversie video şi controller-ul video, care are rolul de a

genera semnalele de sincronizare a monitorului şi de a

extrage sincron informaţia din memoria video.

O staţie grafică este în general dotată cu două module

de prelucrare şi anume unitatea centrală de prelucrare

(UCP) şi procesorul grafic (PG).

Procesorul grafic al unei staţii grafice performante este un procesor

specializat, dotat cu un modul de memorie proprie, şi cu un set de module care

implementează în hardware algoritmi specifici prelucrărilor grafice.

Astfel de procesoare pot fi dedicate:

funcţiilor de generare de segmente sau curbe,

operaţiilor de decupare,

operaţiilor de eliminare a suprafeţelor ascunse,

procesoare de formare a iluminării.

Page 17: Prelucrare Grafică Asistată de Calculator

17

1.6 Aplicații grafice

Din categoria aplicaţiilor grafice fac parte:

Programele de desenare (paint programs): permit

crearea desenelor sub formă de hărţi de biţi.

Programe pentru desen tehnic şi artistic (draw

programs): furnizează funcţii avansate de desenare,

bazate în special pe prelucrarea liniilor curbe. Imaginile

sunt reprezentate în formate vectoriale.

Programe grafice de prelucrare a datelor tabelare (graphic

worksheet): sunt destinate aplicaţiilor în domeniul financiar-

contabil.

Cu ajutorul lor se editează tabele de profituri, analize de

tabele, etc.

Datele sunt introduse în celule (o celulă reprezintă

intersecţia dintre o linie şi ocoloană într-un tabel).

Unele celule pot fi definite ca relaţii între două sau

mai multe celule introduse anterior.

Aceste produse folosesc grafica pentru prezentarea

datelor din tabele în forme atractive sau sintetice.

Page 18: Prelucrare Grafică Asistată de Calculator

18

Programe grafice de prezentare (slide show):

permit crearea diagramelor (dreptunghiulare sau

circulare), graficelor, a altor tipuri de imagini pentru

prezentări şi rapoarte, pun la dispoziţia utilizatorului

colecţii de diverse scenarii de reclamă.

Diagramele pot fi rezultatul prelucrării şi reprezentării

datelor din aplicaţii pentru foi de calcul.

Programe pentru animaţie:

permit înlănţuirea şi secvenţierea seriilor de imagini pentru a simula

mişcarea.

Fiecare imagine este considerată un cadru într-un film.

Propun facilităţi din domeniul filmului:

mixaje

selecţie de secvenţe

modificări de obiecte pentru obţinerea efectelor

de animaţie

Programe de proiectare industrială – CAD (Computer AidedDesign):

aplicaţii dedicate proiectării.

destinate arhitecţilor şi inginerilor.

Printre funcţiile cele mai cunoscute, permit:

trasare în 2D şi 3D, numeroase sisteme

de coordonate şi tipuri de proiecţii.

Page 19: Prelucrare Grafică Asistată de Calculator

19

selectarea dintre numeroase sisteme de măsură a dimensiunilor paginii de

desen, localizarea obiectului prin referinţa la alte obiecte, mărirea sau

micşorarea desenelor (zoom), editări de simboluri.

tipuri de linii de trasare şi culori.

scalări şi rotaţii de obiecte selectate.

compatibilitatea formatelor fişierelor, ce pot fii importate sau exportate şi

de alte aplicaţii.

umplerea poligoanelor în diverse stiluri (fill).

numeroase tipuri de caractere text în alfabete latin, chirilic, grec, simboluri

matematice, meteorologice, astronomice, muzicale.

facilitatea de dispunere pe masa de desen.

cotări automate a obiectelor selectate, atribute de vizibilitate, prioritate,

culoare, stil, ataşate obiectelor şi posibilitatea editării facile a acestor

atribute.

dispozitivul de intrare: mouse, tabletă grafică,trasări de curbe, suprafeţe,

polilinii, facilităţi de trasare în 3D (crearea obiectelor 3D din 2D).

eliminarea liniilor ascunse, simularea fotografierii cu lentile de distanţă

focală variabilă, teleobiectiv, cu specificarea uneia sau mai multor surse de

lumină, realism vizual, iluminări, umbriri, crearea unor macroinstrucţiuni cu

AUTOLISP sau C.

Editoare grafice (desktop publishing): sunt

colecţii de funcţii de procesare atextului, care

permit controlul poziţionării textului şi imaginilor,

astfelîncât pot ficreate reviste, ziare, reclame,

cărţi.

Page 20: Prelucrare Grafică Asistată de Calculator

20

Pun la dispoziţia utilizatorului module pentru:

scrierea documentului cu procesorul de texte, editarea/revizuirea textului

până la ajungerea în forma finală în modul WYSIWYG (What You See Is

What You Get).

inserarea textului în pagină, ţinând cont de dimensiunea literelor, tipul de

text, numărul de coloane pe pagină, lungimea coloanelor.

ilustrarea prin crearea diagramelor, graficelor, diverselor desene sau

preluarea fotografiilor (histograme, imagini scanate).

revizuirea aspectului paginii.

machetarea, tipărirea în tirajul dorit.

Aplicaţii dedicate exploatării suportului de informaţie multimedia (hârtie, film,

bandă magnetică), respectiv dispozitivelor multimedia (microfon, magnetoscop,

sintetizator).

Sunt aplicaţii care oferă:

utilitare de conversie, de comprimare.

funcţii de arhivarea imaginilor, filmelor,

retuşarea imaginilor video.

recunoaşterea caracterelor documentelor

imprimate.

recunoaşterea, procesarea şi arhivarea datelor

sonore.

Programele din componenţa unui sistem grafic de sinteză sunt în general

structurate în două nivele:

nivelul dependent de echipamente, format din programele de tip "driver".

nivelul independent de echipamente, realizat ca o bibliotecă de

subprograme apelabile din programele de aplicaţie, numită biblioteca

grafică.

Page 21: Prelucrare Grafică Asistată de Calculator

21

Funcţiile bibliotecilor grafice pot aparţine următoarelor categorii:

rutine de configurare:

selectarea modului grafic dorit.

stabilirea zonelor de memorie pentru scrierea fişierelor de imagini.

rutine pentru stabilirea coordonatelor desenului şi a zonei active.

rutine pentru stabilirea paletei de culori.

rutine pentru stabilirea atributelor liniei:

culoare de trasare, stil, grosime.

rutine pentru trasarea liniilor, arcelor, elipselor, cercurilor, poliliniilor,

umplerea contururilor.

rutine pentru afişarea textului.

drivere şi rutine pentru copierea imaginilor grafice la imprimantă.

rutine pentru gestiunea memoriei ecran.

Page 22: Prelucrare Grafică Asistată de Calculator

22

1.7 Standarde în grafică

Obiectivele urmărite prin standardizare au fost:

1.Portabilitatea programelor, cu două aspecte:

independenţa faţă de sistemul de calcul şi de sistemul grafic folosit

independenţa faţă de echipamente

2.Portabilitatea informaţiei grafice, adică posibilitatea transferului descrierilor de

imagini între sisteme grafice diferite.

3.Posibilitatea stocării pe termen lung a informaţiei grafice.

4.Uniformitatea instruirii în domeniul proiectării şi utilizării sistemelor grafice,

asigurarea unui vocabular unic de termeni şi concepte.

Primul standard internaţional în domeniul sistemelor de sinteză al

maginilor, adoptat în 1985 de către ISO (International Standards Organisation) şi

de către ANSI (American National Standards Institute) a fost G.K.S. (Graphical

Kernel System).

El defineşte un set complet de funcţii de afişare 2D independente de

echipamente, funcţii de segmentare (grupare a primitivelor grafice), de

transformare, de control al staţiilor de lucru şi de interacţiune.

Standardul G.K.S. are două părţi:

I Specificaţia funcţiilor sistemului grafic, într-o manieră independentă

de limbaj.

II Interfeţe pentru diferite limbaje de nivel înalt (Pascal, C, Ada), adică

denumirile subprogramelor prin care sunt implementate funcţiile

sistemului, parametrii fiecărui subprogram şi erorile de semnalat.

Ulterior a fost adoptată o extensie a standardului GKS, pentru sinteza

imaginilor care redau obiecte tridimensionale, numită GKS-3D.

Page 23: Prelucrare Grafică Asistată de Calculator

23

Subprogramele prin care sunt implementate funcţiile definite în standardele

GKS / PHIGS formează nucleul independent de dispozitive al sistemului grafic.

Prelucrările dependente de caracteristicile diferitelor tipuri de echipamente

sunt grupate în modulele driver.

Au fost propuse şi alte standarde:

CGI (Computer Graphics Interface)

VDI (Virtual Device Interface)

Page 24: Prelucrare Grafică Asistată de Calculator

24

2. Adaptoare video şi moduri grafice

2.1. Adaptoare video

2.2. Moduri grafice

Page 25: Prelucrare Grafică Asistată de Calculator

25

2.1. Adaptoare video

Unitatea de afişare a sistemului grafic are două componente de

bază:

adaptorul video

monitorul video

Adaptoarele video permit afişarea textelor şi imaginilor grafice.

Informaţia care se afişează pe ecran se extrage din memoria

adaptorului video.

Adaptoarele grafice mai sunt numite de diverşi producători:

video cards.

video boards.

video display boards.

video controllers.

graphics cards.

graphics adapters.

Fiecărui punct (pixel) de pe ecran îi corespund unul sau mai mulţi biţi

în această memorie.

Accesul în memoria video se poate face ca la orice altă locaţie de

memorie a calculatorului.

Capacitatea memoriei video şi organizarea ei depind de tipul

adaptorului.

Ecranul – în mod text - este considerat ca fiind împărţit printr-o

grilă de 25x80 celule.

Page 26: Prelucrare Grafică Asistată de Calculator

26

Fiecare celulă poate conţine un caracter.

Ecranul este adresat la nivel de caracter, într-un sistem de

coordonate cartezian, cu originea (1,1) în colţul din stânga sus.

În modul grafic ecranul este considerat ca fiind divizat printr-o

grilă rectangulară în celule numite pixeli.

Numărul de pixeli ai ecranului (rezoluţia) depinde de tipul

adaptorului video şi de modul în care acesta lucrează.

Imaginile grafice sunt alcătuite din puncte, fiecare punct

corespunzând unui pixel.

Numărul de biţi alocaţi în memoria video fiecărui pixel determină

numărul de culori afişabile simultan pe ecran.

În mod grafic ecranul este adresat într-un sistem de coordonate

carteziene având originea (0,0) situată în colţul stânga sus.

Coordonatele (x, y) ale unui punct de pe ecran sunt numere întregi.

Valoarea lui x creşte spre dreapta iar cea a lui y spre partea de jos

a ecranului.

Adaptoarele video standard sunt:

EGA (Enhanced Graphics Adapter) – permite lucrul în mod text şi în

mod grafic.

În mod grafic, rezoluţia este de 640x350 puncte, cu 16 culori

simultan pe ecran şi 2 pagini video.

VGA (Video Graphics Array) - permite lucrul în mod text şi în mod

grafic.

Acest adaptor este considerat un succesor al adaptorului EGA.

Page 27: Prelucrare Grafică Asistată de Calculator

27

În mod grafic rezoluţia este: 640x480 puncte şi 16 culori simultan

pe ecran din 256K culori posibile, o pagină video sau 320x200

puncte şi 256 culori simultan pe ecran cu o singură pagină video.

XGA (Extended Graphics Array) – Rezoluţia este de 1024x768 pixeli,

cu 24 până la 210 culori;

SVGA (Super Video Graphics Array) - Rezoluţia este de la 640x400

puncte şi 16 culori pînă la 1280x1024 puncte şi 16 mii culori.

AGA (Advanced Graphics Adapter) - Rezoluţia este de 1024 x 768

pixeli. Pentru aplicaţii grafice complexe s-au realizat adaptoare

grafice dedicate cu o rezoluţie excepţională (cele mai bune rezoluţii

întâlnite depăşind nivelul de 4096 x 4096 pixeli).

Adaptoarele EGA folosesc monitoare digitale iar VGA şi SVGA

folosesc monitoare analogice.

Un monitor digital foloseşte un număr fix de semnale.

Astfel, monitorul pentru adaptorul EGA foloseşte 6 semnale:

trei pentru culorile de bază R, G, B (roşu, verde, albastru)

trei pentru intensităţi r, g, b.

Fiind 6 semnale digitale ar putea fi afişate 64 culori distincte simultan

pe ecran, dar numărul este limitat la 16, deoarece culoarea unui pixel se

reţine pe 4 biţi în memoria video.

La un monitor analogic, semnalele R, G, B pot varia continuu.

Aceasta permite o variaţie continuă a nuanţelor de culori.

Însă, numărul de culori disponibile este limitat de reprezentarea

digitală în memoria video.

Page 28: Prelucrare Grafică Asistată de Calculator

28

2.2.Moduri grafice

Fiecare tip de adaptor permite folosirea calculatorului în unul sau

mai multe moduri grafice, numite şi moduri video.

Ele se deosebesc:

prin rezoluţia ecranului.

numărul de culori ce se pot afişa simultan pe ecran.

numărul de pagini video disponibile.

În tabelul următor sunt prezentate modurile video specifice tipului de

adaptor VGA, moduri accesibile prin bibliotecile grafice existente în

mediul de programare C.

Prin operaţia de autodetecţie se determină tipul de adaptor video, se

încarcă în memorie fişierul .BGI corespunzător şi se selectează modul

video cu rezoluţia maximă.

1. Iniţializarea modului grafic InitGraph (GraphDriver, GraphMode,

cale) - funcţia stabileşte valorile implicite ale parametrilor de operare în

Page 29: Prelucrare Grafică Asistată de Calculator

29

mod grafic şi încarcă de pe disc în memorie modulul driver

corespunzător primului parametru.

Modul de lucru al driver-ului încărcat este specificat prin al doilea

parametru iar denumirea completă a căii unde se va caută fişierul .BGI

corespunzător este prezentată prin al treilea parametru.

Exemplu de utilizare a funcţiei de iniţializare grafică

int gdriver=DETECT, gmode;

initgraph(&gdriver, &gmode, "");

Valoarea zero a parametrului GraphDriver determină apelul funcţiei

pentru autodetecţia tipului adaptorului video instalat.

În acest caz, efectul execuţiei funcţiei initgraph este următorul:

se detectează tipul adaptorului video instalat

se încarcă în memorie fişierul .BGI corespunzător

se selectează modul grafic cu rezoluţia maxima pentru adaptorul

respecti.

Funcţia initgraph va întoarce numărul driver-ului încărcat în

parametrul GraphDriver şi numărul modului grafic selectat în

parametrul GraphMode.

2. Detectgraph (Graphdriver, Graphmode) – funcţia detectează tipul

adaptorului video instalat.

Este de regulă apelată de funcţia initgraph.

Poate fi apelată şi independent, dacă se doreşte doar stabilirea

configuraţiei hardware şi nu selectarea automată a modului grafic de

rezoluţie maximă.

Page 30: Prelucrare Grafică Asistată de Calculator

30

Spre deosebire de initgraph funcţia nu încarcă în memorie fişierul

.BGI corespunzător.

De aceea, după apelul funcţiei date trebuie apelată funcţia initgraph.

Ulterior, dacă se doreşte schimbarea modului grafic selectat, se va

folosi funcţia setgraphmode.

Pentru a cunoaşte dacă execuţia unei funcţii din biblioteca grafică a

decurs normal sau nu, se pot folosi funcţiile graphresult şi

grapherrormsg.

3. Graphresult - funcţia întoarce codul de eroare referitor la execuţia

ultimei funcţii grafice. Codul de eroare este o valoare întreaga cuprinsa

între -14 şi 0.

4. Grapherrormsg - funcţia întoarce un şir de caractere reprezentând

mesajul corespunzător codului de eroare furnizat de funcţia graphresult.

5. Getgraphmode - funcţia întoarce o valoare întreagă ce reprezintă

modul video curent.

6. Setgraphmode - funcţia stabileşte un nou mod video. La apelul

acestei funcţii se şterge ecranul şi se iniţializează toţi parametrii de

operare în mod grafic la valorile implicite.

Funcţia se poate utiliza la revenirea din mod text în mod grafic.

Observatie:

Funcţiile getgraphmode şi setgraphmode se pot folosi numai după

iniţializarea modului grafic.

7. Getmoderange - funcţia primeşte ca parametru numărul unui driver

grafic şi întoarce două valori reprezentând numărul minim şi maxim al

modului video permis pentru driver-ul grafic specificat.

Page 31: Prelucrare Grafică Asistată de Calculator

31

8. Getmaxmode - funcţia întoarce numărul maxim de moduri video

pentru driver-ul grafic curent (încărcat în memorie de funcţia initgraph).

Spre deosebire de funcţia getmoderange, funcţia getmaxmode se

poate utiliza pentru orice driver, inclusiv pentru cele definite de

utilizator.

9. Getmodename - funcţia primeşte ca parametru numărul modului

grafic activ, specificat fie printr-o variabila întreagă.

Funcţia întoarce un şir de caractere ce reprezintă denumirea

modului video.

10. Graphdefault - funcţia iniţializează toţi parametrii de operare

în mod grafic la valorile implicite.

11. Restorecrtmode - funcţia reiniţializează sistemul de afişare în

modul text, după utilizarea modului grafic.

Se poate folosi alternativ cu setgraphmode pentru a comuta din

mod text în mod grafic, în funcţie de aplicaţie.

La trecerea dintr-un mod în altul, ecranul se şterge şi se afişează

informaţia din memoria video corespunzător noului mod.

12. Ieşirea din modul grafic

Closegraph - funcţia efectuează revenirea în modul text, modul

implicit de lucru al sistemului de afişare.

Ea apelează funcţia graphfreemem pentru a elibera memoria

ocupată de driver-ul grafic, setul sau seturile de caractere utilizate de

program precum şi zonele de memorie interne.

Page 32: Prelucrare Grafică Asistată de Calculator

32

3. Primitive grafice

3.1. Operaţii cu pixeli

3.2. Construirea liniilor

Page 33: Prelucrare Grafică Asistată de Calculator

33

3.1. Primitive grafice

Poziţia curentă de desenare poate fi stabilită cu ajutorul funcţiilor

grafice Moveto şi Moverel.

Implicit, poziţia curentă de desenare este în colţul din stânga sus al

porţii de vizualizare curente.

Moveto(x,y) - funcţia stabileşte ca poziţie curentă de desenare

punctul de coordonate(x,y) specificate ca parametri.

În mod text, funcţia echivalentă este Gotoxy.

Moverel(xr,yr) - funcţia deplasează poziţia curentă de desenare

relativ la vechea poziţie de desenare, cu distanţele xr şi yr pe axele x

şi y respectiv.

Noua poziţie de desenare nu este limitată la dimensiunea porţii de

vizualizare curente.

Getx şi Gety - funcţiile întorc coordonata poziţiei curente de desenare

pe orizontală şi verticală.

Aceste coordonate sunt relative la poarta de vizualizare curentă.

Page 34: Prelucrare Grafică Asistată de Calculator

34

3.2. Construirea liniilor

Line (x1,y1,x2,y2) - funcţia afişează o linie între punctele de

coordonate (x1,y1) şi (x2, y2), specificate ca parametri.

Linia este afişată folosindu-se valorile curente ale atributelor de

afişare ale liniilor:

culoare de desenare.

grosime şi tip linie.

mod de scriere în memoria ecran.

Valorile trebuie să fie stabilite înainte de apelul funcţiei line.

Valori implicite au următoarele atributele de Afişare:

culoare : alb.

tip de linie : continuă.

grosime linie : un pixel.

mod de scriere în memoria ecran: COPY_PUT.

Lineto (xf,yf) - funcţia afişează o linie din poziţia curentă de desenare

până în punctul de coordonate (xf,yf) specificate ca parametri.

Pentru afişarea liniei se folosesc valorile curente ale atributelor

menţionate la funcţialine.

După afişare, poziţia curentă de desenare va deveni punctul de

coordonate (xf, yf).

Linerel (xr,yr) - funcţia afişează o linie din poziţia curentă de

desenare până într-un punct specificat prin deplasamentul relativ faţă

de poziţia curentă de desenare (xr, yr).

Page 35: Prelucrare Grafică Asistată de Calculator

35

4. Transformări grafice 2D (bidimensionale).

4.1 Transformari geometrice

4.1.1. Translatia

4.1.2. Scalarea

4.1.3. Rotatia

Page 36: Prelucrare Grafică Asistată de Calculator

36

4.Tranformari grafice 2D.

Transformarile grafice sunt des utilizate pentru sinteza imaginilor,

in acest fel se permite:

reprezentarea imaginilor (desenelor) la scara dorita.

efectuarea operatiilor de miscare a imaginii si efectuarea detaliilor

asupra imaginilor.

realizarea miscarii imaginii (animatia) etc.

Toate aceste lucruri se pot realiza prin doua puncte complementare

(diferite intre ele), pornind de la sistemul de ecuaţii:

el poate fi interpretat astfel:

Page 37: Prelucrare Grafică Asistată de Calculator

37

1. Se consideră că, punctul din plan, de coordonate (x,y) este translatat

spre dreapta cu o distaţă notată cu "d" până în punctul p(prim) de

coordonate (𝑥′,𝑦′).

2. Axa y-cilor, a sistemului de coordonate este translatată cu distanţă

"d" spre stanga, rezultând axa (𝑂′,y).

Prima transformare corespunde transformarii punctului în raport cu

un sistem de coordonate fix şi reprezintă din punct de vedere

matematic, o transformare geometrică

care se aplică punctului.

Cea de-a doua interpretare

produce/determină transformări ale

sistemului de coordonate, astfel încât

noul punct va capata noile coordonate

(x(prim),y(prim)), astfel încât punctul

"p", va fi reprezentat in sistemul de

coordonate nou (cel transformat).

Se presupune că există, un sistem

cartezian de coordonate în plan. În acest sistem, un obiect poate fi

descris prin:

set de atribute geometrice (coordonate).

atribute topologice.

atribute de aspect.

O transformare geometrică a unui obiect se realizează prin

transformarea fiecărui punct conţinut în reprezentarea obiectului.

Page 38: Prelucrare Grafică Asistată de Calculator

38

4.1.1. Translaţia

Definiţie: Translaţia reprezintă transformarea prin care un obiect este

deplasat din poziţia sa cu o poziţie şi o direcţie dată. Translaţia din punt

de vedere matematic se poate reprezenta printr-un vector de forma:

v=𝑡𝑥*I+𝑡𝑦*J.

Presupunem că avem un punct P de

coordonate (x,y), punct care aparţine

unui obiect, se translatează obiectul cu

o distanţă egală cu marimea vectorului

v. Vârful Vectorului se transformă în

punctul 𝑃′ de coordonate (𝑥′, 𝑦′).

𝑋′şi 𝑌′ sunt definite de următorul

sistem de ecuaţii:

Exemplu:

Fie un vector v de forma: 3*I+2*J

si P(10,10).

Prin translaţia lui P cu vectorul V se obţine punctul 𝑃′(𝑥′, 𝑦′),

unde:

Înlocuind valorile lui x si y, va rezulta sistemul:

{𝑋′ = 3 ∗ 10 = 30.𝑌′ = 2 ∗ 10 = 20.

Page 39: Prelucrare Grafică Asistată de Calculator

39

Aplicaţia la translatare(C++):

#include <graphics.h>

#include <conio.h>

#include <stdlib.h>

int xc, yc;

int main(void)

{

int gdriver = DETECT, gmod;

initgraph(&gdriver, &gmod, "");

int tx, ty;

xc=getmaxx()/2;

yc=getmaxy()/2;

setbkcolor(WHITE); // culoarea fondului

setcolor(BLUE); // culoarea de desenare

// translatarea unei linii

line(xc/2, yc/2, xc, yc);

tx = 80;

ty = 180;

getch();

// noile pozitii ale lui x şi y

Page 40: Prelucrare Grafică Asistată de Calculator

40

xc = xc + tx;

yc = yc + ty;

line(xc/2, yc/2, xc, yc);

// translatarea unui cerc

getch();

setcolor(YELLOW); // culoarea de desenare

circle(xc/2, yc/2, 60);

tx = 120;

ty = 420;

// noile pozitii ale lui xc si yc

getch();

xc = xc + tx;

yc = yc + ty;

circle(xc/2, yc/2, 60);

getch();

closegraph();

}

Page 41: Prelucrare Grafică Asistată de Calculator

41

4.1.2. Scalarea

Scalarea poate fi de mai multe tipuri, cum ar fi:

a) Scalarea faţă de origine.

Definiţie: Scalarea unui obiect reprezintă transformarea la care este

supus obiectul pentru micşorare, respectiv mărire.

Scalarea este specificată prin două numere:

1. Factorul de scalare pe axa x-cilor.

2. Factorul de scalare pe axa y-cilor.

Dacă factorul de scalare este pozitiv, se specifică o modificare a

mărimii raportată direcţiei pozitive pe axa x respectiv y.

Dacă factorul de scalare este subunitar, realizează o mărire a

obiectului, iar unul supraunitar permite o micşorare a obiectului.

Se consideră factorul de scalare al axei OX ca fiind notat cu 𝑠𝑥

pentru axa OY, factorul de scalare se noteaza cu 𝑠𝑦.

Scalarea unui punct notat cu P(x,y) faţă de origine reprezintă

scalarea vectorului de poziţie OP(X,Y). Vectorul de poziţie uneşte

punctul P cu originea. În urma

procesului de scalare se obţine

poziţia 𝑂𝑃′, care va avea

componentele 𝑥′, 𝑦′, de forma:

Page 42: Prelucrare Grafică Asistată de Calculator

42

Dacă în aceste relaţii vom avea: 𝑠𝑥=𝑠𝑦, scalarea este considerată

uniformă, adică obiectul nu este supus transformării prin deformare.

Dacă factorul de scalare de pe axa x-cilor (𝑠𝑥) este diferit faţă de

factorul de scalare de pe axa y-cilor (𝑠𝑦), scalarea este uniformă.

Exemplu:

Se presupune un pătrat cu coordonatele vârfurilor (1,1),

(3,1), (3,3), (1,3).

Se scalează pătratul faţă de origine cu factorii de scalare 𝑠𝑥=2,

respectiv 𝑠𝑦=3. În urma procesului de scalare va rezulta un dreptunghi

care va avea colţurile de coordonate: (2,3), (6,3), (6,9), (2,9).

b) Scalarea faţă de un punct oarecare din plan.

Se consideră un punct F(𝑥𝑓, 𝑦𝑓) un punct din plan faţă de care se

realizează scalarea punctului P(x,y).

Punctul F de coordonate fx şi fy, pentru că nu se modifică prin aplicarea

transformării, poartă numele de punct fix al transformării.

Scalarea punctului P faţă de punctul fix F, cu factorii de scalare 𝑠𝑥

şi 𝑠𝑦, reprezintă scalarea vectorului FP.

În acest caz componentele vectorului scalat FP (prim) sunt:

dx’ = x’ – xf = (x - xf) * sx

dy’ = y’ – yf = (y - yf) * sy

Page 43: Prelucrare Grafică Asistată de Calculator

43

Din acest sistem de ecuaţii vor rezulta cele doua valori x’ şi y’:

x’ = x * sx + xf – xf * sx

y’ = y * sy + yf – yf * sy

Dacă 𝑥𝑓=0 si 𝑦𝑓=0 va rezulta formula scalării faţă de origine.

Aplicaţia la scalare(C++):

#include <conio.h>

#include <graphics.h>

int xc, yc;

int main(void)

{

int gdriver = DETECT, gmod;

initgraph(&gdriver, &gmod, "");

xc=getmaxx()/2;

yc=getmaxy()/2;

setbkcolor(WHITE); // culoarea fondului

setcolor(YELLOW); // culoarea de desenare

// scalarea fara deformare (adica sx=sy), fata de origine a unui patrat

rectangle(10, 10, 20, 20);

getch();

int sx, sy;

Page 44: Prelucrare Grafică Asistată de Calculator

44

setcolor(RED);

sx = sy = 15;

rectangle(10*sx, 10*sy, 20*sx, 20*sy);

getch();

// scalarea cu deformare (adica sx != sy) fata de

origine a unui patrat

setcolor(YELLOW);

rectangle(100, 100, 200, 200);

getch();

setcolor(GREEN);

sx = 2; sy = 3;

rectangle(100*sx, 100*sy, 200*sx, 200*sy);

getch();

closegraph();

}

Page 45: Prelucrare Grafică Asistată de Calculator

45

4.1.3. Rotaţia

1. Rotaţia faţă de un origine.

Elementul specific acestei transformări îl constituie unghiul de

rotaţie. Dacă unghiul este pozitiv, rotaţia se desfaşoară în sens

trigonometric. Dacă unghiul de rotaţie este negativ, rotaţia se

efectuează în sensul mişcării acelor de ceasornic.

Se presupune punctul P(x,y) şi unghiul de rotaţie u.

Punctul care rezultă P’(x’,y’) este calculat în funcţie de rotaţia

punctului P de unghiul u, în jurul originii. Acest lucru în coordonate

carteziene se poate scrie astfel:

Pentru punctul P:

x = r * cos(t)

y = r * sin(t)

Pentru punctul P’,

valorile vor fi:

x’ = r * cos(t+u)

y’ = r * sin(t+u)

Vom înlocui cos(t+u) şi sin(t+u) cu expresiile lor din trigonometrie

şi obţinem:

x’ = r ( cos(t) * cos(u) – sin(t) * sin(u) )

Page 46: Prelucrare Grafică Asistată de Calculator

46

y’ = r ( cos(t) * sin(u) + sin(t) * cos(u) )

Dar x=r*cos(t) si y=r*sin(t) deci obţinem:

x’ = x * cos(u) – y * sin(u)

y’ = x * cos(u) + y * cos(u)

2. Rotaţia faţă de un punct oarecare din plan.

Se consideră punctul P(x,y), unghiul de rotaţie u şi punctul faţă de

care se va executa rotaţia F(𝑥𝑓,𝑦𝑓).

Punctul care rezultă P’(x’,y’) se calculează în funcţie de rotaţia

punctului P cu unghiul u în jurul punctului F cu următoarele expresii:

dx’ = x’ – xf = (x -xf) * cos(u) – (y-yf) * sin(u)

dy’ = y’ – yf = (x -xf) * sin(u) + (y-yf) * cos(u)

Se vor obţine relaţiile de mai jos:

x’ = x * cos(u) – y * sin(u) + xf – xf * cos(u) + yf * sin(u)

y’ = x * sin(u) + y * cos(u) + yf – xf * sin(u) - yf * sin(u)

Rotaţia

Exemplu:

Următorul program roteşte un pătrat în jurul centrului ecranului.

Se efectuează n rotaţii succesive cu pasul 2*PI/n.

Page 47: Prelucrare Grafică Asistată de Calculator

47

#include <iostream.h>

#include <conio.h>

#include <graphics.h>

#include <math.h>

#include <stdlib.h>

#include <dos.h>

#define PI 3.141592

float x[4],y[4];

int xc, yc;

void desen()

{

line((int)x[0], (int)y[0], (int)x[1], (int)y[1]);

line((int)x[1], (int)y[1], (int)x[2], (int)y[2]);

line((int)x[2], (int)y[2], (int)x[3], (int)y[3]);

line((int)x[3], (int)y[3], (int)x[0], (int)y[0]);

}

void init_obiect(int raza, int latura)

{

x[0] = x[3] = xc + raza - latura/2;

x[1] = x[2] = x[0] + latura;

Page 48: Prelucrare Grafică Asistată de Calculator

48

y[0] = y[1] = yc - latura/2;

y[2] = y[3] = yc + latura/2;

}

int main(void)

{

int i, n;

float c, s, xx, du, u;

int gdriver = DETECT, gmod, eroare;

initgraph(&gdriver, &gmod, "");

cout<<"Dati numarul de translatii n = "; cin>>n;

du = 2 * PI / n;

c = cos(du);

s = -sin(du); // = sin(-du), pentru rotatia in sens

trigonometric, deoarece axa y a ecranului este orientata

in jos

xc = getmaxx() / 2;

yc = getmaxy() / 2;

setbkcolor(BLUE); // culoarea fondului

setcolor(YELLOW); // culoarea de desenare

// initializeaza obiectul - adica patratul

Page 49: Prelucrare Grafică Asistată de Calculator

49

init_obiect(100,90);

for(u=0; u<2*PI; u+=du)

{

desen();

// se aplica translatia fiecarui varf al patratului

for(i=0;i<4;i++)

{

xx=x[i]; // variabila de lucru

x[i]=xx*c - y[i]*s + xc - xc*c + yc*s;

y[i]=xx*s + y[i]*c + yc - xc*s - yc*c;

}

// întarziere pentru a vizualiza deplasarea (rotaţia) aplicată asupra

obiectului

delay(200);

}

getch();

closegraph();

Page 50: Prelucrare Grafică Asistată de Calculator

50

4.2Transformări grafice 2D

4.2.1. Compunerea transformărilor

4.2.2. Coordonate omogene

4.2.3. Alte transformări grafice 2D

4.2.4. Transformări ale sistemului de coordonate

Page 51: Prelucrare Grafică Asistată de Calculator

51

4.2.1 Compunerea transformărilor

La un moment dat asupra unui obiect se pot aplica mai multe

transformări elementare cum ar fi:

pentru a simula deplasarea unui automobil pe o traiectorie

oarecare se afişeaza o secvenţă de imagini ale automobilului,

fiecare imagine obţinându-se din cea anterioară prin aplicarea

translaţiei, rotaţiei si scalării.

Dacă fiecarui punct al imaginii este supus în mod secvenţial

transformărilor elementare amintite va rezulta o viteză scazută a

mişcarii întregului obiect.

Pentru a depaşi acest obstacol trebuiesc puse la un loc două sau

trei transformări, astfel încât obiectul să se poate deplasa mai rapid,

prin unirea a două sau trei transformări elementare se obţin expresii

sub formă de matrice, care conţin transformările elementare.

Exemplu:

Rotaţia faţă de origine a unui punct P(x,y) se poate exprima sub

forma matriceală expresia, se poate scrie astfel:

Page 52: Prelucrare Grafică Asistată de Calculator

52

O scalare faţă de origine urmată de o rotaţie, în acest caz expresia

obţinută prin compunerea unei scalări cu o rotaţie este:

Dacă se înmulţesc cele două matrici (cea de rotaţie cu cea de

scalare) se obţine relaţia:

Va rezulta formula transformării compuse (𝑥′,𝑦′):

Page 53: Prelucrare Grafică Asistată de Calculator

53

4.2.2 Coordonate omogene

Transformările bidimensionale (translaţia, rotaţia şi scalarea) pot fi

reprezentate matricial în coordonate carteziene cu ajutorul matricilor

cu două coloane şi două linii.

O astfel de matrice nu poate fii scrisă pentru translaţie, lucru care

face ca transformările grafice să se exprime în coordonate omogene.

Un punct p(x,y) din plan se reprezintă în coordonate omogene

prin vectorul [𝑥0, 𝑦0,O], unde 𝑥0=valoarea lui x înmulţit cu O, iar

𝑦0=valoarea lui y înmulţit cu punctul O, iar "O" este un numar oarecare

de tip real.

Exemplu:

Se consideră un punct de coordonate omogene P(3,2), x=3, y=2. În

acest caz, vectorii vor fi, 𝑥0=3, 𝑦0=2, număr arbitrar=1.

Vectorul [a,b,c] în coordonate omogene cu c având valoarea

diferită de 0, reprezintă un punct din plan de coordonate [a/c,b/c].

Deci, vectorul [a,b,O], în care O ia valoarea 0, reprezintă un punct

de pe dreaptă situat în partea dreaptă la infinit (a*y-b*x=0).

Exemplu:

[1 0 0] reprezintă punctul de la infinit situat pe axa X pozitivă.

[0 -1 0] reprezintă punctul de la infinit situat pe axa y negativă.

[1 1 0], dreapta y=x, punctul este la infinit in direcţia [1 1].

În coordonate omogene cele trei transformări elementare

(translaţia, rotaţia şi scalarea), se pot exprima astfel:

Page 54: Prelucrare Grafică Asistată de Calculator

54

1.Translaţia:

2.Scalarea faţă de origine:

3. Rotaţia faţă de origine:

Page 55: Prelucrare Grafică Asistată de Calculator

55

4.2.3 Alte transformări grafice 2D (bidimensional).

1. Oglindirea (reflexie):

a) Oglindirea faţă de axa x-cilor.

b) Oglindirea faţă de axa y-cilor (coordonate carteziene(sus) si

jos(omogene)) le fel şi la punctul a.

Page 56: Prelucrare Grafică Asistată de Calculator

56

c)Oglindirea faţă de origine(carteziene+omogene).

d)Oglindirea faţă de dreapta y=x(in plan pozitiv).

Page 57: Prelucrare Grafică Asistată de Calculator

57

Oglindirea faţă de o dreaptă oarecare.

Aceasta se exprimă printr-o transformare compusă formată din

urmatoarele transformări elementare:

a) Translaţia se efectuează astfel încât dreapta să treaca prin origine.

b) Rotaţia faţă de origine care permite ca dreapta să se suprapună

peste una din axele principale.

c) Să se realizeze oglindirea astfel incât peste axa principală sa fie

suprapusă dreapta.

d) O rotaţie faţă de origine astfel încăt dreapta să nu se suprapună

peste axele principale

e) O translaţie la care dreapta să nu treacă prin origine.

Page 58: Prelucrare Grafică Asistată de Calculator

58

4. Forfecarea

Definiţie: Transformarea care produce distorsionarea obiectului

transformat poartă numele de forfecare.

Exemplu: Dacă forfecarea se aplică unui

pătrat va rezulta un paralelogram.

Forfecarea este caracterizată de:

factorul de forfecare de pe axa x-cilor;

factorul de forfecare de pe axa y-cilor;

Ambele numere sunt de tip real.

a) Forfecarea după axa x-cilor(y rămâne fix, se deformează x).

b) Forfecarea după axa y-cilor(x rămâne fix, se deformează y).

Page 59: Prelucrare Grafică Asistată de Calculator

59

Cele două relaţii, prima în coordonate carteziene şi cea de-a doua în

coordonate omogene.

c) Forfecarea în caz general (în care

pătratul se deformează atât faţă de

axa x-cilor cât şi faţă de axa y-cilor).

Cei doi factori de forfecare intervin în

ambele relaţii (la coordonatele

carteziene şi la cele matriceale).

Page 60: Prelucrare Grafică Asistată de Calculator

60

4.2.4 Transformări ale sistemului de coordonate

Dispunem de două sisteme de coordonate:

unul cu originea O şi cu axele x,y iar altul cu originea 𝑂′ şi axele

𝑥′, 𝑦′.

Fie un punct P situat în cele două sisteme căruia îi corespund

reprezentările:

(x,y) - corespunzător sistemului de coordonate xOy.

(x’,y’) - care corespund sistemului de coordonate x’O’y’.

Sistemul x’O’y’rezultă din transformarea sistemului xOy, astfel va

rezulta o transformare formată din relaţiile celor două reprezentari ale

punctului(x,y) respectiv (x’,y’).

A. Translaţia.

Sistemul de coordonate x’O’y’

rezultă prin translaţia sistemului xOy

cu o distanţă şi o direcţie dată de

vectorul de poziţie V.

v=tx*I+ty*J.

În cele două sisteme punctul P

are urmatoarele coordonate:

x’ = x - tx

y’ = y - ty

Page 61: Prelucrare Grafică Asistată de Calculator

61

B. Rotaţia faţă de origine.

Fie sistemul de coordonate

xoy şi sistemul de coordonate

x’O’y’ care rezultă din rotaţia cu

unghiul u al sistemului xOy.

În sistemul de coordonate

xoy, punctul P este reprezentat

prin ecuaţiile (coordonatele):

x’ = r * cos(t)

y’ = r * sin(t)

Pentru sistemul de coordonate x’O’y’ punctul P va avea

următoarele coordonate:

x’ = r * cos(t-u) = r * ( cos(t)*cos(u) + sin(t)*sin(u))

= x * cos(u) + y * sin(u)

y’ = r * sin(t-u) = r * ( sin(t )*cos(u) – cos(t)*sin(u))

= - x*sin(u) + y * cos(u)

Page 62: Prelucrare Grafică Asistată de Calculator

62

C. Scalarea faţă de origine.

Se formează un sistem de coordonate care are aceeaşi origine şi

aceeaşi orientare a axelor, sistem care se caracterizează prin unitaţi de

masură diferite, corespunzatoare axelor x şi y.

Unităţile noi de masură rezultă prin scalarea celor vechi cu factorii

de scalare 𝑠𝑥 , respectiv 𝑠𝑦 . În urma scalării punctului P în cele două

sisteme de coordonate vor rezulta coordonatele:

x’ = x * 1/sx

y’ = y * 1/sy

Dacă în sistemul de coordonate xoy, unitatea de masură este

metrul, iar în sistemul x’O’y’, unitatea de masură este milimetrul, atunci

factorul de scalare de pe, 𝑠𝑥 este egal cu factorul de scalare de pe axa

y-cilor𝑠𝑦 au valoarea 1/1000.

Exemplu:

Fie un punct P de coordonate x=10m, y=20m, va rezulta următorul

sistem scalat de coordonate:

x’=10*1000=10000 mm

y’=20*1000=20000 mm

Page 63: Prelucrare Grafică Asistată de Calculator

63

D. Oglindirea faţă de o axă.

Sistemul x’O’y’rezultă din oglindirea sistemului xoy, faţă de axa ox,

respectiv faţă de axa oy. Între cele două sisteme de coordonate, pentru

acelaşi punct P se obţin urmatoarele relaţii:

a)Oglindirea faţă de axa Ox, x’ = x.

y’= -y.

b)Oglindirea faţă de axa Oy, x’= -x.

y’ = y.

Din relaţiile de mai sus se observă că orientarea axelor şi stemului

de coordonate se schimbă.

Page 64: Prelucrare Grafică Asistată de Calculator

64

Transformări grafice3D (tridimensionale)

5Transformări grafice 3D

5.1. Translaţia

5.2. Scalarea

5.3. Rotaţia

5.4. Transformări inverse

5.5. Forfecarea

5.6. Oglindirea faţă de un plan al sistemului de

coordonate

5.7. Compunerea transformărilor tridimensionale

5.8. Rotaţia în jurul unei axe oarecare

5.9. Oglindirea faţă de un plan oarecare

Page 65: Prelucrare Grafică Asistată de Calculator

65

5. Transformari grafice 3D.

5.1. Translaţia.

Transformarea grafică 3D a unei imagini este reprezentată de

urmatoarele relaţii:

punctul P(x,y,z), din care în urma transformărilor grafice 3D, va

rezulta punctul 𝑃′ de coordonate (x’,y’,z’).

Cele trei coordonate (x’,y’,z’), sunt descrise de urmatoarele relaţii:

x’ = F1(x,y,z)

y’ = F2(x,y,z)

z’ = F3(x,y,z)

Asupra imaginii 3D, pot fi realizate următoarele transformări:

1. Translaţia

2. Scalarea

3. Rotaţia

4. Oglindirea

5. Forfecarea

6. Proiecţia

Dacă reprezentarea se realizează în coordonate omogene, punctul

din spaţiul tridimensional se reprezintă prin vectorul de poziţie

Page 66: Prelucrare Grafică Asistată de Calculator

66

[𝒙𝒘 𝒚𝒘 𝒛𝒘 𝒘 ],. Parametrul w are o valoare reală, coordonatele

omogene ale punctului sunt:

x = xw/w

y = yw/w

z = zw/w

w ≠ 0

1. Matricile de transformare.

O matrice de transformare este

generată din patru linii cu patru coloane, iar

într-o reprezentare a coordonatelor

omogene are urmatoarea formă:

Această reprezentare poate fi sectionată sub

urmatoarea formă:

a) Matricea cu trei linii şi trei coloane, cuprinde transformările:

de scalare locală

forfetare

oglindire

rotaţie

Page 67: Prelucrare Grafică Asistată de Calculator

67

b) Matricea cu o linie şi trei coloane, cu ea se poate realiza operaţia de

translaţie.

c) Matricea cu trei linii şi o coloană, cu ea se poate realiza

transformarea de proiectare şi anume proiectarea de perspectivă.

d) Matricea cu o linie şi cu o singura coloană, permite transformarea

generală prin scalare.

În format 3D, o imagine poate fi transformată geometric prin metoda

matricială descrisă cu urmatoarea relaţie:

[ x’ y’ z’ 1 ] = [ x y z 1 ][ M ]

1.Translaţia reprezintă o transformare în urma careia obiectul se

deplasează într-o altă poziţie după o direcţie dată. Se consideră punctul

P de coordonate (x,y,z). Punctul este situat în spaţiu, iar prin

translaţie/deplasare el se poziţionează în punctul de coordonate (x', y',

z'). În acest caz, coordonatele punctului sunt:

x' = x + tx

y’ = y + ty

z' = z + tz

Aceste coordonate în format matricial au urmatoarea formă:

[x’ y’ z’ 1] = [x y z 1] [T]

Page 68: Prelucrare Grafică Asistată de Calculator

68

Din această relaţie rezultă matricea 3D a translaţiei sub

urmatoarea formă:

Forma grafică:

5.2. Scalarea faţă de origine(O).

Un obiect poate fi mărit sau micşorat prin fenomenul de scalare.

Scalarea este caracterizată prin nişte valori corespunzătoare axei

X(cilor), în acest caz numindu-se factor de scalare pentru axa X, şi

respectiv pentru axa Y(cilor), factorul de scalare pentru axa Y.

Se consideră punctul P de coordonate (x,y,z), care în urma scalării

se transformă în punctul P(prim) de coordonate (x’y’ z’) In urma

procesului de scalare, coordonatele noului punct sunt date de

următoarele relaţii:

x' = sx * x

y’ = sy * y

Page 69: Prelucrare Grafică Asistată de Calculator

69

z’ = sz * z

Aceleaşi relaţii pot fi scrise sub formă matricială astfel:

[ x’y’z’1 ] = [ x y z 1 ][ S ]

Din aceasă relaţie rezultă că matricea

de scalarecare are urmatoarea formă:

Sub formă globală scalarea se reprezintă

prin urmatoarea matrice:

Fie punctul P de coordonate (x,y,z) care prin procesul de scalare

globală se transformă în urmatoarea relaţie:

[ x y z 1 ][ S ] = [ x y z s ] = [ x/s y/s z/s 1 ] = [ x’ y’ z’ 1 ]

Ipoteze:

1.Dacă factorul de scalare este subunitar(s<1), va rezulta o mărire a

vectorului de poziţie.

2.Dacă factorul de scalare este supraunitar(s>1), va rezulta o micşorare

a vectorului de poziţie.

Page 70: Prelucrare Grafică Asistată de Calculator

70

Un efect similar rezultă printr-o

scalare locală, care poate fi

reprezentate prin urmatoarea relaţie:

Exemplu: Fie un cub C, care este repzentat de urmatoarea

matrice, care reprezintă coordonatele vârfului.

Page 71: Prelucrare Grafică Asistată de Calculator

71

După realizarea scalării cu factor de scalare diferiţi pe cele trei axe, va

rezulta o figură sub formă paralelipipedică, la care coordonatele

vârfurilor sunt date de punctele primelor trei coloane ale matricei

rezultate.

Matricea pentru scalarea globală este reprezentată sub forma:

Page 72: Prelucrare Grafică Asistată de Calculator

72

În urma procesarii va rezulta o formă geometrică sub forma unui cub.

5.3. Rotaţia.

3.1. Rotaţia în jurul unui axe a sistemului de coordonate. În urma

procesului de rotaţie, în jurul axei X coordonatele vectorului de poziţie

nu se schimbă. În urma rotaţiei forma geometrică apare în plan

perpendicular pe axa X.

Similar acest proces se repetă pentru axele X si Z, vectorul de

poziţie nu se schimbă, iar rotaţiile sunt perpendicular pe axa Y,

respectiv Z.

Fie rotaţia in jurul axei X, cu un

unghi alfa. Matricea

transformăriloreste sub urmatoarea

formă:

Page 73: Prelucrare Grafică Asistată de Calculator

73

Matricea de rotaţie in jurul axei Z cu unghiul beta:

Matricea de rotaţie in jurul axei Z cu unghiul beta:

Page 74: Prelucrare Grafică Asistată de Calculator

74

În urma procesului de rotaţie, va rezulta o formă geometrică

paralelipipedică, la care un vârf este în origine, iar laturile paralele cu

axele de coordonate.

Considerăm paralelipipedul cu laturile paralele cu axele sistemului

de coordonate şi un vârf în orgine.

Rotaţie

în jurul axei x

cu unghiul

𝛼=900:

Page 75: Prelucrare Grafică Asistată de Calculator

75

Rotaţie în jurul axei y cu unghiul β =900:

Rotaţie în jurul axei z cu unghiul =900:

Page 76: Prelucrare Grafică Asistată de Calculator

76

5.4. Transformãri inverse

Toate matricele de transformare au inverse:

5.5. Forfecarea

Dacă (x, y, z) sunt coordonatele unui punct Pdin spaţiu, prin forfecare

el este transformat în punctul de coordonate (x', y', z'), unde:

x’=x+y*d+z*g

y’=x*b+y +z*i

z’=x*c+y*f+z

sau, în formă matriceală:[ x’ y' z '1 ]’ = [ x y z 1] [F]

Matricea de forfecare este:

Page 77: Prelucrare Grafică Asistată de Calculator

77

5.6. Oglindirea faţă de un plan al sistemului de coordonate.

În cazul oglindirii faţă de planul xy, se inversează doar coordonata z,

coordonatele x şi y rămânând neschimbate.

Astfel, matricea transformării de oglindire faţă de planul xy este:

Matricea oglindirii faţă de planul xz este:

Page 78: Prelucrare Grafică Asistată de Calculator

78

5.7. Compunerea transformărilor tridimensionale.

Matricea corespunzătoare transformării compuse se obţine prin

înmulţirea matricelor transformărilor elementare.

Deoarece înmulţirea matricelor nu este comutativă, este importantă

ordinea în care se aplică aceste transformări.

Matricea de transformare cea mai apropiată vectorului linie

corespunde primei transformări care se aplică în timp ce matricea de

transformare cea mai depărtată este ultima care se aplică.

Matematic aceasta se exprimă prin:[V] [M] =[V] [M1] [M2]

[M3]....[Mn] unde [ Mi ] poate fi orice matrice de transformare

elementară:

1. scalare

2. forfecare

3. translaţie

4. rotaţie

5. oglindire

6. proiecţie

Page 79: Prelucrare Grafică Asistată de Calculator

79

5.8. Rotaţia în jurul unei axe oarecare

Axa oarecare de rotaţie (d) se specifică printr-un punct A(xo,yo,zo) şi

un vector direcţie C = cx * i + cy * j + cz* k, unde cx, cy, cz sunt cosinus şi

directori.

Transformarea de rotaţie cu un unghi în jurul axei (d) se compune

din:

1. Translaţie, altfel încât punctul A să ajungă în originea sistemului de

coordonate.

2. Alinierea vectorului C cu una din axele sistemului de coordonate.

3. Rotaţia cu unghiul în jurul axei la care s-a făcut alinierea.

4. Inversa transformării de la pasul 2.

5. Translaţia inversă în punctul 1.

5.9. Oglindirea faţă de un plan oarecare

Considerăm planul de oglindire specificat printr-unpunct,

P(x0,y0,z0) şi vectorul normală la plan, N.

O procedură de obţinere a transformării deoglindire faţă de planul

dat este următoarea:

1.Translaţie astfel încât punctul P(x0,y0,z0) din plan să ajungă în originea

sistemului de coordonate.

Page 80: Prelucrare Grafică Asistată de Calculator

80

2. Alinierea vectorului normală la plan, N, la axa z pozitivă. Planul de

oglindire devine astfel planul z=0.

3. Oglindirea faţă de planul z=0.

4. Transformarea inversă alinierii de la pasul 2.

5. Translaţia inversă celei de la pasul 1.

Matricea transformării de oglindire faţă de un plan oarecare se

compune din produsul următoarelor matrice:

[M] = [T] [AN,z] [Oz] [AN,z]-1 [T]-1

Unde:

[ T ] - reprezintă matricea de translaţie

[ AN,z] - reprezintă matricea de aliniere a vectorului normală N cu axa z

pozitivă

[ Oz ] - reprezintă matricea de oglindire faţă de planul z=0

[ AN,z ]- 1 - reprezintă matricea de aliniere inversă

[T]-1 - reprezintă translaţia inversă.