Gradientenbasierte Rauschfunktionen und Perlin Noise - Campus ...
Gradientenbasierte Rauschfunktionen und Perlin Noise - Campus ...
Gradientenbasierte Rauschfunktionen und Perlin Noise - Campus ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Burger: <strong>Gradientenbasierte</strong> <strong>Rauschfunktionen</strong> <strong>und</strong> <strong>Perlin</strong> <strong>Noise</strong> 15<br />
Wie groß muss das Array G sein? Angenommen, wir möchten eine eindimensionale<br />
Rauschfunktion noise (f) (x) mit der Frequenz f im Intervall<br />
x ∈ [0,xmax] erzeugen. Zur Berechnung des Funktionswerts<br />
noise (f) (xmax) = noise(f ·xmax)<br />
benötigen wir die Gradientenwerte g p,g p+1 mit<br />
p = ⌊f ·xmax⌋.<br />
Wir benötigen daher ein Array mit den Gradientenwerten (g 0,g 1,...g K) mit<br />
K = ⌊f ·xmax⌋+1,<br />
also ein Array der Länge ⌊f ·xmax⌋+2. Halten wir uns an die Konvention<br />
in Gl. 39, dass nämlich die Frequenz f nicht über 0.5 liegen soll, dann ist<br />
die Anzahl der erforderlichen Gradientenwerte etwa die halbe Länge der zu<br />
diskreten Rauschfunktion.<br />
Bei mehrdimensionalen <strong>Rauschfunktionen</strong> steigt allerdings die Zahl der<br />
Gitterpunkte <strong>und</strong> damit die Größe der erforderlichen Tabellen rasch an, so<br />
dass diese Methode in der Praxis kaum attraktiv ist.<br />
3 Zweidimensionale <strong>Rauschfunktionen</strong><br />
Zweidimensionale <strong>Noise</strong>-Funktionen eignen sich z. B. zur Generierung von<br />
zufälligen Texturbildern. Die Vorgangsweise ist analog zum eindimensionalen<br />
Fall. Es werden zweidimensionale <strong>Rauschfunktionen</strong> mit unterschiedlicher<br />
Gr<strong>und</strong>frequenz erzeugt <strong>und</strong> additiv kombiniert.<br />
Zunächst betrachten wir wiederum eine (diesmal zweidimensionale) <strong>Noise</strong>-<br />
Funktion<br />
noise(x,y) : R 2 → R, (45)<br />
mit fixer Gr<strong>und</strong>frequenz f = 1 in beiden Dimensionen. Wiederum sind die<br />
ganzzahligen Gitterpunkte (u,v) ∈ Z 2 auch Nullstellen der Funktion mit den<br />
(zufällig) spezifizierten Gradienten<br />
grad(u,v) : Z 2 → R 2 ,<br />
beziehungsweise gi,j, analog zur bisher verwendeten Kurzschreibweise. Jeder<br />
örtliche Gradient gu,v ist dabei ein zweidimensionaler Vektor<br />
<br />
gradx(u,v)<br />
gu,v = , (46)<br />
grady(u,v) dessen Elemente<br />
gradx(u,v) = ∂noise<br />
∂x (u,v) bzw. grady(u,v) = ∂noise<br />
(u,v) (47)<br />
∂y