Laborator 6 – Racord de clasa a mai multor cubice …munteanu/cursuri/GGC_L6.pdfRacordurile de...

3
Laborator 6 – Racord de clasa a mai multor cubice Bezier 24 martie 2016 Fie punctele: , , , , , , , , , , , . a) Pentru aceste date determinati celelalte puncte de control cat si punctele de Boor, i..e. calculati , , , , si ; b) desenati cele 3 arce Bezier si poligoanele de control. Indicatie: Racordurile de clasa si a doua cubice Bezier sunt date de ecuatiile: : = ! + ( ) ! : : = ! ! + ! ! ! = ! ! + ! Punctul d se numeste punct de Boor asociat racordului . Particularizam pentru = , n=3 si n=6.Obtinem: daca n=3: = + = + = + daca n=6: = + = + = + Rezolvare: a) clear all syms P1 P2 P3 P4 P5 P6 P7 P8 d1 d2 reals S=solve(['P2/2+P4/2=P3','-P1+2*P2=d1', '-P5+2*P4=d1','P5/2+P7/2=P6', '-P4+2*P5=d2','-P8+2*P7=d2'], 'P2,P4,P5,P7,d1,d2') >> S.P2 ans = (4*P1)/15 + (14*P3)/15 - (4*P6)/15 + P8/15 >> S.P4 ans = (16*P3)/15 - (4*P1)/15 + (4*P6)/15 - P8/15 >> S.P5 ans = (4*P3)/15 - P1/15 + (16*P6)/15 - (4*P8)/15 >> S.P7 ans = P1/15 - (4*P3)/15 + (14*P6)/15 + (4*P8)/15

Transcript of Laborator 6 – Racord de clasa a mai multor cubice …munteanu/cursuri/GGC_L6.pdfRacordurile de...

Page 1: Laborator 6 – Racord de clasa a mai multor cubice …munteanu/cursuri/GGC_L6.pdfRacordurile de clasa !! si !! a doua cubice Bezier sunt date de ecuatiile: Punctul d se numeste punct

Laborator 6 – Racord de clasa 𝑪𝟐 a mai multor cubice Bezier 24 martie 2016

Fie punctele:  𝑷𝟎 𝟎,𝟎 ,𝑷𝟏 𝟎,𝟐 ,𝑷𝟑 𝟑,𝟏 ,𝑷𝟔 𝟓,𝟎 ,𝑷𝟖 𝟖,𝟖 ,𝑷𝟗 𝟖,𝟒 .

a) Pentru aceste date determinati celelalte puncte de control cat si punctele de Boor, i..e. calculati 𝑷𝟐 ,𝑷𝟒  ,𝑷𝟓  ,𝑷𝟕  ,𝒅𝟏   si 𝒅𝟐;

b) desenati cele 3 arce Bezier si poligoanele de control. Indicatie: Racordurile de clasa 𝑪𝟏 si 𝑪𝟐 a doua cubice Bezier sunt date de ecuatiile: 𝑪𝟏:  𝑷𝒏=𝜶𝑷𝒏!𝟏 + (𝟏 − 𝜶)𝑷𝒏!𝟏

𝑪𝟐:  ∃  𝒖𝒏  𝒑𝒖𝒏𝒄𝒕  𝒅  𝒂𝒔𝒕𝒇𝒆𝒍  𝒊𝒏𝒄𝒂𝒕:𝒅 = 𝜶

𝜶!𝟏𝑷𝒏!𝟐 +

!𝟏𝜶!𝟏

𝑷𝒏!𝟏

𝒅 = 𝜶!𝟏𝜶𝑷𝒏!𝟐 +

𝟏𝜶𝑷𝒏!𝟏

Punctul d se numeste punct de Boor asociat racordului 𝑷𝒏. Particularizam pentru 𝜶 =𝟏

𝟐, n=3 si n=6.Obtinem:

• daca n=3: 𝑷𝟑=𝟏𝟐𝑷𝟐 +

𝟏𝟐𝑷𝟒

𝒅𝟏 = −𝑷𝟏 + 𝟐𝑷𝟐 𝒅𝟏 = −𝑷𝟓 + 𝟐𝑷𝟒

• daca n=6: 𝑷𝟔=𝟏𝟐𝑷𝟓 +

𝟏𝟐𝑷𝟕

𝒅𝟐 = −𝑷𝟒 + 𝟐𝑷𝟓 𝒅𝟐 = −𝑷𝟖 + 𝟐𝑷𝟕

Rezolvare: a) clear all syms P1 P2 P3 P4 P5 P6 P7 P8 d1 d2 reals S=solve(['P2/2+P4/2=P3','-P1+2*P2=d1', '-P5+2*P4=d1','P5/2+P7/2=P6', '-P4+2*P5=d2','-P8+2*P7=d2'], 'P2,P4,P5,P7,d1,d2') >> S.P2 ans = (4*P1)/15 + (14*P3)/15 - (4*P6)/15 + P8/15 >> S.P4 ans = (16*P3)/15 - (4*P1)/15 + (4*P6)/15 - P8/15 >> S.P5 ans = (4*P3)/15 - P1/15 + (16*P6)/15 - (4*P8)/15 >> S.P7 ans = P1/15 - (4*P3)/15 + (14*P6)/15 + (4*P8)/15

Page 2: Laborator 6 – Racord de clasa a mai multor cubice …munteanu/cursuri/GGC_L6.pdfRacordurile de clasa !! si !! a doua cubice Bezier sunt date de ecuatiile: Punctul d se numeste punct

>> S.d1 ans = (28*P3)/15 - (7*P1)/15 - (8*P6)/15 + (2*P8)/15 >> S.d2 ans = (2*P1)/15 - (8*P3)/15 + (28*P6)/15 - (7*P8)/15 b) clear all x0=0; y0=0; x1=0; y1=2; x3=3; y3=1; x6=5;y6=0; x8=8;y8=8; x9=9; y9=4; t=0:0.01:1; b0=(1-t).^3; b1=3*t.*(1-t).*(1-t); b2=3*t.*t.*(1-t); b3=t.^3; x2=(4*x1)/15 + (14*x3)/15 - (4*x6)/15 +x8/15; y2=(4*y1)/15 + (14*y3)/15 - (4*y6)/15 +y8/15; x4=(16*x3)/15 - (4*x1)/15 + (4*x6)/15 - x8/15; y4=(16*y3)/15 - (4*y1)/15 + (4*y6)/15 - y8/15; x5=(4*x3)/15 - x1/15 + (16*x6)/15 - (4*x8)/15; y5=(4*y3)/15 - y1/15 + (16*y6)/15 - (4*y8)/15; x7=x1/15 - (4*x3)/15 + (14*x6)/15 + (4*x8)/15; y7=y1/15 - (4*y3)/15 + (14*y6)/15 + (4*y8)/15; d1x=(28*x3)/15 - (7*x1)/15 - (8*x6)/15 + (2*x8)/15; d1y=(28*y3)/15 - (7*y1)/15 - (8*y6)/15 + (2*y8)/15; d2x=(2*x1)/15 - (8*x3)/15 + (28*x6)/15 - (7*x8)/15; d2y=(2*y1)/15 - (8*y3)/15 + (28*y6)/15 - (7*y8)/15; x=x0*b0+x1*b1+x2*b2+x3*b3; y=y0*b0+y1*b1+y2*b2+y3*b3; plot(x,y,'b') hold on xx=x3*b0+x4*b1+x5*b2+x6*b3; yy=y3*b0+y4*b1+y5*b2+y6*b3; plot(xx,yy,'b') hold on

Page 3: Laborator 6 – Racord de clasa a mai multor cubice …munteanu/cursuri/GGC_L6.pdfRacordurile de clasa !! si !! a doua cubice Bezier sunt date de ecuatiile: Punctul d se numeste punct

xxx=x6*b0+x7*b1+x8*b2+x9*b3; yyy=y6*b0+y7*b1+y8*b2+y9*b3; plot(xxx,yyy,'b') hold on X=[x0 x1 x2 x3 x4 x5 x6 x7 x8 x9]; Y=[y0 y1 y2 y3 y4 y5 y6 y7 y8 y9]; plot(X,Y,'x--m') hold on plot([x2 d1x],[y2 d1y],'-g'); hold on plot([x4 d1x],[y4 d1y],'-g'); hold on plot([x5 d2x],[y5 d2y],'-g'); hold on plot([x7 d2x],[y7 d2y],'-g'); axis equal