Outils pour utilisateurs

Outils du site


nucs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
nucs [2017/10/31 10:36]
bvandepo
nucs [2017/10/31 10:44]
bvandepo
Ligne 202: Ligne 202:
 {{http://​homepages.laas.fr/​bvandepo/​files/​splines/​NUCS_k4.png?​1920x1080}} ​ {{http://​homepages.laas.fr/​bvandepo/​files/​splines/​NUCS_k4.png?​1920x1080}} ​
  
-=====Calcul des fonctions de base=====+=====Calcul des fonctions de base jusqu'​à k=3 en considérant une distribution uniforme===== 
 + 
 +===Développement de l'​équation de récurrence===
 {{http://​homepages.laas.fr/​bvandepo/​files/​splines/​splinesnu0002-cut.png?​1920x1080}} ​ {{http://​homepages.laas.fr/​bvandepo/​files/​splines/​splinesnu0002-cut.png?​1920x1080}} ​
 +
 +===Dernière étape du développement de l'​équation de récurrence pour splines quadratiques===
 {{http://​homepages.laas.fr/​bvandepo/​files/​splines/​splinesnu0001-cut.png?​1920x1080}} ​ {{http://​homepages.laas.fr/​bvandepo/​files/​splines/​splinesnu0001-cut.png?​1920x1080}} ​
 +
 {{http://​homepages.laas.fr/​bvandepo/​files/​splines/​splinesnu0003-cut.png?​1920x1080}} ​ {{http://​homepages.laas.fr/​bvandepo/​files/​splines/​splinesnu0003-cut.png?​1920x1080}} ​
 {{http://​homepages.laas.fr/​bvandepo/​files/​splines/​splinesnu0004-cut.png?​1920x1080}} ​ {{http://​homepages.laas.fr/​bvandepo/​files/​splines/​splinesnu0004-cut.png?​1920x1080}} ​
  
  
 +===Script pour comparer les splines générées en utilisant l'​équation de récurrence et les notations matricielles===
 +<file matlab etudebaseu_non_cumulatif.m>​
 +%B. Vandeportaele 2017
 +%étude du comportement des différentes fonctions de bases pour l'​interpolation
 +close all
 +
 +
 +for ncurve=1:5
 +    figure
 +hold on
 +
 +tb=[];
 +for u=0:0.01:1
 +%     b0=1;
 +%     ​b1=(u^3 -3*u^2 +3*u +5 )/6;
 +%     ​b2=(-2*u^3 +3*u^2 +3*u +1 )/6;
 +%     ​b3=(u^3 )/6;
 +%à partir du papier de Huixian, matrice M3 exprimée en colone
 +%spline de degré 3
 +if ncurve==1 ​
 +    b0=(-1*u^3 +3*u^2 -3*u +1 )/6;
 +    b1=(3*u^3 -6*u^2 +0*u +4 )/6;
 +    b2=(-3*u^3 +3*u^2 +3*u +1 )/6;
 +    b3=(u^3 )/6;
 +elseif ncurve==2
 +    b0=(-3*u^2 +6*u -3  )/6;
 +    b1=(9*u^2 -12*u +0 )/6;
 +    b2=(-9*u^2 +6*u +3 )/6;
 +    b3=(3*u^2 )/6;
 +elseif ncurve==3
 +    b0=(-6*u +6  )/6;
 +    b1=(18*u -12 )/6;
 +    b2=(-18*u +6 )/6;
 +    b3=(6*u )/6;
 +elseif ncurve==4
 +%     ​b0=(0.5 * u^2 );
 +%     ​b1=(-u^2 +3*u -3/2 );
 +%     ​b2=(0.5*u^2-3*u +9/2 );
 +%     b3=0;
 +%         
 +
 +%Kaihuai M3 entre (8) et (9)
 +                               ​% ​  ​A ​    ​B ​   C
 + ​b0=0.5*(1 - 2*u + 1  * u^2 ); %  1/2   ​-1 ​   1/2
 + ​b1=0.5*(1 + 2*u + -2 * u^2 ); %  -1     ​1 ​   1/2
 + ​b2=0.5*( u^2 );               ​% ​ 1/2    0    0
 +    b3=0;
 +   ​elseif ncurve==5
 +       ​%dérivée du cas précédent ​
 + ​b0=0.5*(-2 + 2*u  );  ​
 + ​b1=0.5*(2 - 4*u  ); 
 + ​b2=0.5*(2* u );               
 +    b3=0;    ​
 +       
 +end
 +    ​
 +    tb=[tb;​u,​b0,​b1,​b2,​b3,​b0+b1+b2+b3];​
 +end
 +
 +plot (tb(:,​1),​tb(:,​2),'​r-'​);​
 +plot (tb(:,​1),​tb(:,​3),'​g-'​);​
 +plot (tb(:,​1),​tb(:,​4),'​b-'​);​
 +plot (tb(:,​1),​tb(:,​5),'​k-'​);​
 +
 +plot (tb(:,​1),​tb(:,​6),'​c-'​);​
 +%recolle les différentes fonctions de base pour illustrer le poids d'un
 +%Omega pour u^ évoluant de 0 à 4
 +plot (tb(:,​1)+1*ones(size(tb(:,​1))),​tb(:,​4),'​b-'​);​
 +plot (tb(:,​1)+2*ones(size(tb(:,​1))),​tb(:,​3),'​g-'​);​
 +plot (tb(:,​1)+3*ones(size(tb(:,​1))),​tb(:,​2),'​r-'​);​
 +
 +legend('​b0','​b1','​b2','​b3','​somme'​);​
 +end
 +
 +
 +
 +%retrouve l'​expression polynomiale par morceau des Bi à partir de
 +%l'​expression récurente
 +figure
 +hold on
 +axis equal
 +
 +% 2*b2=u^2 ​   => b2=1/2 . u^2
 +%b2 est défini entre 0 et 1 donc pas de changement
 +for u=0:0.01:1
 +    plot (u,​(1/​2)*u^2,'​b+'​);​
 +end
 +
 +
 +for u=1:0.01:2
 +    plot (u,​(1/​2)*u*(2-u),'​r+'​);​
 +end
 +for u=1:0.01:2
 +    plot (u,​(1/​2)*(u-1)*(3-u),'​g+'​);​
 +end
 +%2*b1 obtenu par somme de r+ et g+
 +%2*b1= ​ (u*(2-u))+((u-1)*(3-u)) = 2u -u^2 + 3u -u^2 -3 +u = -2u^2 +6u -3
 +%b1= -u^2 +3u-3/2
 +for u=1:0.01:2
 +    plot (u,​(1/​2)*((u*(2-u))+((u-1)*(3-u))),'​y+'​); ​   ​
 +end
 +%ce b1 est défini entre 1 et 2 donc il faut faire un changement de variable
 +%u'​=(u+1)
 +%b'1= -(u+1)^2 ​      ​+3(u+1)-3/​2
 +%      -u^2 -1 -2u   ​+3u ​ +3 -3/2
 +%      -u^2  +u  +1/2
 +%affiche b'1 entre 0 et 1
 + for u=0:0.01:1
 +     plot (u,( -u^2  +u  +1/​2),'​yo'​); ​   ​
 + end
 +
 +
 +%2*b0
 +%2*b0=(3-u)*(3-u)=9+u^2-6u
 +%b0= 1/2 u^2 -3u +9/2
 +for u=2:0.01:3
 +    plot (u,​(1/​2)*(3-u)*(3-u),'​k+'​);​
 +end
 +%ce b2 est défini entre 2 et 3 donc il faut faire un changement de variable
 +%u'​=(u+2)
 +%b'2= 1/2 (u+2)^2 ​          ​-3(u+2) +9/2
 +%   = 1/2 (u^2 + 4 + 4u)    -3u-6   +9/2
 +%   = 1/2 u^2 + 2 + 2u      -3u-6   +9/2
 +%   = 1/2 u^2 -1u +1/2
 +%affiche 2*b'2 entre 0 et 1
 + for u=0:0.01:1
 +     plot (u,​((1/​2)*u^2 ​ -u  +1/​2),'​ko'​); ​   ​
 + end
 +
 +</​file>​
  
 =====NURBS===== =====NURBS=====
nucs.txt · Dernière modification: 2017/10/31 10:44 par bvandepo