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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Burger: <strong>Gradientenbasierte</strong> <strong>Rauschfunktionen</strong> <strong>und</strong> <strong>Perlin</strong> <strong>Noise</strong> 34<br />

Algorithmus 6: Implementierungsbeispiele für die 32-Bit Integer-Hashfunktion<br />

hashInt(k). Angenommen wird die übliche Darstellung der Zahlenwerte<br />

im Zweierkomplement. Der Parameter k ist ein beliebiger Integerwert<br />

im Intervall [−2 −31 ,2 31 −1]; der Rückgabewert ist eine positive Integer-Zahl<br />

im Intervall [0,2 31 − 1]. Siehe Tab. 1 zur Beschreibung der hier verwendeten<br />

Bit-Operatoren. maxInt bezeichnet die maximale (positive) 32 Bit-Zahl<br />

(2 31 −1 = 2147483647).<br />

1: HashIntWard(k) ⊲ aus [12]<br />

2: k ← (k ≪ 13) xor k<br />

3: k ← k ·(k 2 ·15731+789221)+1376312589<br />

4: return (k and maxInt)<br />

5: end<br />

6: HashIntShift(k) ⊲ aus [11]<br />

7: M ← (2 31 −1)<br />

8: k ← ¯ k +(k ≪ 15)<br />

9: k ← k xor(k ≫ 12)<br />

10: k ← k +(k ≪ 2)<br />

11: k ← k xor(k ≫ 4)<br />

12: k ← k ·2057<br />

13: k ← k xor(k ≫ 16)<br />

14: return (k and maxInt).<br />

15: end<br />

16: HashIntShiftMult(k) ⊲ aus [11]<br />

17: C ← 668265261 ⊲ a prime or at least odd constant<br />

18: M ← (2 31 −1)<br />

19: k ← (k xor 61) xor(k ≫ 16)<br />

20: k ← k +(k ≪ 3)<br />

21: k ← k xor(k ≫ 4)<br />

22: k ← k ·C<br />

23: k ← k xor(k ≫ 15)<br />

24: return (k and maxInt).<br />

25: end<br />

mensionalen Fall mit Gitterkoordinaten (u,v,w) kann der Integer-Hashwert<br />

beispielsweise durch folgende Methode berechnet werden:<br />

h = hashInt(pu ·u+pv ·v +pw ·w), (97)<br />

wobei pu,pv,pw unterschiedliche (typischerweise kleine) Primzahlen sind.<br />

Damit können wir auf einfache Weise auch jenenHashfunktionen definieren,<br />

die uns für jeden Gitterpunkt imn-dimensionalen Raum dien(unabhängigen)<br />

Elemente des zufälligen Gradientenvektors liefern. Diese hatten wir

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!