IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Introduction à l'interpolation numérique

Principales techniques et algorithmes


précédentsommairesuivant

6. Autres changements de variable

Pour améliorer les performances ou pour appliquer un autre type de transition entre deux points initiaux à interpoler, il est possible de faire appel à d'autres changements de variable que celui de la fonction cosinus. L'essentiel étant que pour tout kitxmlcodeinlinelatexdvptfinkitxmlcodeinlinelatexdvp compris dans l'intervalle [0 ; 1], la nouvelle variable soit elle aussi comprise dans l'intervalle [0 ; 1].

Les interpolations les plus courantes se basant sur un changement de variable de l'interpolation linéaire sont les suivantes :

  • Smoothstep : kitxmlcodeinlinelatexdvpu=3t^2-2t^3finkitxmlcodeinlinelatexdvp
  • Smootherstep : kitxmlcodeinlinelatexdvpu=6t^5-15t^4+10t^3finkitxmlcodeinlinelatexdvp
  • La parabole concave (accélération) : kitxmlcodeinlinelatexdvpu=t^2finkitxmlcodeinlinelatexdvp
  • La parabole convexe (décélération) : kitxmlcodeinlinelatexdvpu=2t-t^2finkitxmlcodeinlinelatexdvp

Image non disponible
Figure 6. Variable u en fonction de t sur l'intervalle [0 ; 1]

Sur la figure 6, on peut constater que la fonction smoothstep (courbe rouge) est très proche de la fonction cosinus (courbe noire) mais comme la fonction smoothstep est un polynôme cubique ne mettant en jeu que quelques additions et multiplications, ses performances seront meilleures. Ce type d'interpolation est d'ailleurs implémentée nativement dans les langages de shading pour le rendu d'images 3D.

La fonction smootherstep a été proposée par Ken Perlin (l'inventeur du bruit de Perlin) et a pour avantage d'avoir non seulement une dérivée première qui s'annule pour kitxmlcodeinlinelatexdvpt=0finkitxmlcodeinlinelatexdvp et kitxmlcodeinlinelatexdvpt=1finkitxmlcodeinlinelatexdvp comme pour smoothstep, mais également une dérivée seconde qui s'annule aussi en 0 et en 1 accentuant ainsi la courbure en 0 et en 1.

À la formule du changement de variable près, l'implémentation de ces quatre nouvelles formes d'interpolations est identique à celle de l'interpolation cosinusoïdale.

 
Sélectionnez
function smoothstep(y0: number, y1: number, t: number): number {
  var u = t*t*(3 - 2*t);
  return lerp(y0, y1, u);
}

Implémentation de l'interpolation Smoothstep

Image non disponible
Figure 7. Courbe représentative d'une interpolation Smoothstep

 
Sélectionnez
function smootherstep(y0: number, y1: number, t: number): number {
  var u = t*t*t*(t*(t*6 - 15) + 10);
  return lerp(y0, y1, u);
}

Implémentation de l'interpolation Smootherstep

Image non disponible
Figure 8. Courbe représentative d'une interpolation Smootherstep

 
Sélectionnez
function acceleration(y0: number, y1: number, t: number): number {
  var u = t*t;
  return lerp(y0, y1, u);
}

Implémentation de l'interpolation Acceleration

Image non disponible
Figure 9. Courbe représentative d'une interpolation Acceleration

 
Sélectionnez
function deceleration(y0: number, y1: number, t: number): number {
  var u = t * (2 - t);
  return lerp(y0, y1, u);
}

Implémentation de l'interpolation Deceleration

Image non disponible
Figure 10. Courbe représentative d'une interpolation Deceleration

Bien évidemment, il est possible d'imaginer bien d'autres changements de variable selon les besoins, néanmoins, les artefacts aux jonctions persisteront. Seules d'autres approches peuvent gommer ce qui peut être considéré comme un défaut.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2015 yahiko. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.