08.10.2013 Aufrufe

Gradientenbasierte Rauschfunktionen und Perlin Noise - Campus ...

Gradientenbasierte Rauschfunktionen und Perlin Noise - Campus ...

Gradientenbasierte Rauschfunktionen und Perlin Noise - Campus ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!