Perlin noise: Difference between revisions

Content added Content deleted
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}}==