Documente Academic
Documente Profesional
Documente Cultură
Computationala
(Curs)
Sandica Robert
1
Curs2
cu segmente de dreaptă
• hold on
• hold off
Considerente teoretice: Curbele explicite reprezentate in matlab sunt date de puncetele de intrat x ,y
precum in programul nostru
x = -2 : 0.01 : 10;
y = 3*x + 4;
Reprezentare grafica:
Programul aferent :
2
y = 3*x + 4; %punctul y
3
Curs3
Considerente teoretice: Pentru CAGD este foarte importantă reprezentarea parametrică a curbelor şi
suprafeţelor. Iar noi in cele ce urmeaza von folosi vectorul t in a creea punctele x, y
Reprezentare grafica:
Programul aferent :
x=2*t.^2+1;%creeam punctul x
y=t-1;%creeam punctul y
4
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)
Considerente teoretice:curba parametrica este data de absisa si de ordonata adica x si y cu ajutorul
vectorului t
Date de iesire :m care serveste drept absica si ordonata aflat prin funtia aferenta
Reprezentare grafica:
Programul aferent :
5
Considerente teoretice:reprezentarea traiectoriei unei elici in spatiu se face cu ajutorul a 3 puncte care au
diferite moduri de aflare x cu ajutorul functiei cos y cu ajutorul functiei sin si z cu ajutorul pasului lui t
Date de iesire :punctele x,y,z aflate in urma folosiri fuuntilor cos sin si a pasului lui t
Reprezentare grafica:
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
6
Curs4
n n
Polinoamele definite prin relaţiile: Bi (t ) (1 t ) n i t i ; t [0,1]; i 0,1,..., n (cu c ni - coeficienţi
n
i i
n n!
binomiali; ), poartă denumirea de polinoamele lui Bernstein de grad n.
i i!(n i )!
Polinoamele lui Bernstein formează o bază pentru spaţiul polinoamelor de grad n. Deci, orice polinom de
grad n se poate scrie ca o combinaţie liniară de polinoame ale lui Bernstein, adică există constantele a0, a1, ...,an,
nu toate nule, astfel încât:
Date de intrare: programul diferite valori a punctelor de control obținet diferite tipuri de curbe:
1) Concavă: b=[0 3 6 9;0 6 6 0]
2) Convexă: b=[0 3 6 9;6 0 0 6]
3) Cu punct de inflexiune: b=[0 3 6 9;1 9 0 6]
4) Cu punct unghiular: b=[0 15 2 12;1 8 7 0]
5) Cu buclă: b=[0 15 2 8;1 8 7 0]
6) Închisă: b=[0 3 6 0;0 6 3 0]
7) Dreaptă: b=[0 1 2 3;0 2 4 6]
Date de iesire : datele de iesire sunt punctele de control calculate prin folmula
n
Bi (t ) (1 t ) ni t i ; t [0,1]; i 0,1,..., n , În matricea f vom avea coordonatele punctelor de pe curba bezier de grad
n
i
3, cu ajutorul cărora vom reprezenta grafic curba utilizând funcția plot.
Reprezentare grafica:
1)
7
2)
3)
4)
5)
8
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
hold on;
plot(b(1,:),b(2,:));
plot(F(1,:),F(2,:),'r-');
hold off;
Considerente teoretice:polinomul de interpolare a functie exponentiale se formeaza cu ajutorul punctelor de
control B1 B2 B3 si cu ajutorul functiilor f1 f2 f3 f4 care servesc drept coeficineti a punctelor de control
Date de iesire : matricea b care contine abscisele si ordonatele punctelor de control a poligounului de control
Reprezentare grafica:
9
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
Considerente teoretice:definite mai sus
Date de iesire : B0 B1B2 B0 B3 care au fost aflate in urma executarii poreatiilor aferente
Reprezentare grafica:
Programul aferent :
OBSERVATIE acest program contine elemente comentate mai sus va rog consultati programele de mai sus
10
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 iesire : B0 B1B2 B0 B3 care sunt aflate din functiile lor aferetne
Reprezentare grafica:
Programul aferent :
OBSERVATIE:acest program contine elemente comentate mai sus va rog consultati progrmaele de mai sus
11
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
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 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
OBSERVATIE:aceste program contine elemente comentate mai sus va rog consultati programele de mai sus
12
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')
hold off
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 iesire :matricea b care este de forma b=[0,2,4,6;0,1/i,1/i,0] acest lucru ne spne ca
ordonata este data liniar prin intructiunea „for”
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
13
title('precizie liniara');
plot(b(1,:),b(2,:),'--b')
plot(f(1,:),f(2,:),'r')
hold off
end
Considerente teoretice: Fiind dată o funcţie f:[a,b]->R, problema de interpolare a funcţiei f printr-un polinom
este problema dterminării polinomului (de cel mai mic grad posibil) care să reproducă nişte informaţii cunoscute
despre funcţia f.
Date de intrare:sunt punctele de control ,matricea p , mat A si matricea b care este inv lui a ori matricea p
Date de iesire : sunt punctele de din matricea x care traseaza graficul functiei interpolate
Reprezentare grafica:
Date de intrare::
OBSERVATIE:aceste program contine elemente comenteate mai sus consulati programele de mai sus
14
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;
B=[B0;B1;B2;B3];
x=b*B; %curba bezier interpolatoare
%output
comet(x(1,:),x(2,:));
15
Curs5
n
f (t ) ( x(t ), y (t )) bi Bin (t ), t [0,1], bi ( xi , y i ), i 0,3 reprezentând punctele de control şi
i 0
n
Bin (t ) (1 t ) ni t i reprezentând polinoamele lui Bernstein de grad n. Curba Bezier este controlată de
i
punctele de control.
Ne interesează o metodă geometrică, care să permită obţinerea unui punct de pe curba Bezier, pentru o
anumită valoare a parametrului t.
O metodă numerică stabilă de evaluare a curbelor Bezier pentru t [0,1] a fost dezvoltată de Paul de Casteljau şi
poartă numele algoritmul de Casteljau. Algoritmul calculează punctul de pe curba Bezier pe un anume t [0,1]
folosind o formulă recursivă care lucrează pe mai multe nivele. Această structură pe nivele, obţinută în urma
aplicării algoritmului, se numeşte structură sistolică.
Date de iesire :punctele de control citite cu ajutorul instr. „ginput” si punctele care formeaza structura sistolica a
poligonului de control
Reprezentare grafica:
OBSERVATIE:se observa cum pentru acelasi program cu ajutorul instructiuni „ginput” se obtin grafice diferite
16
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 „ginput”pentru 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
j
b1(:,i)=b(:,i)*(1-t)+b(:,i+1)*t;%se formeaza punctul bi
end
b1
for i=1:2
j
b2(:,i)=b1(:,i)*(1-t)+b1(:,i+1)*t; ;%se formeaza punctul bi
end
b2
j
b3(:,1)=b2(:,1)*(1-t)+b2(:,2)*t%se formeaza punctele din structura sistolica bi
plot(b1(1,:),b1(2,:),'g*')
plot(b1(1,:),b1(2,:),'g-')
plot(b2(1,:),b2(2,:),'k*')
17
plot(b2(1,:),b2(2,:),'k-')
plot(b3(1,:),b3(2,:),'m*')
hold off
Considerente teoretice:alg lui decastelju de divizare este creeat pentru a diviza la figurat o structura sistolica de
punctul bi j 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
-partea de jos a CB
principale
Programul aferent :
OBSERVATIE:acest program contine elemente comentate inainte va rog consultati programele precedente pentru
mai multe detalii
18
title('Algoritm Casteljau')
b=ginput(4);
b=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
b1(:,i)=b(:,i)*(1-t)+b(:,i+1)*t;
end
b1
for i=1:2
b2(:,i)=b1(:,i)*(1-t)+b1(:,i+1)*t;
end
b2
b3(:,1)=b2(:,1)*(1-t)+b2(:,2)*t
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
19
Curs6&7
Orice polinom de grad n scris în formă monomială, poate fi privit ca un polinom de gard mai mare, cu primii
coeficienţi 0.
De ex. p3(x)=x3+2x2-5x+2, poate fi privit sub forma polinomului de grad 5, p5(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
f (t ) 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
0 0 3 0.33 3 1
se scrie sub formă cubică f (t ) B03 (t ) B1 (t ) B2 (t ) B33 (t ) .
1 0.33 0 0
b0
b0
b1
b1
b2
b2 b3 Poligonul de control
Poligonul de control
Cele două curbe sunt identice, dar poligonul de control are mai multe puncte în al doilea caz.
Algoritmul de determinare a curbei Bezier având gradul cu unu mai mare decât al unei curbe Bezier date se
numeşte algoritmul de ridicare în grad (degree elevation).
Ridicarea în grad a unei curbe de grad n la o curbă de grad n+1 se face conform următorului algoritm:
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
20
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 :
OBSERVATIE acest program foloseste elemente comentte in programele precedente
%b are 2 linii si un nr de coloane egal cu nr. pc. control
b=[0 3 6 9;0 6 6 0];
nrpc=max(size(b))% aflam nr de coloane a matricei b
n=nrpc-1
b1=zeros(2,nrpc+1) %initializam matricea b1 cu 0
b1(:,1)=b(:,1)
b1(:,nrpc+1)=b(:,nrpc)
for i=2:nrpc
b1(:,i)=(i-1)/(n+1)*b(:,i-1)+(1-i/(n+1))*b(:,i)%completam B1 cu punctele din b
pentru a mari gradul funtiei
end
hold on
subplot(2,1,1)
%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]
f=b*B; %curba bezier
hold on
%repr
plot(b(1,:),b(2,:),'r-')
plot(f(1,:),f(2,:),'b')
hold off
subplot(2,1,2)
t=0:0.01:1;%parametrul
B0=(1-t).^4
B1=4*(1-t).^3.*t
B2=6*(1-t).^2.*(t.^2)
B3=4*(1-t).^1.*(t.^3)
B4=t.^4;
%pol bernstein in camp de vect
B=[B0;B1;B2;B3;B4]
f1=b1*B; %curba bezier
hold on
%repr
plot(b1(1,:),b1(2,:),'r-')
21
plot(f1(1,:),f1(2,:),'b')
hold off
hold off
Considerente teoretice: Interpolarea Hermite presupune specificarea în fiecare punct a câte două condiţii:
valoarea funcţiei şi valoarea derivatei.
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
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, p1 punctul de sosire (sfârşit), m1
tangenta în punctul de sosire,precum si punctele de control aferente poligonului de cotrol
Reprezentare grafica:
Programul aferent :
22
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
23
Curs8&9
n m
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 suprafeţei se obţine prin metoda tensorială, deplasând 2 curbe Bezier, numite curbe de control, una de-a
lungul celeilalte. Forma suprafeţei se obţine înlocuind punctele de control din ecuaţia uneia dintre curbele de
control cu ecuaţia celeilalte curbe de control.
Date de intrare: punctele de control le vom reține în matricea b. Pe prima linie a matricei b vom reține abscisele
punctelor de control, iar pe linia a doua vom reține ordonatele.
Reprezentare grafica:
24
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];
25
x = B' * bx * Bu;
y = B' * by * Bu;
z = B' * bz * Bu;
% 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 deplasăm paralel cu ea însăşi de-a lungul
axei Oz până la o înălţime dorită de noi Suprafaţa
obţinută este o suprafaţă cilindrică. Avem nevoie de
4 puncte Bezier de control ale curbei din planul xOy.
Aceste puncte vor avea valoarea coodonatei z = 0;
restul punctelor din reţeaua de punct de control,
valoarea abscisei şi ordonatei se menţine, iar
valoarea lui z se modifică.
26
Date de intrare:matricea b care este cea care ne da punctele de control ale CB care va fi trasa
paralele cu ea
Date de iesire:dreptele paralele care provin din matricea b ele fiind una si aceasi CB dar duse paralel
Reprezentare grafica:
Programul aferent:
OBSETVATIE :programul nostru este compus din mai multe functii care impreuna formeaza
programul care creeaza o suprafata bezier cilindrica
% 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;
27
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;
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';
Reprezentare grafica:
28
bc = [10/11 7 1/2 9;5 3 14 11/10];
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
29
Dx = 1; % deplasament pe axa Ox
Dy = 0.2; % deplasament pe axa Oy
x= Bv' * bx * Bu;
y= Bv' * by * Bu;
for i=0:(size(x,1)-1)
x(i+1,:) = x(i+1,:) + Dx * i;
y(i+1,:) = y(i+1,:) + Dy * i;
end
z = (- A*x - B*y) / C;
z = z';
hold on;
plot3(x(1,:),y(1,:),z(1,:),'*');
surf(x,y,z);
hold off;
30