Perlin noise: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (→{{header|C}}: Remove vanity tags) |
|||
Line 885: | Line 885: | ||
{{out}} |
{{out}} |
||
<pre>0.13691995878</pre> |
<pre>0.13691995878</pre> |
||
=={{header|Phix}}== |
|||
<lang Phix>constant ph = x"97 A0 89 5B 5A 0F 83 0D C9 5F 60 35 C2 E9 07 E1"& |
|||
x"8C 24 67 1E 45 8E 08 63 25 F0 15 0A 17 BE 06 94"& |
|||
x"F7 78 EA 4B 00 1A C5 3E 5E FC DB CB 75 23 0B 20"& |
|||
x"39 B1 21 58 ED 95 38 57 AE 14 7D 88 AB A8 44 AF"& |
|||
x"4A A5 47 86 8B 30 1B A6 4D 92 9E E7 53 6F E5 7A"& |
|||
x"3C D3 85 E6 DC 69 5C 29 37 2E F5 28 F4 66 8F 36"& |
|||
x"41 19 3F A1 01 D8 50 49 D1 4C 84 BB D0 59 12 A9"& |
|||
x"C8 C4 87 82 74 BC 9F 56 A4 64 6D C6 AD BA 03 40"& |
|||
x"34 D9 E2 FA 7C 7B 05 CA 26 93 76 7E FF 52 55 D4"& |
|||
x"CF CE 3B E3 2F 10 3A 11 B6 BD 1C 2A DF B7 AA D5"& |
|||
x"77 F8 98 02 2C 9A A3 46 DD 99 65 9B A7 2B AC 09"& |
|||
x"81 16 27 FD 13 62 6C 6E 4F 71 E0 E8 B2 B9 70 68"& |
|||
x"DA F6 61 E4 FB 22 F2 C1 EE D2 90 0C BF B3 A2 F1"& |
|||
x"51 33 91 EB F9 0E EF 6B 31 C0 D6 1F B5 C7 6A 9D"& |
|||
x"B8 54 CC B0 73 79 32 2D 7F 04 96 FE 8A EC CD 5D"& |
|||
x"DE 72 43 1D 18 48 F3 8D 80 C3 4E 42 D7 3D 9C B4", |
|||
p = ph&ph |
|||
function fade(atom t) return t * t * t * (t * (t * 6 - 15) + 10) end function |
|||
function lerp(atom t, a, b) return a + t * (b - a) end function |
|||
function grad(int hash, atom x, y, z) |
|||
int h = and_bits(hash,15) |
|||
atom u = iff(h<8 ? x : y), |
|||
v = iff(h<4 ? y : iff(h==12 or h==14 ? x : z)) |
|||
return iff(and_bits(h,1) == 0 ? u : -u) + |
|||
iff(and_bits(h,2) == 0 ? v : -v) |
|||
end function |
|||
function noise(atom x, y, z) |
|||
integer X = and_bits(x,255), |
|||
Y = and_bits(y,255), |
|||
Z = and_bits(z,255) |
|||
x -= floor(x) |
|||
y -= floor(y) |
|||
z -= floor(z) |
|||
atom u = fade(x), |
|||
v = fade(y), |
|||
w = fade(z) |
|||
integer A = p[X+1]+Y, AA = p[A+1]+Z, AB = p[A+2]+Z, |
|||
B = p[X+2]+Y, BA = p[B+1]+Z, BB = p[B+2]+Z |
|||
return lerp(w,lerp(v,lerp(u,grad(p[AA+1], x , y , z ), |
|||
grad(p[BA+1], x-1, y , z )), |
|||
lerp(u,grad(p[AB+1], x , y-1, z ), |
|||
grad(p[BB+1], x-1, y-1, z ))), |
|||
lerp(v,lerp(u,grad(p[AA+2], x , y , z-1 ), |
|||
grad(p[BA+2], x-1, y , z-1 )), |
|||
lerp(u,grad(p[AB+2], x , y-1, z-1 ), |
|||
grad(p[BB+2], x-1, y-1, z-1 )))) |
|||
end function |
|||
printf(1,"Perlin Noise for (3.14,42,7) is %.17f\n",{noise(3.14,42,7)})</lang> |
|||
{{out}} |
|||
<pre> |
|||
Perlin Noise for (3.14,42,7) is 0.1369199587840001 |
|||
</pre> |
|||
=={{header|Python}}== |
=={{header|Python}}== |