1 |
greg |
1.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); |