Simplex Noise
# Simplex Noise

Simplex Noise (engl.) ist eine Methode zum Aufbau einer n-dimensionalen Rauschfunktion, vergleichbar Perlin Noise, jedoch mit einem geringeren Rechenaufwand, vor allem in höheren Dimensionen.

Ken Perlin entwickelte den Algorithmus im Jahr 2001, um die Grenzen der klassischen Rauschfunktion zu umgehen, vor allem in höheren Dimensionen.

Die Vorteile des Simplex Noise gegenüber Perlin Noise:

* geringere Rechenkomplexität und weniger Multiplikationen
* skaliert in höheren Dimensionen (4D, 5D). Bei weniger Rechenaufwand ist die Komplexität $O(n^{2})$ für $n$ Dimensionen, statt der $O(2^{n})$ der klassischen Noise
* keine spürbaren Richtungsartefakte (ist isotrop)
* gut definierte und kontinuierliche Gradienten, die günstig berechnet werden können
* einfach in Hardware zu implementieren.

Während klassisches Rauschen zwischen den Werten aus den umliegenden Hypergrid-Endpunkten interpoliert (d. h. Norden, Süden, Osten und Westen in 2D), teilt Simplex Noise den Raum in Simplizes, d. h. n-dimensionale Dreiecke, zwischen denen interpoliert wird. Dies verringert die Anzahl der Datenpunkte. Während ein Hyperwürfel in n Dimensionen $2^{n}$ Ecken hat, besitzt ein Simplex in n Dimensionen nur n+1 Ecken in den Abmessungen. Die Dreiecke sind in 2D gleichseitig, aber in höheren Dimensionen sind die Simplizes nur annähernd regelmäßig.

Simplex Noise ist nützlich für Computergrafikanwendungen, in denen Rauschen in der Regel über 2, 3, 4 oder möglicherweise 5 Dimensionen berechnet wird. Für höhere Dimensionen sind $n$-Kugeln mit $n$-Simplex-Ecken nicht dicht genug bemessen. Dadurch verringert sich der Träger der Funktion auf Null in großen Teilen des Raumes.

## Quellen

* Kurzer Fachartikel mit Source-Code von Stefan Gustavson (PDF; 1,1 MB)
* Animierte "Gummibahn" als Demo Perlins für Simplex Rauschen
* Eine weitere Implementierung des Simplex-Rauschen in C++ (SimplexNoise1234)
