home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
fish
/
math
/
zplot
/
zplot.docs
< prev
next >
Wrap
Text File
|
1990-10-23
|
23KB
|
437 lines
>>>>> ZPlot 1.3d, ©1990 by Terry W. Gintz <<<<<
ZPlot graphs formulas based on 4-D complex number planes. ZPlot currently
supports the Mandelbrot set, Julia sets, and Phoenix curves, with over 500
mapping variations. The math functions supported include sin(z), sinh(z),
z^z, e^z, z^n, sqrt(z), cos(z), cosh(z), tan(z), tanh(z), log(z), ln(z) and
n^z. Both lo-res(320X200) and hi-res(640X400) plots are possible.
Up to two formulas for z using the above functions may be plotted, using
traditional rules for generating Mandelbrot sets (Benoit B. Mandelbrot) and
Julia sets (G. Julia.) Also, there are mapping options that use non-traditional
methods, such as the epsilon-cross method (Clifford A. Pickover), and
IFS (Michael Barnsley). In addition, since the formula parser is an
interpreter, with its inherent lack of speed, over thirty 'popular' formulas
have been hard-coded to reduce graphing time by 40 to 60 percent. Several
of the built-in formulas are actually capable of producing graphs that the
program could not generate any other way, such as applying the mandelbrot
set to Newton's method for solving quadratic equations.
ZPlot1.3d adds three-dimensional and formula mapping options to ZPlot1.0.
There are also 3 additional color-scaling options in ZPlot 1.3d.
About the windows and menus:
The main or Project menu:
"New Plot" turns on zoom mode, so that detail of the the current plot may
be magnified. Using the mouse, you define a rectangular area, by clicking
twice at opposite corners of the area. The program will begin a new plot at
the new coordinates. Clicking with the left mouse button stops the plot at
any point before the plotting is finished. You may zoom in by defining a
box inside the current drawing area. You zoom out by drawing a box outside
the current drawing area. The outer zoom limits are between -99.99999 and
99.99999. The precision is that of fast floating point (32 bits).
"New Formula" opens the new formula window (see below).
"Continue Draw" continues a plot that was aborted early. The plot is
restarted at the beginning of the last row drawn.
"Save Function" saves all pertinent information about the current plot,
plus the menu settings, and an IFF file for the current screen. You should
save a function before changing the plot type with the Type menu. Pressing
'Q' will quick save the current function to 'RAM:tempfunction' (memory
permitting). This is useful when you want to use a mandelbrot set as a map
for drawing julia curves.
"Load Function" loads a function previously saved by ZPlot, updates menu
settings and loads the IFF file for the saved screen. If the plot was
aborted before finishing, it will be continued at the last row drawn. (If the
plot type was changed before saving the function, the screen will be cleared
and a new plot begun.) Pressing 'R' will recall a function saved with the
quick save option.
"Quit" exits the program.
The Plot Flags menu:
The first two flags determine the basic plot type. This can be
Mandelbrot or Julia. Mandelbrots have inputs of Zx and Zy, while Julias
have inputs of Cx and Cy. Zx and Zy correspond to the min/max values set
in the New Formula window. Cx and Cy correspond to the complex constant
entered in the New Formula window. With mandelbrots, Cx and Cy represent
the initial value of Z before the first iteration. This can be changed to
produce non-symmetrical mandelbrots, or mandelbrots based on formulas whose
inital value of Z must be non-zero to generate anything (such as
f(z)=cz(1-z) where z0=0.5).
The next five flags determine the branch limit, where iteration of the
function stops and points are plotted. This can be based on the real part
of Z, the imaginary part of Z, the absolute value of the real part of Z,
the absolute value of the imaginary part of Z, or usually, the absolute
value of Z. Different trigonometric functions require different branch
limits to accurately map the complex sets.
The remaining flags have to do with how the points are color-scaled, or
determining which point is part of the complex set being mapped. These are
optional methods to vary the mapping of the sets, and this is where some
truly spectacular effects can be acheived.
Biomorphs test the real Z and imaginary Z values after breaking
the iteration loop. If the absolute value of either is less than the preset
zlimit, the point is mapped as part of the set. This method prduces
biological-like structures in the complex plane.
The epsilon-cross method breaks the iteration loop only if the absolute
value of Z-real or Z-imaginary is less than or equal to the zlimit/1000.
Other points are mapped at the time they blow up(exceed the zlimit.) This
produces hair-like structures that branch wildly from the complex set
boundaries.
Level-curves map the set points based on how small the value of Z gets.
This allows the inside of the complex set, or the tenacles of the biomorph,
to be color-scaled. There are two possible level curves. Press '2' to
enable the second-type level curve (if the level option has been previously
chosen). Press '1' to re-enable the first-type level curve. The default
level curve produces colored bands on the inside of the complex set. The
second level curve produces circular patterns inside the complex set.
The Set Only flag plots all non-set points in the backgound color.
The Newton flag is used to map the zeros of a particular function after
the Newton transformation has been applied to the function. The program
doesn't make the transformation (z-(f(z)/f'(z)), where ' stands for d/dx),
but it does allow you to map up to 6 attractors, and set the limit for
convergence to the attractors. Each time the newton flag is set, a window
is opened to allow you to enter up to 6 attractors (or repellers) of the
function, and how close z must come (the limit) to be considered in contact
with the attractor. This flag is mutually exclusive with the Level-Curve,
Biomorph and Epsilon flags, and automatically excludes all points that don't
converge to one of the attractors set, within the preset number of
iterations. The points that converge are colored in one of up-to-6 possible
colors evenly-spaced in the current palette. The non-converging points
are mapped with the set color. Due to rounding errors in the fast-floating
point, not all points converge when all possible attractors are used,
even after 1000 iterations. Non-converging points show up typically as
round areas or spots. Generally, a limit of 50 iterations gives optimum
results. The Newton transformation is normally used with Julia sets, as
the attractors (solutions of the formula) can be calculated beforehand.
Its also possible to explore the Mandelbrot set applied to Newton's method,
but only with some of the built-in formulas mentioned above. It this case,
the solutions of the formula for every point on the screen have to be
calculated separately, which the program does in a dedicated routine.
The Renormalization flag uses a hierarchical lattice transformation to map
magnetic phases, with either the Julia set or Mandelbrot set as the iterated
function. (Consult The Beauty of Fractals by Pietgen and Richter for
appropriate formulas to use.) Basically, the algorithm checks orbits for
convergence to 1 or infinity, and scales these points in different colors.
This flag is mutually exclusive with the Newton, Biomorph, Level-Curve and
Set Only flags.
The Decomposition flag does a binary decomposition on points that do not fit
the complex set. Excludes the Set Only flag. (Consult The Beauty of
Fractals for an explanation of this technique.)
The Phoenix flag rotates the planes, so that the imaginary plane is mapped
horizontally and the real plane is mapped vertically. A graded color
scaling is also enabled (instead of the default modulo scaling). This
option is normally used for mapping Phoenix curves (Shigehiro Ushiki), which
are julia-related curves based on the formula f(z+1)=z²+p+qz. 'p' and 'q'
are constants, and the 'z' term of 'qz' is actually the value of z^n-1, or
the previous value of z before the current iteration. 'zn' is reserved by
ZPlot to represent this value, while the complex constant set in the New
Function window becomes 'p' and 'q'. The real part of the complex constant
is 'p' and the imaginary part of the constant is 'q' (when the Phoenix
option is chosen). If the Phoenix flag is used with the Mandelbrot option,
'j' and 'k' should be used as the constants, since the complex constants p
and q are already used as the starting value of 'z0'.
If you change a flag for any function, the "Continue Draw"
option is not disabled, so the plot may be modified at any point.
The Resolution menu has options for lo-res or hi-res screens. A function
saved in hi-res will be loaded into a hi-res screen (if memory permits) and
the same applies to lo-res functions. The screen and window will close, if
necessary, to establish the correct resolution. If available chip memory is
less than 150 KBytes when ZPlot is initially started up, the hi-res option
is disabled.
The New Formula window:
A color-scaling menu has been added for Plot1.3d that allows you to
choose between graded and modulo color-scaling. Graded scaling uses a
non-repeating color palette, while modulo-scaling repeats the color palette.
The colors selected can be based on either the level-potential of a point or
the escape time of a point. You can control the rate at which the colors
change by entering an optional positive number in the Color-Scaling/Cutoff
Factor Box. As the name implies, this box has varying effects based which
color-scaling option is chosen. For escape-mod plots, the color-scaling
factor determines how fast the palette repeats and what its range for each
color is. For escape-grad plots, color changing is accelerated below the
escape-time set by the color-scaling factor. For level-set plots, the
cutoff factor is applied to the potential of each point. Therefore, logical
entries for the color-scaling factor are integers>(size of color palette),
while the cutoff factor is some fraction of the maximum potential a plot is
expected to generate. Note: this is highly experimental, so play around
with it for best results.
There are string gadgets for entering two formulas in the form of AZ+BZ+
c. Z is the complex variable or function, 'c' is the complex constant, and
A and B are optional real constants. There are additionally a Code gadget,
an Arg gadget and a Limit gadget, that determine how the above formulas are
processed. The code gadget accepts a value of 0 to 9. For a value of 0,
the first formula is always used and the second formula is ignored. For a
value of 1, the second formula is processed and the first formula is
ignored. For a value of 2, the first formula is processed if the Arg value
(another formula which must contain only real terms) is greater than or
equal to the limit set with the Limit gadget. For a value of 3, the first
formula is processed and its output becomes the input of the second formula,
which is then processed. To accomodate the Arg function, there are special
variables, which the program treats as strictly real values. 'X' is the
real value of Z. 'Y' is the coefficient of the imaginary part of 'Z'. 'R'
is the absolute value of Z. 'J' is real part of the complex constant. 'K'
is the coefficient of the imaginary part of the complex constant. These
and other real variables described below can be used in the Arg input, to
create IFS maps of complex functions, as described by Michael Barnsley in
his book, Fractals Everywhere.
About function syntax: The power function 'x^y' is entered in reverse
notation: 'powyx', where y is the exponent, and the variable x may be any
complex variable. The exponential function 'e^z' is entered 'exp(z)' or
'powze.' The function 'z^z' is entered 'powzz' or '^zz.' '^#z' or '^#e' are
also valid entries for the power function, where '#' is any real exponent.
The use of parenthesis is necessary around complex exponents or variables.
E.g. : 'pow(1.5e)(z-i)'. Other functions, such as sin(z), abs(z), cos(z),
log(z) and ln(z) are entered algebraically, with optional parenthesis.
Additional math operators that may be used for a function include ² (square),
and ³ (cube). Additional variables that may be used for functions include
'c' -- the complex constant, and 'cc' -- the complex conjugate. Up to 26
characters may be used in the first formula. For longer formulas, up to 59
characters may be used in the second formula. Combining both gadgets, up to
85 characters may be used for a formula using the Code 3 option.
There are string gadgets for entering the complex constant (real and
imaginary parts), and the min/max ranges for the real and imaginary window
coordinates. These reflect the current range values that may have been
derived from zooming with the New Plot option. They are truncated to 5 or 6
digits depending on their size (6 if less than 10.0). You can get greater
window accuracy, if necessary, by using the zoom option only, after setting
all other plot parameters. Slider-type gadgets control the number of
iterations(1-500), the number of colors used(2-32 in lo-res and 2-16 in
hi-res), the z-limit(1.0-100.0), and the number of real and imaginary steps
used (the size of the picture plotted: 10-320 by 10-200 in lo-res, and 10-640
by 10-400 in hi-res). The more iterations used, the longer it takes to plot
a function, but more detail will be present. 10 is sufficient for most
biomorphs, while more iterations will be required for mandelbrot and julia
sets, depending on the detail required. The Evaluate gadget can be used to
evaluate a complex expression entered in the Function #1 gadget. The
arguments must be real (no variables). The result of the expression will be
entered into the Complex constant gadgets (if not out of range). This is
useful for calculating 'c' for self-squared dragons (as described by
B. Mandelbrot in the Fractal Geometry of Nature). The Evaluate gadgets also
evaluates a 2-digit code for built-in formulas (see below).
Zooming is not available while plotting in 3d.
The colors gadget only affects the number of colors displayed when you use
one of the 9 built-in palettes. The change takes effect immediately when
you press one of the function keys F1-F9. Thus, even finished or partially
done plots may be reduced or increased in colors (using the Continue
gadget).
Click on the 2DPlot gadget to start a new 2d plot from column 1. Click on
Continue gadget to continue a plot at the row it left off, if it is not a
complete drawing. (If the drawing is complete, you can still use Continue
to change the number of colors in any picture.) You can change any
parameter, and use Continue to see the effect of increased resolution, a
different formula, etc. Click on Cancel to retain the previous drawing
parameters and picture.
Click on 3DPlot to open the 3dOptions window, which gives the choice of 4
different 3-dimenision plots, based on linear or logarithmic slopes. The
high plots map hill-type drawings, while the low plots map valley-type
drawings. There is also a MapIff option which allows you to map any IFF
file onto a sphere or other plot based one or two three-dimensional
functions, such as cos(x)+sin(y). The only preset currently supported is
F0, which draws a sphere using the formulas: ±sqr(x²-y²). There is some
extra code in the preset to bring ends together and generally improve the
plot. The mapping options are similiar to those found in my program Plot.
See the docs on Plot for further information.
Pressing the letter 'C' on the keyboard, while not plotting, will cycle the
colors of the current screen palette. Color #2 is not cycled, as this is
reserved for representing enclosure in the complex number set.
Pressing 'S' will cycle all the colors, including the set color.
There are nine palettes available via function keys F1-F9. Optional
palettes may be loaded by modifiying the palette of one of the .iff files
saved by ZPlot (using any IFF-compatible paint program), and reloading the
function. ZPlot uses a default palette for all menu and requester
operations. When switching resolutions, the program will preserve the
current palette, where possible. Going from hires to lores, the 16-color
palette will be duplicated to fill the 32-color palette. Going from lores
to hires, the first 16 colors will be preserved for the 16-color palette.
Pressing 'H' holds the current palette in a buffer, so you use it in another
function. Load the function after pressing 'H' and the saved palette will
be restored. You must press 'H' each time you load a new function, if you
want to preserve the current palette.
Pressing 'P' allows you to grab a point from the screen and place that
value (real and imaginary) into the complex constant used by julia sets.
This is useful when using mandelbrot sets as maps to julia curves. Position
the cross lines over the point you wish to grab, and press the left mouse
button.
As a quick reference guide, the following summary is provided about
supported functions and their syntax, constants and variables, hot keys,
menu short cuts, and built-in formulas with their descriptions:
Functions (capital letters are optional, and parenthesis are necessary
around complex expressions)
sin z --- sinz or SIN(Z) ; where Z can be any complex expression
sinh z --- shz or SH(Z)
cos z --- cosz or COS(Z)
cosh z --- chz or CH(Z)
tan z --- tanz or TAN(Z)
tanh z --- th or TH(Z)
w^z --- powzw or POW(Z)(W) or ^(z)(w) -- where z is the complex exponent and
w may be any complex variable or expression
n^z --- powzn or POW(Z)(N) or ^(z)(n) -- where n is a real variable or
expression
e^z --- expz or EXP(z) -- the exponential function
log z --- lnz or LN(Z) -- natural log of z
log10 z --- logz or LOG(Z) -- log of z at base 10
abs(w) --- absw or ABS(W) -- absolute value of complex term W
sqrt(z) --- sqrz or SQR(Z) -- square root [actually POW(.5)(Z)]
Math operators
+ --- + addition
- --- - subtraction
* --- * multiplication
/ --- / division
² --- ² square
³ --- ³ cube
Constants and variables
i --- i or I -- square root of -1
e --- e or E -- 1e^1 -- 2.71828
pi --- pi or PI -- 3.14159
complex constant --- c or C
complex conjugate --- cc or CC
p --- p or P -- real constant used in phoenix maps; uses the real part of
the complex constant when the Phoenix option is chosen
q --- q or Q -- real constant used in phoenix maps; uses the imaginary
part of the complex constant when the Phoenix option is chosen
z --- z or Z -- function value at any stage of the iteration process
zn --- the value of z at the previous stage of iteration
r --- r or R -- absolute value of Z
x --- x or X -- real part of Z
y --- y or Y -- coefficient of the imaginary part of Z
j --- j or J -- real part of the complex constant
k --- k or K -- coefficient of the imaginary part of the complex constant
Note: j and k are the actual values of the complex constant terms as they
are used in the iteration process, so will vary when the Mandelbrot option
is used.
s -- s or S -- the constant entered in the Limit gadget
Hot keys
F1-F9 --- change to one of 9 color palettes -- useable during plotting.
C --- cycle all colors, except set color, one step -- useable during
plotting.
S --- cycle colors one step, including set color -- useable during plotting.
1 --- enable type-one level curve (if level curve option is selected)
2 --- enable type-two level curve (if level curve option is selected)
H --- save current palette for next function load
Q --- quick save function and screen to RAM:tempfunction
R --- restore function and screen from RAM:tempfunction
P --- grab point (real and imaginary parts) and put values in complex
constant
Menu Short Cuts
Left-Amiga-N --- zoom on for new plot
Left-Amiga-F --- open New Function window
Left-Amiga-C --- Continue plotting of unfinished map
Left-Amiga-S --- open Save Function window
Left-Amiga-L --- open Load Function window
Left-Amiga-Q --- Exit ZPlot
Built-in Formulas (enter the following prefix into the Function #1 gadget)
p0 -- z²+c --- the standard Mandelbrot or Julia set
p1 -- cz(1-z) --- the self-squared dragon set
p2 -- c(z-zr) --- alternate Mandelbrot or Julia set
p3 -- cz²-1 --- alternate Mandelbrot or Julia set
p4 -- z²/(1-cz²) --- alternate Mandelbrot or Julia set
p5 -- z³+c --- cubic Mandelbrot or Julia set
p6 -- ((z²+c-1)/(2z+c-2))² -- renormalization formula for q-plane pictures
p7 -- z²+j+kzn --- Phoenix curve
p8 -- Julia set IFS
p9 -- z²+sin(c) --- alternate Mandelbrot or Julia
r0 -- sin(z)+z²+c --- used with Biomorph option, etc.
r1 -- z^z+z^s+c --- Biomorphs, etc.
r2 -- z^s-z+c --- Biomorphs, etc.
r3 -- sin(z)+exp(z)+c -- Biomorphs, etc.
r4 -- ln(z)+z²+c -- Biomorphs, etc.
r5 -- csin(z) -- transcendental Julia curve, etc.
r6 -- cexp(z) -- transcentental Julia curve, etc.
r7 -- ccos(z) -- transcendental JUlia curve, etc.
r8 -- foggy coastline #1 Mandelbrot IFS (M. Barnsley)
r9 -- foggy coastline #2 Mandelbrot IFS (M. Barnsley)
e0 -- solves modified newton transformation of (z+j)(z+k)(z²+1) for either
Julia or Mandelbrot set.
e1 -- solves modified newton transformation of (z+j)(z²+z+k) for Mandelbrot
and Julia set.
e2 -- solves modified newton transformation of (z-1)(z²+z+c) for either Julia
or Mandelbrot set.
e3 -- solves modified newton transformation of (z+j)(z+k)(z+1) for either
Julia or Mandelbrot set.
e4 -- Chaos Game Julia IFS (M. Barnsley)
e5 -- snowflake Julia IFS (as described in Fractals Everywhere by M.
Barnsley)
e6 -- solves newton transformation of logz-c --- primary roots only.
e7 -- solves newton transformation of exp(z)+c for Mandelbrot or Julia set.
e8 -- solves modified newton transformation of (z-c)(z+1)(z-1) for Mandelbrot
or Julia set.
e9 -- solves newton transformation of (z-c)(z+c)(z²+c²) --- z^4-c^4.
s0 -- solves newton transformation of cosz-c
s1 -- sexpz+c -- transcendental Mandelbrot or Julia set
s2 -- c(z²+1)/z(z²-1) -- B. Mandelbrot's first complex set formula
Note 1: click on the Evaluate gadget to see a brief description of the
bulit-in formula displayed in the Function #2 gadget.
Note 2: all pertinent menu flags must be set for built-in functions to work
as described.
Note 3: modified newton transformation uses the formula: z-(f(z)/(f'z(z)+si),
where the s constant (optional) is entered via the Limit gadget.
Note 4: the prefixes s3-s9 and t0-t9 are reserved for future program
expansion.
Any questions, comments or donations for this program should be addressed to:
Terry W. Gintz
4237 Marcum Lane
Eugene, Or 97402
A $20 donation for ZPlot1.3d gets you the docs to all my current programs
(including those not in the Fred Fish collection), a choice of any of them
at $5 off the suggested price, and update privileges for $10.