

"Bald Eagle" <cre### [at] netscapenet> wrote:
(Still experimenting and struggling with various aspects of getting patterns
from other platforms to play well with SDL.)
> Hammering out that many equations one after the other ... has allowed me to learn
some new things and gain valuable i
nsights ...
OK, just to list the ones that I've written down so far:
(Questions, comments, and constructive criticism welcome as always)
Important tips to generate quality patterns from equations

Be very careful with the use of parentheses  especially when + or  is in an
equation. Group terms.
You may want to declare different parts of a complex equation as separate
functions, then combine them in the final function
Use fmod instead of mod to get a regular repetition of a pattern across the
origin
HOWEVER, sometimes using mod in certain functions gives a better (more
expected) result  so try both
Use Mike Williams' "shell" trick for isosurfaces to give an infinitely thin line
a visible thickness
Change the line thickness to give definition to patterns that may not show up
with smaller values.
Some equations don't cross the zero/integer/mod threshold often enough to show
finer details. Multiply the
WHOLE equation (use parentheses) by a factor to increase the number of
lines/levels.
Zoom in or out to see pattern attributes that may not be visible or clearly
rendered.
If you're graphing y as a function of x, then you must write it in the form of:
function {y  formula} since when y=formula, the value is 0
If you're graphing a 2argument function of both x and y, then you must write it
in the form of: function {(x  x_formula) + (y  y_formula)}
If you're graphing a polar equation, then write it in the form of: function {r 
formula}
POVRay's internal method of wrapping function values winds up hiding negative
vs positive parts,
and won't be revealed until made as an isosurface, or the function is shifted
by + 0.5 and visualized with a color map
If you're using functions that return values in the 0255 range, you're going to
have to divide the result by 255
If the function repeats over a range of 0255, then you're going to have to use
mod (Function (x, y, z), 256)/255
You're going to need function versions of HSV to RGB to perform color
calculations
For fullcolor patterns, you're going to separate functions for r, g, and b,
plus an average texture using all 3 functions
There are common functions and operations that the function parser doesn't
recognize, and you'll have to write your own versions of
identifiers previously declared in a scene (even for loop iterators!) cannot
then be used in a function
If you're experiencing a blank pattern (all black/white/gray) then you have
likely forgotten to explicitly include x, y, and z into your function
argument list. If your function takes some value N as an argument, but also
uses x, y, or z, then you must #declare F = function (x, y, z, N) {}
If your pattern only appears in the first quadrant (upper right, both x and y
are positive), then you will likely need to use abs(X) and abs(y) in your
equation
Post a reply to this message

