+
Complex numbers are an extension of the real number system to include a square root of -1 (see Wikipdeia). Visualizing the graphs of complex functions in a way that does not obscure any important information is a challenge, and this program represents one approach.
Just like the graph of a real valued function is drawn in two dimensions (one for the domain and one for the range) the graph of a complex function naturally lives in four dimensions (two for the domain and two for the range). For us to be able to see such an object, it is necessary to project off one or more of these directions. One common approach is to project off either the magnitude or the angle of the range, giving either a Domain Coloring, or a magnitude-only plot (like this hand-drawn example for the Gamma function from the 1800s).
This program attempts to delay making this choice by computing the entire graph in C2: that is, constructing the surface traced out by the points (z,z^n) as z ranges over the domain, and then projecting to R3 along a time-varying axis, so that no particular direction is permanently obscured. As this projection necessarily drops a dimension at each point in time, the surface is colored (via controls below) in a way that at all times preserves all the 4-dimensional information from the domain (drawn as a grid) and the range (drawn as in domain coloring: with hue and saturation).
The main controls concern the choice of function f(z)=z^n, as well as the portion of the domain over which to draw its graph.
Degree: This chooses the integer value of n in f(z)=z^n. Positive powers show complex monomials and negative powers their reciprocals: the simplest rational functions.
Domain Size: The complex monomials are smooth everywhere and plotted over a disk in C of radius given by Domain Size. Their reciprocals have a pole at the origin, and are plotted on an annulus with radii between 1/DomainSize and DomainSize, cutting out this singularity so the behavior near it is visible.
These controls allow you to adjust coloring of the surface.
Grid: Determines the thickness of grid lines drawn on the graph. These grid lines come from the domain variable x+iy, where they are standard polar coordinates..
Hue: This determines if the surface is colored by hue or monochromatically. The color comes from the codomain variable u+iv, where hue is set by the argument and saturation by the magnitude (high saturation = high magnitude, low saturation=near 0)
Transmission: Determines the opacity of the surface by setting the fraction of light which transmits through.
rotx,roty,rotu: Real values from 0 to 1, determining the fraction of Pi in which to rotate the x,y, or u axis into the v axis (where the default projection occurs) respectively. Setting any given parameter to 1 and leaving the others at 0 will orthographically project from that axis instead.