home *** CD-ROM | disk | FTP | other *** search
- >>>>> 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.
-