next up previous contents index
suivant: Morphing monter: Les courbes de Bézier précédent: Courbe de Bézier définie   Table des matières   Index

Courbe de Bézier pour une liste de points

On suppose que l'on met dans une liste une suite de points par exemple :
L:=[A,B,C,D,E,F,G] et on veut tracer les courbes de Bézier définies par A, B, C puis, par C, D, E puis, par E, F, G.
On peut donc définir la fonction :
  
bezierl(L,x):={
  local LS,A,B,C;
  LS:=[];
  for(j:=0;j<size(L)-2;j:=j+2){
    A:=L[j];B:=L[j+1];C:=L[j+2]; 
    LS:=append(LS,affixe(evalf(A*(1-x)^2+2*B*x*(1-x)+C*x^2)));
  };
  eval(LS);
};
Pour représenter cette équation paramétrique on écrit :
  
courbl(L):={
  local LB,LS;
  LS:=[];
  LB:=bezierl(L,x);
  for (j:=0;j<size(LB);j:=j+1) {
  LS:=concat(LS,plotparam(LB[j],x,0,1));
  };
  return(feuille(LS));
};
Les fonctions ci-dessus se trouvent dans le fichier bezier.
Faire Charger session du menu Fich de xcas et selectionner bezier du répértoire examples/geo pour exécuter ce fichier.
Puis, on clique dans l'écran graphique pour obtenir par exemple les points A, B, C, D, E, F, G et on tape :
courbl([A,B,C,D,E,F,G]), on obtient trois courbes de Bézier successives (passant par A,C,E,G) et que l'on peut déformer en déplacant l'un des points A, B, C, D, E, F, G.
Attention la liste L doit avoir un nombre impair de points car sinon le dernier point n'est pas pris en compte...
Si on veut obtenir une courbe fermée il faut terminer la liste par le premier élément de la liste.


next up previous contents index
suivant: Morphing monter: Les courbes de Bézier précédent: Courbe de Bézier définie   Table des matières   Index
Documentation de giac écrite par Renée De Graeve