Le Perlin Noise (ouais, ça veut dire bruit de Perlin, mais merde) est une fractale qui permet de rendre plus naturelle une série aléatoire. Le principe est assez simple : prendez n valeurs aléatoires oscillant entre 0 et k et interpolez-les. Vous obtenez un résultat immonde et somme toute très banal. Re-prendez 2*n valeurs aléatoires oscillant entre 0 et k/2 et interpolez-les. Ajoutez le résultat obtenu à la courbe précédente. Recommencez autant de fois que voulu. Servir chaud.

+ + + + + =

Bien, on reprends avec des vrais mots : appelons n la fréquence et k l'amplitude. Plus l'amplitude diminue, moins la courbe a d'influence sur le résultat final. Plus la fréquence augmente, plus la courbe est saccadée. On arrête naturellement l'itération lorsque l'amplitude est trop faible pour être visible.

Concernant le passage sur l'interpolation, juste histoire de vous rafraîchir la mémoire : l'interpolation consiste à construire une courbe à partir de n points donnés. On citera notamment l'interpolation linéaire, qui consiste à relier chaque point par une ligne, l'interpolation sinusoïdale (la même chose, avec des sinus, si si), cubique ou lagrangienne (mais en pratique, tout le monde vous dira de favoriser l'avant-dernière).


linéaire / sinusoïdale / cubique

Le perlin noise en une dimension, c'est déjà super pratique pour tracer des traits à la main informatiquement (principe qui est notamment utilisé dans l'industrie logiciel pour donner un coté esquisse à l'apparence des gui et bien faire comprendre aux clients que le produit qu'ils voient n'est pas terminé - cf Creating Informal Looking Interfaces). Lorsqu'on bascule en 2d, ça permet de générer des textures originales qui rendent super bien (marbre, bois, whatever en fait, il suffit d'appliquer un filtre sur le rendu) et qui ne consomment pas des masses. Lorsqu'on bascule en 3d, ça permet de donner plus de consistance à une map, à faire des jolis nuages, etc.

Et pour conclure, une implémentation en c++/qt vraiment lente ainsi qu'un joli lien vers un monsieur qui en parle mieux que moi (ouais, c'est minable comme redirection, le but était juste de vous présenter le concept).

A noter que ça donne des bugs intéressants aussi.