

< References. Ten previous posts
Function / pattern issues. Updated f_ellipsoid(). New f_lame,...
http://news.povray.org/povray.betatest.binaries/thread/%3C5ebe9706%241%40news.povray.org%3E/
and
Function / pattern issues. New inbuilt f_morph2to9fncts().
http://news.povray.org/povray.betatest.binaries/thread/%3C5ec3f269%241%40news.povray.org%3E/
To povr adding an inbuilt f_turbulence() to make available the internal,
fixed, nondrifting distribution Brownian motion functionality. Attached
images show the three noise generator distributions and a couple
isosurface examples.
...
#declare Iso99 = isosurface {
function { yf_turbulence(
f_gradient(x,y,z,1,0,+1)*3,
y,
f_gradient(x,y,z,+1,0,1)/3,0,2,0.01,0,1,4,0.5,1.7)
+f_turbulence(
f_gradient(x,y,z,1,0,1)/3,
y,
f_gradient(x,y,z,+1,0,+1)*3,0,2,0.01,0,1,4,0.5,1.7)
f_turbulence(x/3,y,z*3,0,2,0.01,0,1,4,0.5,1.7)
+f_turbulence(x*3,y,z/3,0,2,0.01,0,1,4,0.5,1.7)
}
...
f_turbulence()

Parameters: x, y, z
8 extra parameter required:
1. 0,1 or 2 for x, y or z result.
2. The noise generator to use. Valid values 13.
3. Scale returned internal turbulence() value for magnitude / (frequency
for fmod inputs). Using 1.0 results in no scaling. This operation is
the last performed before returning.
4. Normalization.
0  None. Distribution will be centered at 0.0 with deviation
depending upon turbulence settings of octaves, omega and lambda.
1  Adjust to 0 to 1, 0.5 centered distribution. Not clamped. If the
passed deviation value not 'large enough' values can go outside the 0 to
1 range. See (3).
2  Adjust to 1 to +1, 0.0 centered distribution. Not clamped. See
(2,4).
3  Basically (1) with hard clamping such that values below 0 are at
0 and values larger than 1 are at 1.
4  Basically (2) with hard clamping such that values below 1 are
at 1 and values larger than +1 are at +1.
5,7  triangle, cycloidal to 0 to +1 range, respectively.
6,8  triangle, cycloidal to 1 to +1 range, respectively.
5. Deviation. With default turbulence controls this will be 1  and
often less practically. This value should be the deviation as returned
from turbulence(), ahead of any distribution adjustments. The value
passed only used if (4) has a 14 value.
6. Number of octaves for the turbulence call. Pattern version defaults to 6.
7. Omega value for the turbulence call. Pattern version defaults to 0.5.
8. Lambda value for the turbulence call. Pattern version defaults to 2.0.
Notes. (1) above provides for a method to get three substantially
different values about any given point in space. In other words, a way 
for example  to get a vector turbulence with three calls, one each for
x,y,z.
Bill P.
Post a reply to this message
Attachments:
Download 'storyexampleuse.jpg' (166 KB)
Download 'storythreengdists.jpg' (36 KB)
Preview of image 'storyexampleuse.jpg'
Preview of image 'storythreengdists.jpg'

