1 |
frac(x)=x-floor(x); |
2 |
|
3 |
hermite(p0,p1,r0,r1,t) = p0 * ((2*t-3)*t*t+1) + |
4 |
p1 * (-2*t+3)*t*t + |
5 |
r0 * (((t-2)*t+1)*t) + |
6 |
r1 * ((t-1)*t*t); |
7 |
|
8 |
rand3a(x,y,z) = 1-2*rand(.69692*x+.35084*y+.26765*z); |
9 |
rand3b(x,y,z) = 1-2*rand(.05393*x+.96196*y+.28617*z); |
10 |
rand3c(x,y,z) = 1-2*rand(.04234*x+.46180*y+.54550*z); |
11 |
rand3d(x,y,z) = 1-2*rand(.07211*x+.76411*y+.95567*z); |
12 |
|
13 |
noise3(x,y,z) = noise_3( floor(x),frac(x),ceil(x), |
14 |
floor(y),frac(y),ceil(y), |
15 |
floor(z),frac(z),ceil(z) ); |
16 |
|
17 |
noise_3(xl,xd,xu,yl,yd,yu,zl,zd,zu) = |
18 |
hermite( |
19 |
hermite( |
20 |
hermite(rand3d(xl,yl,zl), |
21 |
rand3d(xu,yl,zl), |
22 |
rand3a(xl,yl,zl), |
23 |
rand3a(xu,yl,zl), |
24 |
xd), |
25 |
hermite(rand3d(xl,yu,zl), |
26 |
rand3d(xu,yu,zl), |
27 |
rand3a(xl,yu,zl), |
28 |
rand3a(xu,yu,zl), |
29 |
xd), |
30 |
(1-xd)*rand3b(xl,yl,zl)+ |
31 |
xd*rand3b(xu,yl,zl), |
32 |
(1-xd)*rand3b(xl,yu,zl)+ |
33 |
xd*rand3b(xu,yu,zl), |
34 |
yd), |
35 |
hermite( |
36 |
hermite(rand3d(xl,yl,zu), |
37 |
rand3d(xu,yl,zu), |
38 |
rand3a(xl,yl,zu), |
39 |
rand3a(xu,yl,zu), |
40 |
xd), |
41 |
hermite(rand3d(xl,yu,zu), |
42 |
rand3d(xu,yu,zu), |
43 |
rand3a(xl,yu,zu), |
44 |
rand3a(xu,yu,zu), |
45 |
xd), |
46 |
(1-xd)*rand3b(xl,yl,zu)+ |
47 |
xd*rand3b(xu,yl,zu), |
48 |
(1-xd)*rand3b(xl,yu,zu)+ |
49 |
xd*rand3b(xu,yu,zu), |
50 |
yd), |
51 |
(1-yd)*((1-xd)*rand3c(xl,yl,zl) + |
52 |
xd*rand3c(xu,yl,zl)) + |
53 |
yd*((1-xd)*rand3c(xl,yu,zl) + |
54 |
xd*rand3c(xu,yu,zl)), |
55 |
(1-yd)*((1-xd)*rand3c(xl,yl,zu) + |
56 |
xd*rand3c(xu,yl,zu)) + |
57 |
yd*((1-xd)*rand3c(xl,yu,zu) + |
58 |
xd*rand3c(xu,yu,zu)), |
59 |
zd); |