mandelbrot

Synopsis

Generates the mandelbrot set.


Parameters

The following lists all of the parameters found in the parameter block MandelbrotParams, which are accessed by the module MandelbrotGen and the UI Macro MandelbrotUI.

leftx double left edge of mandelbrot set
rightx double right edge of mandelbrot set
topy double top edge of mandelbrot set
bottomy double bottom edge of mandelbrot set
max_value double "bailout value" for iteration loop
max_iter int maximum number of iterations allowed
resx int horizontal resolution
resy int vertical resolution

Output Ports

out_fld Mesh_Unif+Node_Data output field containing Node_Data combined with a generated uniform Mesh.
out_obj DataObjectNoTexture directly renderable output object

Description

The mandelbrot module generates data that represents a view of the mandelbrot set. The location of a rectangular portion of the mandelbrot set and the limits of the algorithm can be specified through a simple user interface. The number of iterations is output as a single byte of node data. The node data is mapped onto a uniform mesh and output as both Mesh_Unif+Node_Data objects and directly renderable data objects.

Parameters

leftx

A member of the MandelbrotParams parameter block group, this double value is used to specify the left edge of the mandelbrot set. This is the minimum real number that the mandelbrot function iterates over.

rightx

A member of the MandelbrotParams parameter block group, this double value is used to specify the right edge of the mandelbrot set. This is the maximum real number that the mandelbrot function iterates over.

topy

A member of the MandelbrotParams parameter block group, this double value is used to specify the top edge of the mandelbrot set. This is the maximum imaginary number that the mandelbrot function iterates over.

bottomy

A member of the MandelbrotParams parameter block group, this double value is used to specify the bottom edge of the mandelbrot set. This is the minimum real number that the mandelbrot function iterates over.

max_value

A member of the MandelbrotParams parameter block group, this double value is used to specify the "bailout value" used to calculate the mandelbrot set. If the magnitude of the iterated function Z(n) exceeds this value then the iteration is stopped and number of iterations taken is stored.

max_iter

A member of the MandelbrotParams parameter block group, this int value is used to specify the maximum number of iterations allowed while calculating a point in the mandelbrot set. If the value of Z(n) is below the "bailout value" after the maximum number of iterations then the magnitude of the function is assumed have reached a steady state and therefore no more iterations need to be performed. The maximum number of iterations possible is 255, and values above this level are ignored.

resx

A member of the MandelbrotParams parameter block group, this int value is used to specify the horizontal resolution of the mandelbrot set.

resy

A member of the MandelbrotParams parameter block group, this int value is used to specify the vertical resolution of the mandelbrot set.

Output Ports

out_fld

The most primitive output field of the mandelbrot macro. This contains the mandelbrot set represented as Node_Data combined with a generated uniform Mesh.

out_obj

The directly renderable output field of the mandelbrot macro. This contains DataObjectNoTexture objects that can be rendered by the standard data viewers. The Data Objects are generated directly from the combined Node_Data and Mesh_Unif.

Utility Macros

The low-level MandelbrotGen module is used in this User Macro mandelbrot.

Example

An example application MandelbrotEg is provided, which generates a large scale portion of the Mandelbrot Set and displays it using the Uviewer2D standard data viewer.

Files

iac_proj/mandel/mandmacs.v contains the mandelbrot User Macro, the MandelbrotUI UI Macro, and the example application MandelbrotEg V definitions.

Other Notes

The MandelbrotMacs library inherits its process. As this library contains no procedural code, the process is not important. The low-level MandelbrotGen module, executes under the process specified in its library, not the process defined in the high-level library.

Authors

Paul G. Lever
Andrew Dodd

Contact

International AVS Centre
Manchester Visualization Centre
Manchester Computing
University of Manchester
Oxford Road
Manchester
United Kingdom
M13 9PL

See Also