POV-Ray : Newsgroups : povray.beta-test.binaries : Function / pattern issues. New inbuilt f_turbulence(). Server Time
23 Apr 2024 20:04:18 EDT (-0400)
  Function / pattern issues. New inbuilt f_turbulence(). (Message 1 to 1 of 1)  
From: William F Pokorny
Subject: Function / pattern issues. New inbuilt f_turbulence().
Date: 13 Jun 2020 07:34:59
Message: <5ee4b9e3@news.povray.org>
<---------------------- References. Ten previous posts

Function / pattern issues. Updated f_ellipsoid(). New f_lame,...
http://news.povray.org/povray.beta-test.binaries/thread/%3C5ebe9706%241%40news.povray.org%3E/

and

Function / pattern issues. New inbuilt f_morph2to9fncts().
http://news.povray.org/povray.beta-test.binaries/thread/%3C5ec3f269%241%40news.povray.org%3E/

To povr adding an inbuilt f_turbulence() to make available the internal, 
fixed, non-drifting distribution Brownian motion functionality. Attached 
images show the three noise generator distributions and a couple 
isosurface examples.

...
#declare Iso99 = isosurface {
   function { y-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(
                  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 1-3.

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 1-4 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'
storyexampleuse.jpg

Preview of image 'storythreengdists.jpg'
storythreengdists.jpg


 

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.