Sunteți pe pagina 1din 10

UNIVERSITATEA ”VASILE ALECSANDRI” BACAU

FACULTATEA DE STIINTE

SPECIALIZAREA MASTER ANUL I SEM II - INFORMATICA


APLICATA IN STIINTE SI TEHNOLOGIE

ALGORITMI GEOMETRICI SI APLICATII 3D

NUME MASTERANT: TITULAR CURS:

Mares Liviu – Gabriel Conf.univ.dr. Valer Niminet


INTRODUCERE

Calculatoarele sunt din ce în ce mai mult folosite pentru a rezolva pe scala largă
probleme care sunt inerent geometrice.
Obiectele geometrice cum ar fi punctele, liniile şi poligoanele formează bazele unei
varietăţi largi de aplicaţii importante în teoria algoritmilor. Astfel se pot identifica mai multe
domenii ale informaticii care se ocupǎ cu rezolvarea problemelor de naturǎ geometricǎ, cum
ar fi reprezentările grafice, procesarea imaginilor, robotica, fabricarea şi proiectarea asistată
de calculator, dinamica fluidelor şi „geometria” bazelor de date, pentru a numi câteva dintre
ele.
Unul dintre scopurile Algoritmicii geometrice este de a oferi instrumentele de bazǎ
necesare din care programatorii pot sǎ-şi construiască apoi aplicaţiile. S-a făcut un progres
semnificativ în acest sens, dar încă e departe de a fi pe deplin realizat. Algoritmii geometrici
sunt importanţi de asemenea în studiul modelelor de analiză ale obiectelor fizice, începând de
la clădiri şi automobile până la marea categorie a circuitelor integrate.
Un proiectant care lucrează cu un obiect fizic are o intuiţie geometrica care este greu
de implementat în reprezentarea pe calculator a obiectului.
Termenul de Geometrie computaţională a fost utilizat prima dată de Marvin Minsky în
cartea sa “Perceptroni”, care se referea la recunoaşterea formelor (pattern recognition) şi de
asemenea a fost des folosit la descrierea algoritmilor pentru manipularea curbelor şi
suprafeţelor. Totuşi, în mare măsură utilizarea sa curentă este asociată subdomeniului teoriei
algoritmilor 10 care studiază proiectarea şi analiza algoritmilor eficienţi pentru probleme
derivate din geometrie. În acest sens am preferat să folosim termenul de Algoritmică
geometrică pentru acest domeniu, mai potrivit ca descriere decăt „geometrie computaţională”.

COMENZILE MATLAB FOLOSITE IN


APLICATII 2D SI 3D

Matlab reprezintă un limbaj specializat pentru dezvoltarea aplicatiilor tehnice, ce


include facilităti destinate proiectării asistate de calculator.
Programele de tip CAD ( Computer Aided Design) sunt in zilele
noastre tot mai utilizate in domenii diverse de activitate de la cele de proiectare in constructii,
arhitectura, etc.
Matlab este un produs al companiei The Mathworks, Inc si lucreazǎ sub Windows, Unix,
Linux, sau Machintosh.
Versiunea cea mai recentǎ este versiunea 9.8.
O versiune completǎ a acestui mediu de calcul cuprinde module specifice, numite
tool-box-uri, care permit rezolvarea unor probleme specifice din diferite domenii de lucru :
statisticǎ, inginerie, arhitecturǎ, matematicǎ, fiind astfel un mijloc de investigatie numericǎ
performant.
Aceastǎ colectie de module cuprinde: Simulink, DSP, Control System, SimMechanics,
SimPowerSystems, Data Acquisition, Fuzzy Logic, Image Processing, Partial Differential
Equations, Neural Network, Optimization, System Identification, Financial, Statistics,
Communications, Database, Virtual Reality., etc.
Matlab reprezintă si un mediu util de rezolvare a problemelor din domeniul
matematicii, in special a celor din domeniul numeric in care de multe ori o vizualizare grafică
ar imbunătăti rezultatul experimentului numeric.
Matlab ofera o gama larga de instrumente care rezolva probleme de natura
geometrica. Convex hull, triangulatiile Delaunay sau diagramele Voronoi sunt probleme
pentru care acest limbaj ofera comenzi si functii predefinite pentru a fi rezolvate.

Ce este Matlab?

După cum sugerează si numele, Matlab(Matrix Laboratory) este destinat in primul


rand lucrului cu matrici si a problemelor care implică calcul matriceal : rezolvarea de sisteme
de ecuatii, calculul vectorilor si valorilor proprii, etc, oferind si facilităti privind
reprezentările grafice ce au la bază date structurate in matrici de diverse dimensiuni. Matlab
este un sistem interactiv, al carui element de baza este o matrice care nu trebuie specificata.
Astfel un vector este o matrice cu o linie sau o coloana iar scalarii reali sau complexi sunt
interpretati ca matrici 1x1. Aceste obiecte sunt definite in timpul lucrului in Matlab si se
numesc variabile.
Datorita facilitatilor sale extraordinare de vizualizare grafica softul se utilizeaza foarte
eficient si in domeniul geometriei computationale fiind in acelasi timp util si usor de folosit
de catre cei care studiaza aceasta disciplina. Astfel Matlab pune la dispozitia utilizatorului
functii si comenzi specifice de reprezentari a curbelor si suprafetelor din domeniul geometriei
computationale.
Lucrarea imbina intr-un mod util rezultate teoretice din domeniu cu aplicatii intr-un
soft performant si de actualiate.
Matlab lucrează fie in modul linie de comanda, situatie in care fiecare linie este prelucratǎ
imediat, rezultatele putand fi afisate, fie cu programme (mai multe instructiuni Matlab cu
posibilitatea apelǎrii altor fisiere de acelasi tip si a apelǎrii
recursive ) continute in fisiere numite fisiere-M (<< M-files >>) ce auextensia .m .
Dupǎ lansarea aplicatiei Matlab va aparea fereastra principalǎ Matlab, din care pot fi
deschise apoi alte ferestre supervizate de Matlab. La variantele mai avansate (6,7) alǎturi de
fereastra de comandǎ (Command Window), mai pot apǎrea implicit Fereastra Command
History, ce permite memorarea, vizualizarea, editarea si relansarea functiilor utilizate
anterior, fereastra Lunch Pad, care permite lansarea uneltelor si accesarea documentatiei
Matlab. Alte ferestre care nu apar implicit mai pot fi
- fereastra Current Directory, ce controleazǎ fisierele Matlab
- fereastra Help
- fereastra Workspace unde se vizualizeazǎ si modificǎ continutul spatiulu de lucru

Command Window este fereastra principalǎ de comunicare cu utilizatorul si permite


lansarea de functii si comenzi Matlab. Dacǎ doriti modificarea proprietǎtilor acestei ferestre
selectati Preferences din meniul File al Matlab Desktop.
Programele create in Matlab pot fi
- fisiere script care sunt fisiere cu comenzi Matlab
- fisiere function
Pentru crearea unui fisier .m selectati File- New- M-file din meniul Matlab Desktop.
Pentru rularea unui program creat in Matlab e necesară doar tastarea comenzii cu numele
fisierului cu extensia .m in fereastra de comandă.
Existenta ferestrei de comanda face din Matlab un mediu interactiv deosebit de util in
rezolvarea de aplicatii diverse.
Astfel dupǎ tastarea comenzilor in dreptul prompter-lui din fereastra de comandǎ,
calculele se vor efectua la actionarea tastei Enter. La nivelul cel mai de jos, Matlab poate fi
folosit ca si calculator de buzunar.
O caracteristică a Matlab-lui este cea a existentei spatiului de lucru in care se pot
păstra si regăsi variabilele definite si valori ale acestora calculate prin comenzi sau functii
Matlab.
Fisierele script au proprietatea că după apelarea si executia lor, variabilele răman in
spatiul de lucru.
Fisierele function au următoarea formă:

function[parametri_iesire] = nume_funcŃie[parametri_intrare].

Aceste fisiere au proprietatea că după executarea lor, variabilele interne nu răman in zona de
memorie a spatiului de lucru, ci doar cele de iesire.
Programele create in Matlab se scriu cu un editor de text si au extensia .m.
Functiile recunoscute de acest limbaj sunt grupate in toolbox-uri specializate pe categorii de
probleme din domenii diverse de activitate. O listare a acestor categorii si a functiilor
corespunzatoare poate fi facută cu usurintă utilizand comanda help in fereastra de comanda.
>> help
[lista cu categoriile de functii existente]
Dacă după comanda help se tipareste numele exact al comenzii sau functiei care ne
intereseazǎ, atunci se vor tipari informatiile corespunzǎtoare acestora existente in meniul help
al mediului Matlab. De asemenea dacǎ sunteti conectat la Internet aveti si posibilitatea de a vi
se oferi ajutor online. Dacǎ dupǎ help veti tipǎri numele unui director atunci , atunci se vor
afisa fisierele continute in directorul specificat .
La apelare nu este necesar sǎ se scrie intreaga cale a directorului, ultima componentǎ
este suficientǎ.
Matlab utilizeazǎ deasemenea cateva functii de control general :

• what- listeazǎ fisierele *.m, *.mat si *.mex din directorul curent ;


• type- listeazǎ fisierul m, mentionat ;
• lookfor- returneazǎ numele fisierelor care au in prima linie a help-lui (linia H1) cuvintele
precizate ca argument ;
• which- returneazǎ calea in care este localizat un fisier sau o
functie Matlab ;
• who- listeazǎ variabilele curente din memorie ;
• whos- listeazǎ variabilele curente, dimensiunile lor, precum si tipul acestora (reale sau
complexe) ;
Cel mai usor mod de a invǎta Matlab este de a-l experimenta singuri si astfel să vă convingeti
singuri de flexibilitatea si usurinta de a lucra cu acest mediu interactiv.

Calcule simple in Matlab. Vectori si matrice

Sectiunea oferă o introducere in modul de lucru al Matlab-lui cu numere, vectori,


matrici si operatii care se pot realiza cu acestea.
Matlab oferă in primul rand posibilitatea realizarii operatiilor aritmetice cu vectori, matrici
sau scalari dar si altor operatii specializate pentru lucrul cu matrici uni sau bidimesionale.
Daca presupunem cǎ a si b sunt doua numere intregi ce pot primi diverse
valori, Matlab poate realiza operatiile standard aritmetice cu aceste valori :
» a =5;
» b =12;
» a+b
ans =
17
Variabila ans se creeazǎ in momentul in care expresiei nu ii este
asociatǎ nici o variabilǎ.
» x=sin(2)
x=
0.9093

In Matlab existǎ cateva variabile si constante speciale, ale cǎror nume e bine sǎ nu le
intrebuintǎm in alte asocieri de variabile. O parte din acestea ar fi :
• ans- variabilǎ creatǎ automat, in care este returnat rezultatul unui calcul, atunci cand
expresia nu a avut asignat un nume ;
• eps- variabilǎ permanentǎ in care este memoratǎ eroarea relativǎ pentru calculele efectuate
in virgulǎ mobilǎ. Valoarea implicitǎ este eps=2.2204e-016, dar poate fi redefinitǎ la orice
altǎ valoare ;
• pi- variabilǎ permanentǎ care are asignatǎ valoarea
3.14159265358 ;
• i = −1 - variabilǎ folositǎ pentru introducerea numerelor
complexe ;
• j = −1 - alternativǎ la utilizarea nitǎŃii imaginare i;
• inf- variabilǎ folositǎ pentru reprezentarea lui plus infinit in artitmetica IEEE (rezultat al
impǎrŃirii la zero) ;
• NaN- variabilǎ folositǎ pentru reprezentarea lui Not-a-
Number, In artimetica IEEE, rezultat al impǎrtirii nedefinite
0.0/0.0 ;
• nargin- variabilǎ permanentǎ pentru testarea numǎrului de argumente de intrare ce se
introduc pentru apelarea unei functii ;
• nargout- variabilǎ permanentǎ pentru testarea numǎrului de argumente de iesire ale unei
functii ;
• realmax- reprezintǎ cea mai mare valoare pozitivǎ in virgulǎ mobilǎ care poate fi folositǎ in
calcule, respectiv 1.7977e+308 ;
• realmin- reprezintǎ cea mai micǎ valoare pozitivǎ in virgulǎ mobilǎ care poate fi folositǎ in
calcule, respectiv 2.2251e- 308 ;
Numele de variabile si funcŃii au ca prim caracter urmate de litere, cifre sau liniutǎ de
subliniere si pot fi formate din maxim 19 caractere. Matlab face deosebirea dintre litere mari
si litere mici.
Matlab suportǎ si calcule cu numere complexe.
» (-1)^0.25
ans =
0.7071 + 0.7071i
unde i reprezintǎ −1 , partea imaginarǎ.
» 2-3i
ans =
2.0000 - 3.0000i

Reprezentarea grafică a curbelor si suprafetelor

Reprezentarea 2D

O problema importantă a lucrării de fată o reprezintă vizualizarea tipurilor de curbe


sau suprafete tratate intr-o manieră cat mai simplă de realizat dar si cat mai performantă.
Unul din avantajele lucrului cu Matlab este cǎ acest mediu oferă posibilităti diverse de
reprezentare grafică a datelor intr-un mod simplu si eficient bidimesional sau tridmensional.
De multe ori o reprezenatre grafică corectă poate duce la solutionarea partială a problemei.
Matlab oferǎ urmǎtoarele functii pentru afisarea vectorilor de date sub formǎ graficǎ :
plot- reprezintǎ garfice in coordonate liniare ;
loglog- reprezintǎ grafice in coordonate logaritmice ;
semilogx- reprezintǎ grafice intr-un sistem in care axa x este scalatǎ logaritmic, iar axa y
liniar ;
semilogy- reprezintǎ grafice intr-un sistem in care axa y este scalatǎ logaritmic, iar axa x
liniar ;
fill- reprezintǎ grafic poligoane ;
Atunci cand domeniile datelor ce se doresc a fi reprezentate pe axa y sunt mult diferite sau
cand se doreste reprezentarea graficǎ in acelasi sistem de axe a unor functii cu axele y scalate
diferit, ste utilǎ functia plotyy. Se poate folosi una din sintaxele :
• plotyy (x1,y1,x2,y2)- traseazǎ grafic funcŃia y1=f(x1) cu axa y plasatǎ la marginea stangǎ
a zonei delimitate de sistemul de axe si funcŃia y2=f(x2) cu axay plasatǎ in dreapta ;
• plotyy (x1,y1,x2,y2, fun) – permite specificarea modului de scalare a axelor, deci a
funcŃiei folosite la reprezentǎri, prin argumentul fun.
Acesta trebuie sǎ fie un sir de caractere ce contine numele unei functii care acceptǎ sintaxa
fun(x,y).
Exemplu << plot>>, <<loglog>>, <<semilogx>>, <<semilogy>>.

Graficul unui set arbitrar de date asociate unei variabile y poate fi generat utilizand comanda
plot(y). Sa consideram exemplul unor date care reprezinta cubul numerelor cuprinse in
intervalul [-5, 4] cu pasul 0.1. Aceste date pot fi generate direct folosind comanda
la prometer:
>>y = (-5:0.1:4).^3;
>>plot(y);
O alta variantă a codului de mai sus o reprezintă si comenzile:
>>x = -5:0.1:4;
>>y = (x).^3;
>>plot(x,y);
>> title('graficul functiei x^3')
Reprezentarea obiectelor 3D predefinite

În MATLAB exist_ func_ii predefinite pentru reprezentarea anumitor corpuri în


spatiu, cum ar fi, sfera si cilindru.
Generarea unei sfere cu raza egala cu unitatea se realizeaza cu functia sphere, care
poate avea una din sintaxele urmatoare:
sphere(n)
sphere
[X,Y,Z] = sphere(n)
Functia sphere(n) reprezinta grafic suprafaaa unei sfere formata din n×n suprafete
elementare.
Functia sphere, fara argumentul n, presupune utilizarea valorii implicite pentru acesta (n=20).
Functia [X,Y,Z] = sphere(n) creeaza trei matrice X, Y _i Z, cu coordonatele sferei
unitate, care vor fi utilizate ulterior ca argumente ale functiei surf sau mesh pentru
reprezentarea grafica a suprafetei sferei.
Generarea unui cilindru (sau forme geometrice derivate din acesta), cu
înaltimea egala cu unitatea, se realizeaza cu functia cylinder, prin una dintre
sintaxele:
[X,Y,Z] = cylinder
[X,Y,Z] = cylinder(r)
[X,Y,Z] = cylinder(r,n)
cylinder(...)
Când este apelata cu argumentele de iesire X, Y si Z, functia cylinder nu are nici un efect
grafic, ci se creeaza matricele cu coordonatele necesare reprezentarii grafice ulterioare cu una
din functiile mesh sau surf.
În cazul în care se specifica argumentele de intrare, în cazul general notate cu r si n, se
particularizeaza aspectul obiectului grafic, fiind posibila astfel si reprezentarea grafica a altor
corpuri derivate dintr-un cilindru: conuri, piramide, trunchiuri de con, trunchiuri de piramida
sau alte corpuri obtinute ca o dispunere succesiva a astfel de corpuri, de-a lungul axei z.
Prin argumentul r (vector sau scalar), se pot specifica razele cercurilor circumscrise
poligoanelor regulate care formeaza bazele formelor geometrice 3D ce compun obiectul
grafic de tip surface, dispuse consecutiv în intervalul de o unitate al axei Z. Cilindrul are 20
de puncte la distante egale în jurul circumferintei sale.
Daca r este un vector cu m elemente, vor exista (m-1) astfel de forme geometrice 3D.
Daca r este un scalar, va fi generata o singura forma geometrica si va fi considerata
aceeasi valoare a razei pentru baza inferioara si baza superioara. Valoarea implicita a
argumentului r este 1.
Argumentul n, întotdeauna un scalar, specifica numarul de laturi ale poligoanelor
regulate care formeaza bazele formelor geometrice 3D. Valoarea implicita a acestuia este 20.
Sintaxele fara argumente de intrare sunt echivalente specificarii valorilor implicite ale
acestora.
Sintaxele fara argumente de iesire reprezinta grafic, în fereastra figura curenta, cu
functia surf, obiectul de tip suprafata cu aspectul particularizat prin argumentele de intrare
(daca exista).

Mai sus este generată o suprafată binecunoscută peaks, folosind comanda surf.
Să considerăm cazul reprezentării unei functii de două variabile func(x,y), functie creată intr-
un fisier Matlab.

function z=func(x,y)
z=sin(x).*cos(y)+1;

Utilizand următoarele comenzi in fereastra de comandă a Matlabului obtinem reprezentarea


grafică a functiei func(x,y)

» x=linspace(0,pi,20);
» y=linspace(-pi,pi,20);
» [xx,yy]=meshgrid(x,y);
» zz=func(xx,yy);
» mesh(xx,yy,zz)
Bibliografie

- „Algoritmi geometrici.Aplicatii 3D.” - Conf.univ.dr. Valer Niminet


- „Algoritmica geomerica” – Boldea Costin-Radu
- „Reprezentari grafice în spatiul tridimensional (3D)” – Editura Universitara
Craiova – Universitaria 2013

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