Documente Academic
Documente Profesional
Documente Cultură
Informatica
Geometrie
Computationala
(Curs)
Sandica Robert
Reprezentare grafica:
Programul aferent :
Programul aferent :
t = 0: 0.01 :1 ;%vectorul t cu pas de 0.01
x=2*t.^2+1;%creeam punctul x
y=t-1;%creeam punctul y
subplot(3,1,1)%creeam in figura 3 subfigura 1,1
plot(t,x)%reprezentam prin plot grafic t,x
subplot(3,1,2) )%creeam in figura 3 subfigura 1,2
plot(t,y) )%reprezentam prin plot grafic t,y
subplot(3,1,3) )%creeam in figura 3 subfigura 1,3
plot(x,y) )%reprezentam prin plot grafic x,y
Reprezentare grafica
Programul afferent:
t=-10:0.01:100;
x=2*t./(1+t.^2);
y=(1-t.^2)./(1+t.^2);
plot(x,y)
Programul aferent :
t=0:0.0001:1;%vectorul t cu pas de 0.0001
m=[6;0]*t+ [-9;-3]*t.^2+[4;4]*t.^3%punctul m care serveste drept abscisa si ordonata
plot(m(1,1:end),m(2,1:end))%reprezentarea grafica a lui m
Programul aferent :
t=0:0.01:20;
x=cos(t) %punctul x care serveste drept abscisa dat de functia cos
y=sin(t) %punctul y care serveste drept ordonata dat de functia sin
z=t%punctul z care este dat de pasul lui t
plot3(x,y,z)%reprezentarea grafica a celor 3 puncte cu ajutorul plot
Curs4
Considerente teoretice: Polinoamele lui Bernstein
n
n
(1 t ) n i t i ; t [0,1]; i 0,1,..., n
i
Bi (t )
Polinoamele definite prin relaiile:
coeficieni binomiali;
n.
n
n!
i!( n i )!
i
(cu
n
c ni
i
Date de intrare: programul diferite valori a punctelor de control obinet diferite tipuri de curbe:
1)
2)
3)
4)
5)
6)
7)
Date de iesire : datele de iesire sunt punctele de control calculate prin folmula
n
n i i
(1 t ) t ; t [0,1]; i 0,1,..., n
i
Bi (t )
n
bezier de grad 3, cu ajutorul crora vom reprezenta grafic curba utiliznd funcia plot.
Reprezentare grafica:
1)
2)
3)
4)
5)
6)
7)
Programul aferent :
t=0:0.01:1; % parametrul
B0 = (1-t).^3;%punctul B0 creat prin formula pol. Berstain
B1=3*t.*(1-t).^2; %punctul B1 creat prin formula pol. Berstain
B2=3*(1-t).*t.^2; %punctul B2 creat prin formula pol. Berstain
B3=t.^3; %punctul B3 creat prin formula pol. Berstain
% punctele de control
% pentru curba bezier concava
b=[0 3 6 9;0 6 6 0];%matricea punctelor x,y a punctelor de control B0 B1 B2 B3
B=[B0;B1;B2;B3];%matricea punctelor de control
F=b*B;%
hold on;
plot(b(1,:),b(2,:));
plot(F(1,:),F(2,:),'r-');
hold off;
Programul aferent :
%title('Polinomul de interpolare Bernstein a functiei exponentiale')
x=0:0.01:1;%vectorul x care serveste pentru a creea punctele de control
B1=(1-x).^3;%punctul de control B1 dat de fomula aferenta
B2=3*(1-x).^2.*x; %punctul de control B2 dat de fomula aferenta
B3=3*(1-x).*x.^2; %punctul de control B3 dat de fomula aferenta B4=x.^3;
f1=1;%functia f1 care serveste drept coeficient al punctului de control b1
f2=exp(1/3); %functia f2 care serveste drept coeficient al punctului de control b2
f3=exp(2/3); %functia f3 care serveste drept coeficient al punctului de control b3
f4=exp(1); %functia f4 care serveste drept coeficient al punctului de control b4
Bnf=f1*B1+B2*f2+B3*f3+B4*f4;
E=exp(x);%se face exponentiala x
plot(x,Bnf,x,E,'r')%afisam cu rosu punctul x matricea Bnf functia exponentiala
10
Programul aferent :
OBSERVATIE acest program contine elemente comentate mai sus va rog consultati
programele de mai sus
%title('Baza Bernstein si baza monomiala')
t=0:0.01:1;
B1=(1-t).^3;
B2=3*(1-t).^2.*t;
B3=3*(1-t).*t.^2;
B4=t.^3;
subplot(4,2,1)
plot(t,B1)
subplot(4,2,3)
plot(t,B2)
subplot(4,2,5)
plot(t,B3)
subplot(4,2,7)
plot(t,B4)
subplot(4,2,2)
plot(t,1)
subplot(4,2,4)
plot(t,t)
subplot(4,2,6)
plot(t,t.^2)
subplot(4,2,8)
plot(t,t.^3)
hold off
Considerente teoretice:in continuare vom reprezenta patru curbe cu ajutorul pol berstein
Date de intrare:sunt punctele B0 B1B2 B0 B3
Date de iesire : B0 B1B2 B0 B3 care sunt aflate din functiile lor aferetne
Reprezentare grafica:
11
Programul aferent :
OBSERVATIE:acest program contine elemente comentate mai sus va rog consultati
progrmaele de mai sus
%title('Baza Bernstein si baza monomiala')
t=0:0.01:1;
B1=(1-t).^3;
B2=3*(1-t).^2.*t;
B3=3*(1-t).*t.^2;
B4=t.^3;
subplot(2,1,1)%creeam o figura 2x2 si folosim
hold on
plot(t,B1,'b') %reprezentam grafic pasul t si
plot(t,B2,'r') %reprezentam grafic pasul t si
plot(t,B3,'g') %reprezentam grafic pasul t si
plot(t,B4,'k') %reprezentam grafic pasul t si
hold off
subplot(2,1,2)%folosim figura 1,2
hold on
plot(t,1.01,'b') %reprezentam grafic pasul t
plot(t,t,'r') %reprezentam grafic pasul t
plot(t,t.^2,'g') %reprezentam grafic pasul t
plot(t,t.^3,'k') %reprezentam grafic pasul t
hold off
sufigura 1,1
punctul
punctul
punctul
punctul
B1
B2
B3
B4
cu
cu
cu
cu
albastru
rosu
verde
negru
Considerente teoretice:curba bezier interactiva exte o curba bezier care poate avea
orice fel de poligon de control pentru ca nu are o anume matrice aferenta punctelor de
control matricea se introduce cu ajutorul comenzii ginput si serveste drept citirea
punctelor de control in continuare vom exemplifica spusele de mai sus
Date de intrare: punctele selctate cu mousul citite de comanda ginput
Date de iesire :punctele de control B0 B1 B2 B3 care rezulta din fomrulele lor aferente
Reprezentare grafica:sunt mai multe exemple diferite care au diferite puncte de control
12
de control
Considerente teoretice: CB precizie liniara este data de matricea abs si ord a pct de
control care se pot da printro relatie precum avem in programul nostru
Date de intrare:punctele de control
13
Punctele de control care sunt formate prin forulele aferente gradului din pol lui berstein
Reprezentare grafica:
Programul aferent :
OBSERVATIE:aceste program contine elemente comentate mai sus va rog consultati
programele de mai sus
%computation
t=0:0.01:1;%parametrul
B0=(1-t).^3
B1=3*(1-t).^2.*t
B2=3*(1-t).*(t.^2)
B3=t.^3
%pol bernstein in camp de vect
B=[B0;B1;B2;B3]
for i=1:100%instructiunea for este cea care formeaza de 100 de ori matricea %b care
este dependenta de contorul i
b=[0,2,4,6
0,1/i,1/i,0],%matricea b dependenta de i care reprezinta abs si ord punctelor
de control
f=b*B; %curba bezier
hold on
%repr
title('precizie liniara');
plot(b(1,:),b(2,:),'--b')
plot(f(1,:),f(2,:),'r')
hold off
end
14
Date de intrare::
OBSERVATIE:aceste program contine elemente comenteate mai sus consulati programele
de mai sus
p=[1 3 5 9;-3 6 8 3];
for k=1:4% in ciclul for se incrementeaza k care foloseste la afisarea punctelor p
plot(p(1,k),p(2,k),'gs'); hold on
end
A=(1/27)*[27 0 0 0; 8 12 6 1; 1 6 12 8; 0 0 0 27];%matricea A care foloseste la
calcularea punctelor de control
b = inv(A)*p';%b matricea punctelor de control
b=b';%se face inversa lui b
plot(b(1,:), b(2,:), 'bx-');
%computation
t=0:.001:1; %parametrul
B0=(1-t).^3;
B1=3.*(1-t).^2.*t;
B2=3.*(1-t).*t.^2;
B3=t.^3;
15
Curs5
16
n
(1 t ) n i t i
i
Bin (t )
[0,1]
O metod numeric stabil de evaluare a curbelor Bezier pentru t
a fost dezvoltat
de Paul de Casteljau i poart numele algoritmul de Casteljau. Algoritmul calculeaz
[0,1]
punctul de pe curba Bezier pe un anume t
folosind o formul recursiv care lucreaz
pe mai multe nivele. Aceast structur pe nivele, obinut n urma aplicrii algoritmului, se
numete structur sistolic.
17
Programul aferent :
OBSERVATIE :acest program contine elemente comentate ianinte va rog consulati
programele anterioanre pentru mai multe detalii
title('Algoritm Casteljau')
b=ginput(4);%folosim ginputpentru a citi punctele
b=b';%facem inv lui b ;
t=0:0.01:1;%parametrul
B0=(1-t).^3
B1=3*(1-t).^2.*t
B2=3*(1-t).*(t.^2)
B3=t.^3
%pol bernstein in camp de vect
B=[B0;B1;B2;B3]
f=b*B; %curba bezier
hold on
%repr
plot(b(1,:),b(2,:),'r-')
plot(f(1,:),f(2,:),'b')
b
t=1/2;
b1=zeros(2,3); b2=zeros(2,2); b3=zeros(2,1);
for i=1:3%in urmatoarele instructiuni for se creeeeza structura sistolica a
polignului de control
bi j
b1(:,i)=b(:,i)*(1-t)+b(:,i+1)*t;%se formeaza punctul
end
b1
for i=1:2
bi j
b2(:,i)=b1(:,i)*(1-t)+b1(:,i+1)*t; ;%se formeaza punctul
end
b2
bi j
b3(:,1)=b2(:,1)*(1-t)+b2(:,2)*t%se formeaza punctele din structura sistolica
plot(b1(1,:),b1(2,:),'g*')
plot(b1(1,:),b1(2,:),'g-')
plot(b2(1,:),b2(2,:),'k*')
plot(b2(1,:),b2(2,:),'k-')
plot(b3(1,:),b3(2,:),'m*')
hold off
18
bi j
o structura sistolica de punctul
care se gaseste la sfarsitul primei CB si
inceputulceleilante CB un fel de interpolare
Date de intrare:punctele de control ale poligonui de control dupa care se creeaza
structura sistolica puncte care sunt citite cu ajutorul instructiunii ginput
Date de iesire :cele doua CB care reprezinta divizarea CB principala date ce punctele de
control CB devizate care sunt reprezentate de PCT din structura sistolica a poligonului de
control
Reprezentare grafica:
In cele ce urmeaza voi incerca sa arat compunerea CB principale din cele doua CB divizate
-partea de sus a CB
principale
-CB principal
impreuna cu
structura sistolica
-partea de jos a CB
principale
Programul aferent :
19
hold off
s=[b(:,1) b1(:,1) b2(:,1) b3(:,1)];%s reprezinta partea de sus a CB principale
d= [b(:,4) b1(:,3) b2(:,2) b3(:,1)]; )];%d reprezinta partea de jos a CB
principale
figure%creeam o figura
CurbaBezierf(s)%trasam
figure creeam o figura
CurbaBezierf(d)%trasam
pentru
grafic
pentru
grafic
20
Curs6&7
Considerente teoretice: Degree elevation ridicarea n grad
Orice polinom de grad n scris n form monomial, poate fi privit ca un polinom de gard mai
mare, cu primii coeficieni 0.
De ex. p3(x)=x3+2x2-5x+2, poate fi privit sub forma polinomului de grad 5, p 5(x)=0x5+0x4+
x3+2x2-5x+2. n cazul unui polinom scris folosind baza Bernstein, acest lucru nu mai este
valabil. Astfel, de exemplu, parabola scris parametric n baza Bezier sub forma:
x (t ) 0 2
0
1
0
0
1
B0 (t ) B12 (t ) B22 (t ), b0 , b1 , b2 , ( x(t ) B22 (t ), y (t ) B02 (t ))
y (t ) 1
0
0
1
0
0
f (t )
0 3
0 3
0.33 3
1
B0 (t )
B1 (t )
B2 (t ) B33 (t )
1
0.33
0
0
f (t )
se scrie sub form cubic
b0
b0
b1
b1
b2
Poligonul de
b2
b3
Poligonul de
Cele dou curbe sunt identice, dar poligonul de control are mai multe puncte n al doilea
caz.
Algoritmul de determinare a curbei Bezier avnd gradul cu unu mai mare dect al unei
curbe Bezier date se numete algoritmul de ridicare n grad (degree elevation).
21
Date de intrare:matricea b care are 2 linii si un nr de coloane egal cu nr. pc. control
Date de iesire : sunt matricile primei CB de grad n si celei de a doua CB de grad n+1
Reprezentare grafica:pentru reprezentarea grafica a acestor doua CB este nevoie de o
functie curba_bezierf.m care trebuie adaptata sa afiseze in doua cazuri odata pentru n si
odata pentru n+1 pc de control astfel va vi prezenta in continuare cele doua CB
Programul aferent :
22
f (t ) p 0 H 03 (t ) m0 H 13 (t ) m1 H 23 (t ) p1 H 33 (t ); t [0,1]
,
p0 = punctul de nceput
m0 = tangenta n punctul de nceput
p1 = punctul de sosire (sfrit)
m1 = tangenta n punctul de sosire
Date de intrare: vectorul t care serveste drept coeficienti pentru punctele de control
Date de iesire : p0 punctul de nceput ,m0 tangenta n punctul de nceput, p 1 punctul de
sosire (sfrit), m1 tangenta n punctul de sosire,precum si punctele de control aferente
poligonului de cotrol
Reprezentare grafica:
23
Programul aferent :
OBSERVATIE:acest program foloseste elemente comentate in programele anterioare
t=0:0.01:1;%parametrul
B0=(1-t).^3
B1=3*(1-t).^2.*t
B2=3*(1-t).*(t.^2)
B3=t.^3
H0=B0+B1%creeam punctul de control hermite cu conditia lui
H1=B1/3%creeam punctul de control hermite cu conditia
H2=-B2/3%creeam punctul de control hermite cu conditia
H3=B2+B3%creeam punctul de control hermite cu conditia
%pol Hermite in camp de vect
H=[H0;H1;H2;H3]%reprezinta matricea punctelor de control de tipul hermite
p0=[0;0];
m0=[1;1];
m1=[8;0.2]
p1=[5;0];
h1=[p0 m0]
h2=[m1 p1]
h=[h1 h2]
f=h*H; %curba bezier
hold on
%repr
title('curba bezier');
plot(h1(1,:),h1(2,:),'r-')
plot(h2(1,:),h2(2,:),'r-')
plot(f(1,:),f(2,:),'b')
hold off
24
Curs8&9
Considerente teoretice: Suprafeele Bezier se scriu parametric n una din formele:
n
s (u , v) bij B mj (u ) Bin (v );
i 0 j 0
n
s (u , v) bi (u ) Bin (v );
i 0
m
s (u , v) bj (v) B mj (u )
j 0
Forma suprafeei se obine prin metoda tensorial, deplasnd 2 curbe Bezier, numite curbe
de control, una de-a lungul celeilalte. Forma suprafeei se obine nlocuind punctele de
control din ecuaia uneia dintre curbele de control cu ecuaia celeilalte curbe de control.
Date de intrare: punctele de control le vom reine n matricea b. Pe prima linie a matricei
b vom reine abscisele punctelor de control, iar pe linia a doua vom reine ordonatele.
Date de iesire: matricile bx by bz care vor servi punctele de control CB aferente
Reprezentare grafica:
25
Programul aferent:
OBSERVATIE:acest program contine elemente comentate in programele anterioare
%coordonatele x,y si z ale punctelor de control
bx = ones(4,1) * [1 2/3 2/3 0];%initializam matricea bx cu zero
by = ones(4,1) * [0 1/3 4 2]; %initializam matricea by cu zero
bz = ones(4,1) * [0 1 2 3]; %initializam matricea bz cu zero
bz = bz';translatam matricea bz
t = 0:0.05:1; %parametrul
%Polinoamele lui Bernstein de grad 3
B0 = (1-t).^3;
B1 = 3*(1-t).^2 .* t;
B2 = 3*(1-t) .* (t.^2);
B3 = t.^3;
B = [B0;B1;B2;B3];
u=0:0.05:1;% parametru
% Polinoamele lui Bernstein de grad 3
% in functie de u.
B0u = (1-u).^3;
B1u = 3*(1-u).^2 .* u;
B2u = 3*(1-u) .* (u.^2);
B3u = u.^3;
Bu = [B0u;B1u;B2u;B3u];
% coordonatele retelei bezier
% reprezentate cu ajutorul
26
% la inaltimile h = 1,2,3,4;
% pastrate in matricea bz
hold on;
plot3(bx(1,:),by(1,:),bz(1,:),'-r*');%afisam pc de control de pe coloana 1
plot3(bx(2,:),by(2,:),bz(2,:),'-r*'); %afisam pc de control de pe coloana 2
plot3(bx(3,:),by(3,:),bz(3,:),'-r*'); %afisam pc de control de pe coloana 3
plot3(bx(4,:),by(4,:),bz(4,:),'-r*'); %afisam pc de control de pe coloana 4
Considerente teoretice:
pornind de la o curbp Bezier situat n
planul XoY , pe care o deplasm paralel cu
ea nsi de-a lungul axei Oz pn la o
nlime dorit de noi Suprafaa obinut
este o suprafa cilindric. Avem nevoie
de 4 puncte Bezier de control ale curbei
27
Reprezentare grafica:
Programul aferent:
OBSETVATIE :programul nostru este compus din mai multe functii care impreuna
formeaza programul care creeaza o suprafata bezier cilindrica
OBSERVATIE:acest program contine elemente comentate in programele
anterioare
function surfcil(b)%este functia care deseneaza si in care se introduc
datele de intrare
b=[1 2 1 1;1 2 2 1]%matricea pct de control
[bx,by,bz]= bez3cilindru(b);%apelam functia bez3cilindru(b) care
initializeaza matricile bx by bz cu o si bz se transpune
[x,y,z]=bez3surf(bx,by,bz);%apelam functia bez3surf(bx,by,bz care este
cheia in trasarea C-lor.B paralele acesta funtie face ca matrcile bx by bz
sa contina punctele de control ale CB
shading interp;
colormap cool;%coloram suprafata cu schema de culori cool
mesh(x,y,z);%folosim mesh pentru a trasa grafic suprafata
alpha 0.9
% input
% bx,by,bz coord pc bezier dim=4*4
function [x,y,z]=bez3surf(bx,by,bz)% functia bez3surf(bx,by,bz este cheia
in trasarea C-lor.B paralele acesta funtie face ca matrcile bx by bz sa
contina punctele de control ale CB
%parametrii
u=0:0.01:1;
v=0:0.01:1;
B0u=(1-u).^3;
B1u=3.*(1-u).^2.*u;
B2u=3.*(1-u).*(u.^2);
B3u=u.^3;
B0v=(1-v).^3;
B1v=3.*(1-v).^2.*v;
B2v=3.*(1-v).*(v.^2);
B3v=v.^3;
Bu=[B0u;B1u;B2u;B3u];
Bv=[B0v;B1v;B2v;B3v];
x=Bv'*bx*Bu;
y=Bv'*by*Bu;
z=Bv'*bz*Bu;
function [bx,by,bz]=bez3cilindru(b)%aceasta fuunctie este cea care
initializeaza matricile bx by bz cu o si bz se transpune
%
%IN .... bc= dimensiune 2x4 punctele bezier ale curbei din planul xy
%OUT ... b=3x4x4 =[bx,by,bz] punctele bezier ale suprafetei cilindrice
obtine
% prin translatie in directia axei z pina z=3
bx=ones(4,1)*b(1,:);
%bx=[bc(1,:);bc(1,:);bc(1,:);bc(1,:)] ;
by=ones(4,1)*b(2,:);
%by=[bc(2,:);bc(2,:);bc(2,:);bc(2,:)] ;
bz=ones(4,1)*[0 1 2 3];
bz=bz';
Programul aferent:
bc = [1 4 7 9;1 9 8 2];%
bx = ones(4,1) * bc(1,:);
by = ones(4,1) * bc(2,:);
% Ax + By + Cz = 0
% ecuatia deplasamentului
A=20; B=-20; C=1; % coeficientii
% parametrii
u = 0:0.05:1;%parametrul care se foloseste pentru Bu
v = 0:0.05:1;%parametrul care se foloseste pentru BV
% Pol.Bernstein cu u
B0u = (1-u).^3;
B1u = 3.*(1-u).^2.*u;
B2u = 3.*(1-u).*(u.^2);
B3u = u.^3;
Bu = [B0u;B1u;B2u;B3u];
% Pol.Bernstein cu v
B0v = (1-v).^3;
B1v = 3.*(1-v).^2.*v;
B2v = 3.*(1-v).*(v.^2);
B3v = v.^3;
Bv = [B0v;B1v;B2v;B3v];
% coordonatele suprafetei
Dx = 1; % deplasament pe axa Ox