i_nfunc Library part 2

© Mike Williams 2001,2002,2003,2004

Up | Previous: i_nfunc Library part 1 Next: other built-in functions | Alphabetical Index

This is the f_spikes_2d surface.

The parameters are:

  1. Height of central spike.
  2. Frequency of spikes in the X direction.
  3. Frequency of spikes in the Z direction.
  4. Rate at which the spikes reduce as you move away from the centre.

There's a comment in the source code that says "well known function in quantum mechanics". I don't know quantum mechanics well enough to recognise it.

The parameters are:

  1. Not used.
This function doesn't use the passed parameter, but the old syntax used to require that at least one parameter be present, and the existence of the parameter has been retained in the new code.

This is the f_helical_torus surface. With some sets of parameters, it looks like a helix bent into a circle with, optionally, a torus through the middle. The helix optionally has grooves around the outside.

I'm not completely sure about how the parameters work for this surface.

The parameters are something like:

  1. Major radius
  2. Number of winding loops.
  3. Twistiness of winding. When zero, each winding loop is separate. When set to one, each loop twists into the next one. When set to two, each loop twists into the one after next.
  4. Fatness of winding?
  5. Threshold. Setting this parameter to 1 and the threshold to zero has s similar effect as setting this parameter to zero and the threshold to 1.
  6. Negative minor radius? Reducing this parameter increases the minor radius of the central torus. Increasing it can make the torus disappear and be replaced by a vertical column. The value at which the surface switches from one form to the other depends on several other parameters.
  7. Another fatness of winding control?
  8. Groove period. Increase this for more grooves.
  9. Groove amplitude. Increase this for deeper grooves.
  10. Groove phase. Set this to zero for symmetrical grooves.

function {f_helical_torus
     (x,y,z, 6, 12, 2, 0.1, .5, 1, 0.1, 1, 1.0, 0)}

function {f_helical_torus
     (x,y,z,2, 5, 1, 0.1, 1, 0.5, 1, 6, 3, 0)}
A more controlable helical torus can be created by starting with an ordinary helix and then transforming the coordinate system from cartesian to cylindrical polar coordinates.
The f_comma surface is very much like half a Yin/Yang.

I've included two of them in the image, and chosen the viewing angle so that you can't see that they don't quite fit together properly in the middle.

Actually, they fit reasonably well if you set the threshold to about 0.05.

The parameters are:

  1. Scale.

function {f_comma(x,y,z,1)
The f_polytubes surface consists of a number of tubes. Each tube follows a 2d curve which is specified by a polynomial of degree 4 or less.

The parameters are:

  1. Number of tubes
  2. Constant
  3. Y coefficient.
  4. Y2 coefficient.
  5. Y3 coefficient.
  6. Y4 coefficient.
To put it another way: If we call the parameters A, B, C, D, E, F; then this function generates "A" tubes which all follow the equation "x = B + Cy + Dy2 + Ey3 + Fy4" arranged around the Y axis.

function {f_polytubes(x,y,z,4,0,-1,0,1,0)}

Download a zip file containing the POV source files for all the images that appear on this page.

Up | Previous: i_nfunc Library part 1 Next: other built-in functions | Alphabetical Index