The Sad Fate of the Fractals
Presentation of the program package juliasets
and evaluation of the program Ultra Fractal
by Gert Buschmann
It is 30 years since B. Mandelbrot first thought of his strange set. There was nothing revolutionary about his first printouts, they only showed something looking like an infinite system of cardoids and circles of strongly varying size, lying outside each other and some touching. The figure had no connection whatsoever with beauty. However, some years later a method was invented that made it possible to plot out all the points lying near some cardoid or circle no matter what the size, and in this way, without unreasonable computation time, it was possible to look of the true form of the set. Then it seemed that the Mandelbrot set was connected and that it looked as if it was dressed in a fur, the hairs of which could exhibit the most unbelievable shapes:
There is an easy method of colouring the domain outside the black, namely by means of the iteration number, but if you use this method the colours will lie in bands with abrupt passages looking unaesthetic. I am sure that the mathematicians who made these pictures of the Mandelbrot set purposefully rejected colouring.
These computer-generated pictures displayed patterns that differed entirely from anything previously known and beyond anyone's imagination. However, at that time the progress was checked by the fact that the computers worked slowly and had too narrow a scope of colours. But there was certainly futurity in this pictures - for amazement and for decoration. For the procedure, which in Mandelbrot's case only involved the simple function z2, could obviously be generalized to any complex function, and what patterns could appear for so many different functions? Besides better computer technology, really beautiful pictures would, however, need some mathematical research. The method of getting all the near points visible, that is, of drawing the boundary, had to be generalized and a method of achieving smooth colouring had to be found. This is possibly not difficult in cases where the iterations are towards infinity, but what if the function does not fulfil this condition? What then are the terminal positions of the iteration sequences? Is it (still) possible to colour perfectly? Won't the drawing time be intolerably long? These matters were up to the mathematicians to settle, while the computer people developed the computer.
But this settlement has not come off until the fractal project introduced by this article. The mathematicians specializing in the new subject did not care for the pictures; when they needed illustrations in their papers, they were satisfied with somewhat home-made programming. And the exponents of the new and expanding branch of art - "fractal art" - did not inquire about research that could help them rectify with the defects that clearly encumbered their pictures; besides they were busily engaged in finding new ways to create fractal patterns. Countless have been invented, and they have all been easier to deal with than the Mandelbrot and Julia sets. So these sets were slid in the background and not a single technically perfect picture was ever made. However, they still haunt us, for it is solely these that the producers of fractal programs have recourse to in their presentation material. When you buy a program that is able to make pictures like the two shown at the end of this article, why give you the impression that the program is for pictures like this?
Ought it not to be a matter of course nowadays that such a motif looked like this?
The bad understanding of the mathematics has had as consequence that almost all Mandelbrot sets, except the usual, are "false", that is, made without correct application of the concept critical point. To each point in the plane is associated a Julia set, and the idea of the Mandelbrot set is to act as an "atlas" of the Julia sets, since the self-similar structure of a Julia set is a reflection of the local structure of the Mandelbrot set at the point. However, this is only true when the Mandelbrot set is constructed by means of two critical points. This Mandelbrot set is among those enclosed in several of the programs (and its formula is related to the solution of the third-degree equation z3 = 1), but it is constructed from one and not from two different critical points. Therefore a part of it is missing in the right-hand side, so that only the left-hand side gives information about the Julia sets:
There is not much incentive to look more closely at this mud, still less to draw the Julia sets, but they can actually be carried to look like this:
On account of the few demands on the quality of the pictures, over time a fractal has become something you could define as "a colouring based on an iteration formula", meaning that the coordinates of the point are the start values for a repeated operation that runs until a certain condition is fulfilled, and that the number of operations, or the position of the last iterated point, determines the colour of the point. Pictures based on this concept typically look like the "Evaluation Copy" shown. But the program which includes this picture, namely Ultra Fractal, actually has a lot of tools to create more interesting or pretty pictures. As I suppose this program is the most commonly used by the fractal artists, I will keep to this here, and I will ask and answer the question: can you make perfect pictures of the Mandelbrot and Julia sets with this program?
When writing the first version of this article, I had not seriously worked with Ultra Fractal, I had only skimmed the manual and made some simple programs. Therefore I raised questions in the article as to whether Ultra Fractal was capable of this or that. So, when I presented my article to the people behind Ultra Fractal, they reacted extremely promptly, and perhaps more promptly than they would have done, had I only written (unpleasant) truths. They informed me about my mistakes, but still, they could not present me with a single perfect picture of a Mandelbrot or Julia set. Furthermore, they could not tell me how to produce such a picture, but they said is possible - anything is possible with Ultra Fractal. They said that my attention was fixed on problems that are of little interest for the users of Ultra Fractal; users who are primarily artists and who don't care for my conception of aesthetics. They made fun of my notion "the perfect picture".
Therefore I had to study the program more closely and examine the matter myself. My studies revealed that to a large extent Ultra Fractal really is capable of producing the pictures I am looking for:
But it might just as well have been impossible, and the creators of Ultra Fractal would surely say so if I gave them the formulas and asked them to make a program. I imagine that when they planned the program they arrived at this decision: "A fractal is a colouring based on an iteration formula, usually of the form z = f(z) + c, and there are two types: firstly the Mandelbrot and Julia type, in which the colour is determined by the iteration number, and secondly the orbit trap type, in which the colour is determined by the position of the last point of the iteration (lying in the trap). Let us arrange our program so that the user can combine this two types, let the colour be calculated from the number of passages of the loop and from the last complex number in the sequence. And let us arrange it so that these two numbers are transferred to an independent program that calculates the colour, so that a formula procedure can be combined with different colouring procedures. That will really make our program advanced!".
Yes, but not advanced enough to produce my pictures, and I will now explain why. As I said, two programs are needed, one containing the iteration formula, which, when it has finished its work, sends an integer and a complex number to the other program, which from these two numbers calculates the colour value. The programs are written in a special programming language, and the user can write them himself, or use programs written by others. Any function (complex or not) which is composed by the elementary functions (such as xα, exp(x), log(x), sin(x), ...) can occur in the two programs. The first program is divided into several sections. First a global section that performs calculations that concern the whole picture: calculations that must - or ought to - be performed before the picture is drawn pixel for pixel. In the following sections, operations are to be done for each pixel. First an init section in which the start values are set, z = 0, for instance. Hereafter the main section: the loop. In this section the iteration formula, for instance z = z^2 + 1/z + 2*sin(z) + #pixel, is placed. Finally the bailout section. The condition for the stopping (or rather: the continuation) of the iteration is put here. For instance: "|z| < 10000" in the case of iteration towards infinity, or "real(z) < 10 && imag(z) > -2" in the case of the orbit trap type. These two sections produce the integer (= number of passages of the loop) and the complex number z, that are transferred to the colouring program.
In the case of the Mandelbrot and Julia type, the people behind Ultra Fractal primarily have infinity in their thoughts as the terminus for the sequences of iteration, but they know that for the Julia sets the terminus is a finite cycle for the inner domain (that is, the union of the Fatou domains of finite extent). And they possibly also know that a Fatou domain is characterized by the fact that all the sequences of iteration have a common terminal cycle. If we know a point z0 in this cycle, we can colour the Fatou domain if we set the bailout condition to |z - z0| > 0.0001, for instance. If the iteration is towards a fixed point, we can replace this condition by |z - zold| > 0.0001, where zold is the former z-value (found by writing zold = z before the iteration formula), so that we do not need to know the fixed point z0. If the cycle is not a fixed point, that is, if it contains more than one point, the condition |z - z0| < 0.0001 can be satisfied, and the start point can be coloured according to the number of passages of the loop, but the colouring cannot be made continuous. The condition |z - zold| < 0.0001, however, can never be satisfied, meaning that by this method the whole Fatou domain will be coloured black.
It is thus possible in several cases to colour a Fatou domain of finite extent, but is it possible to colour correctly? Correct colouring presupposes that we "know" the cycle, that is: we know its order, a natural number, and its attraction, a positive number < 1. These numbers can be calculated in the global section. If we know a point in the Fatou domain, we can let this point be the start point for a sequence of iteration that runs the maximum iteration number of times. If the last iteration value is z0, we can continue the iteration until |z - z0| < 0.0001, for instance, then the number of passages of this last loop must be the order r of the cycle, and the product of the numbers |f'(z)| for the points z of the cycle is its attraction. It is the logarithm of this number we shall use, so this number we call logatt.
After this calculation in the global section, we go to local sections to be performed pixel for pixel. The rules of Ultra Fractal prescribe the following procedure: In the init section, write z = #pixel. In the loop section, write z = f(z) + c, where c is the Julia set point. And in the bailout section, write |z - z0| > 0.0001. But the numbers that Ultra Fractal transfers to the colouring program, namely the number of the passages of the loop and the last z, are not the numbers we want to be transferred to the colouring program. We want the first number to be divided by r and the second number z to be replaced by log(0.0001/|z - z0|) divided by logatt. How can this be done? The program has fulfilled its work, and we can't go back or change the numbers Ultra Fractal has given us. I asked Ultra Fractal this question, and I got no answer. But there is a way out. Namely to carry out all the calculations in the init section:
z = #pixel
n = 0
while n < #maxiter && |z - z0| > 0.0001
n = n + 1
z = f(z) + c
And then construct the loop so that it gives us our desired values:
n = n div r
m = 0
m = m + 1
z = z + c ; fictive formula
if m == n
z = log(0.0001/|z - z0|)/logatt
m < n
In the colouring program we receive two numbers called #numiter and #z, and if we add them we have the correct real number needed for the colour.
Strange things happen if we try to simplify the fictive formula z = z + c. If we omit it or write z = c or z = z + 0*c, we get discolouration in the picture (another strange thing causing vexation: in the language of Ultra Fractal |z| is not the norm of z, it is the square of the norm).
In this simple case, where we only need a few numbers to be transferred to the colouring program, we can simplify the loop so that it only runs once:
m = 0
m = m + 1
z = z + c
if m == 1
z = n div r + log(0.0001/|z - z0|)/logatt
m < 1
Now to the Mandelbrot set. According to the Ultra Fractal users' manual, a Mandelbrot set is constructed by iteration of a "start value" until a point in the sequence is larger than a given large number, in the case of iteration towards infinity; and in the opposite case, until the difference between two subsequent points is smaller than a given small number. As explained above this construction means that if the terminus of the sequence of iteration is not a fixed point, the pixel will be coloured black. But there is something else wrong with this way of construction. The purpose of the Mandelbrot set is to serve as an atlas of the Julia sets and therefore the start value must satisfy a certain condition, and there must be two start values. The condition is that the points are solutions to the equation f'(z) = 0. For some functions, the point infinity can be regarded as satisfying this equation. Such points are called critical points.
Now, suppose that two critical points have been found, then the true Mandelbrot set is constructed by first letting the one critical point iterate many times (for instance the maximum iteration number of times) so that the sequence comes very close to its terminal position (which usually is a finite cycle of points), and then examining if the other critical point iterates towards that cycle. If this is not the case, the pixel belongs to the Mandelbrot set and is coloured black, otherwise the pixel is coloured in the way described above for the Julia set. However, now the calculations performed above in the global section have to be performed for each pixel. That is, the loop has to be continued in order to find the order and the attraction of the cycle. As this is not possible with the loop of Ultra Fractal, we must perform all the calculations in the init section and let the loop have a fictive function.
The method of colouring described means that we colour on the basis of the potential function, which must be regarded as the most natural way of colouring. However effects are often desired, such as lighting-effect or field lines. This presupposes that we transfer more than one real number from the formula program to the colouring program. As Ultra Fractal is arranged, we can only immediately transfer two, in the shape of the complex number z (if we demand that the fictive loop only runs one time). However, we can easily transfer twice as many: two positive numbers s and t can be made to one, by replacing s by trunc(10000*s)/10000 (giving an error without significance) and t by t/(1+t) (a number < 1). Then we can send the number u = trunc(10000*s) + t/(1+t) to the colouring program and unpack it there: s = trunc(u)/10000 and t = 1/(1/(u-trunc(u)) - 1).
When the formula program is started, the colouring is at first performed by the default colouring program, and thus determined by the iteration number. This means that if you do not make correct use of Ultra Fractal's loop, the first picture you see is wrong - and you see nothing if the loop is set to run only one time. If you desire an other colouring program than the default, you must choose this manually and you must see the drawing start all over again: it is not possible in the formula program to specify a default colouring program to be called. This means that if you are running a program made by others, you must read the author's instructions and call up the correct colouring algorithm. You will have to struggle with this problem when you surf in the database of Ultra Fractal.
The colouring program is divided up into sections in the same way as the formula program, and Ultra Fractal tells me that I can avoid my problems with transfering numbers to the colouring program, by transfering all or some of the calculations to the colouring program, in the first case the formula program should then be empty. But this is not true: the loop is still to run the iteration number of times, and the meaning with this loop is primarily to transfer the z-value for each iteration to the colouring program in order to apply them all (instead of only the last) to average calculations, for instance. Besides a such application of the colouring program will make it totally impossible to combine a formula program with different colourings programs.
Now to finding the critical points. The Ultra Fractal users' manual only mention "a start value", and it notes that "other values create distorted shapes that can be interesting, but they are usually not as well-formed as the standard set". If you want the correct two start values (or only one, in the case of infinity being a critical point), as the things stand, you must calculate the derivative f'(z) and solve the equation f'(z) = 0 manually or by means of a mathematics program, and then entering the values in the program. This is a serious drawback if you want to test functions speedily in order to find interesting localities, and how many users are able to perform this operation? When presented with this question, Ultra Fractal answered: "Most users who cannot compute critical points don't care to, because they don't understand why critical points are important and it doesn't really matter to their art anyway". This may be true, but even for drawing the boundary of the Mandelbrot and Julia sets we have to know the derivative f'(z). The boundary is drawn by estimating the distance to the fractal, and this number is found using a calculation parallel to iteration z = f(z) + c and involving f'(z).
To this about the derivative, Ultra Fractal tells me that "now that UF5 supports functions and classes, there is nothing to stop someone from writing a class that would find the derivative of a function. It doesn't have to be included in the program itself anymore". It is not true that a such class can be written within the language of Ultra Fractal, and that doesn't actually matter, for we can use an approximation of the form (f(z+h) - f(z))/h, where h is a very little number. The problem is the finding and entering of the critical points. An Ultra Fractal program cannot activate an other Ultra Fractal program, or be activated by an external program, nor can a procedure be activated by a click in the window. A critical point (a zero of f'(z)) can be found graphically with the drawing procedure of Ultra Fractal, by colouring according to |f'(z)| and paint the points near the zeros black. But we cannot choose a point with the mouse or the arrows, and if we cound, we cannot automatically activate the program drawing the fractal and transfer the coordinates to it, so that the precise value of the critical points can be calculated in the global section by Newton iteration (z → z - f'(z)/f''(z)). As Ultra Fractal is arranged, we must first run the program showing the critical points and note down the coordinates of one or two of the points, and then start the program drawing the fractal (using default critical points) and in this enter the coordinates of the chosen critical point as parameter.
A method by which we can free ourselves from worrying about critical points, is to calculate all the critical points in the global section, for instance by applying Newton iteration to a large number of regulary situated points, and make a procedure that, in the set of the (different) critical points, chooses pairs of critical points and order these pairs according to decreasing use-value. This row of critical pairs can be indexed with natural numbers, and a pair can be chosen by entering a natural number as parameter. As it is not possible to take all combinations of critical points into consideration, a such procedure must be based on some knowledge of the significance of the critical points. It is possible to write a class that can perform these operations and that can be used by anyone who writes his own formulas.
With Ultra Fractal and an elementary knowledge in mathematics as well as an easily learned programming language, you can produce computer graphic which - in spite of the limitations mentioned here - must be said to pass all bounds. But the program is not for precision work. All fine adjustments of parameters take place in a clumsy way, and it would be interesting to know whether any of the serious artists have wondered at some of this? Have they raised any objections? In the common way of colouring, you can adjust the colours in the scale and displace the scale without redrawing the picture, but any change in the parameters that figure in the colouring program calls for redrawing of the picture, although this is not actually necessary. The people at Ultra Fractal tell me that this stems from the need to restrict the use of memory when the program was put on the market. This perpetual redrawing makes it impractical to fine-adjust. Besides, the most convenient way of adjusting, i.e. scrolling, is only possible in predefined and too large steps. You can adjust by moving the cursor, but you can only see the result in a thumbnail window.
We can do all we desire with Ultra Fractal, we are told, but not in practice and we can be forced to use silly tricks. In practice we can not draw fractal landscapes and strange attractors, because these pictures are not drawn as Ultra Fractal draws a picture: pixel for pixel, in regular way. Nor can we store information during the drawing (in the global section) for use in the next picture. For instance, in the case of the three-dimensional pictures, the height over the ground of the fractal surface, and, in the case of Julia sets, registering the cycles in order to draw the picture rationally. The problem is that Ultra Fractal is a program and not as it ought to be: a program package. There are several reasons for this development within the computer world, one is that the producers of the programs are not themselves serious users of their program, and they do not advertise for experience among the serious users. Therefore their way of thinking is limited. In this article I have called attention to some problematic aspects of Ultra Fractal, but instead of listening to my criticism, the poeple at Ultra Fractal tell me that Ultra Fractal is for artists and my pictures are not art.
If Ultra Fractal is really primarily intended for artists, why have all the pictures you see when you first try the program nothing to do with art? And as artists are usually not skilled mathematicians and programmers, why do skilled mathematicians and programmers not give them a helping hand of real value? It is true that my pictures with boundary and smooth colouring are nothing more than just good pictures (I am no artist), but in spite of this I have allowed myself to set up the following web site:
Make attractive pictures of Mandelbrot and Julia sets with Ultra Fractal
Via this site you can download a program that can produce Ultra Fractal programs and besides some advanced Ultra Fractal programs. When I had made some Ultra Fractal programs that proved that I can, in fact, draw the pictures I am looking for with Ultra Fractal, I thought that the only difference between these programs is that the functions differ, but the functions are all rational, and a rational function is determined by two rows of numbers (the coefficients of the two polynomials), and then it should be an easy programming job, to make a program which can read a txt document with the coefficients written in two columns after each other and produce an Ultra Fractal program that is ready to draw the Mandelbrot set and the Julia sets for this rational function (differentiation and finding of critical points done by the program) - and that moreover allows lighting-effect and field lines. Besides this program, I have made an Ultra fractal program that can draw Mandelbrot and Julia sets for arbitrary complex functions: the formula is written in a class document and another class calculates the critical points from points chosen at random or by using a program showing them graphically. I am sure that this sort of program could contribute quite considerably to the value of Ultra Fractal.
The tour of the database of Ultra Fractal will confirm your suspicions: Ultra Fractal is used more as a plaything by people interested in mathematics and programming than as a tool by artists. You can't help thinking: has a seriously working artist ever found useful material in this database? When you surf on the Internet you can find pictures which claim to be made with Ultra Fractal and to be a work of art:
There is however something problematic with this sort of art. In the same way as photography, it is hard to take seriously as "true art". One could say that visual art in general is becoming problematic, because it no longer demands palpable skills. It seems that it is no longer an art to produce a work of art. But in spite of everything, traditional art has a past from which the present age can take example. Once there was a clear distinction between the true artist and the amateur; a distinction which placed huge demands on the first. Computer art has no past, and as far as I know, there is no higher, systematic education programme within this field - and no criticism. Fractal art is especially problematic, because on the face of things it is easy. If you buy Ultra Fractal, you can easily begin to produce pictures which look quite decorative and which can give the common observer the impression that you are a skilled mathematician. On the other hand, perhaps some day a fractal work of art will be nominated to be the greatest work of art ever created. After years of research and calculations a mathematical genius will succeed in creating a fractal pattern that makes all works of art seen to that date pale. Such a work which is primarily mathematical, is difficult to evaluate, because we cannot know how much of the picture is a result of chance and how much is written by the creator's own hand. However in the case mentioned we feel we can because the mathematician has submitted his theory, and it is clearly original and a master piece. We can ask: isn't just this type of fractal art the true fractal art? Ought it not to be a matter of course that the creator has created the program that draws the picture (at least in shape of an Ultra Fractal program)? Can a creation be called a work of art when it is carried out by tools, the actions of which are obscure for the creator? Are the productions not merely extracts based on chance? To this we must in fairness answer: when the user has acquired large experience in using the tools, then the choices are no more entirely by chance, and it is quite possible for an artist to gather experience so extensive that it allows preconceived visions. At the end of this article I will show some pictures that unconditionally must be called art - they are clearly based on education and experience fully equal to that demanded by the artists of the past.
A fractal picture can impress in two ways, as far as I can see: It has been created by a person with great experience in working with programs with rich facilities, who has possibly not much mathematical knowledge, but who masters the combination of pattern and colour, and who can give the picture some of this substance that any work of art must possess. Or it has been created by a person who displays an elaborate piece of mathematical work, there is possibly not much substance in the picture, but it is thought-provoking. The mathematical constructor will often regard the far-fetched and the use of image treatment as "cheating"; the non-mathematical artist cannot do without these effects. In the case of image treatment, it can be difficult to evaluate the picture technically. How fractal is the pattern on the whole? Could you zoom in if you had the program? That the pattern is only partly a fractal does not necessarily reduce the value of the picture as art, but you cannot be impressed in the same way as if the creator had succeeded in combining different but related fractal patterns, for instance.
My ideal for a fractal work of art is a picture that is a combination of the two types. For my inner look I can see a picture with different but matching patterns, with poems and festoons inlaid, and which is made with an exquisite taste for combination of colours. And I wonder if a picture like this will ever see the light of day.
Ultra Fractal is a large enterprise, and they are good at using big words, but the pictures in the manual are small and careless, and the "thousands of fractal formulas, coloring algorithms, and transformations written by Ultra Fractal users" are such, that if I were an artist interested in this discipline, I think I would lose this interest after seeing all these uncensored formulas. I would realise that I have to do things myself and start from the bottom - learning mathematics and programming if necessarily. Or I would think: "Let me out of here! Take me back to the fractal patterns as God created them, in a colouring that is natural and correct and that is as the great painters of the past would have had it. And then to my horror I would have discovered, that such pictures don't exist. Or rather, that it is first now, so many years after this sort of picture first saw the light of day, that the true pictures are beginning to turn up.
The juliasets.dk program package is based on a complete understanding of the mathematics behind the Mandelbrot and Julia sets, and the pictures are produced in the most logical way. Therefore there is no question of a single program, but of a package divided into categories with different ways of drawing. Furthermore, the design of the programs attaches importance to pureness in style and simplicity in the way of operation; you only see the current numbers and you can use the program by just using the keys and by scrolling.
In fact, juliasets.dk is primarily an article on aesthetics (in Danish), and there are some appendices to this, one of which concerns the mistaken direction of development within the computer world, especially with regard to lay out and the way of operation of programs. The thoughts of this article are illustrated by a number of programs, among others programs for text procession (primarily for handwriting), image editing and fractals.
The fractal project includes a detailed account of the theory (which only presupposes an upper-secondary school education). Some artificial effects are possible in the pictures, but these originate naturally from the theory, as in these pictures for instance, where the so-called critical system of curves is drawn for a non-complex iteration:
The programs should enable you to create the ultimate pictures of the Julia and Mandelbrot sets, that is, pictures where the boundary is drawn, where the colouring is based on the "real iteration number", and of course which are completely faultless. By using the effects you can create fine decorations, but just as Ultra Fractal is not geared to the mathematically correct, juliasets.dk is not geared to the incorrect. Or rather: if you want the incorrect you must edit in the program. This is possible since the programs are open source. As no concrete program can be made so that it can do everything imaginable, every serious fractal artist will meet situations where intervention in the program is desired - and will possibly be short of the background in mathematics and programming to perform this.
The programs of juliasets.dk fall into five categories:
Ratio draws "pure" Mandelbrot and Julia sets for an arbitrary rational function - the only artificial is lighting-effect.
RatioField draws field lines in the Julia sets, and there is a possibility to mix colours, introduce transparency and place pictures and text in the field lines.
Landscape draws landscapes constructed from the distance function.
Quaternion draws pictures for functions in which the complex numbers are replaced by quaternions or hypercomplex numbers.
Attractor draws non-complex Mandelbrot and Julia sets, and when the colouring of a Fatou domain is impossible, the attractor is drawn instead.
The colour scales are primarily mathematical. Their parameters can be adjusted and there are programs for construction of colour scales. It is also possible to import pictures of colour scales.
The type of fractals hardest hit by the poor understanding of the theory, is that in which the complex numbers are replaced by quaternions, which are a sort of four-dimensional number. You will always only see Julia sets, and only from the outside and at some distance (this picture is made with the program Fractal Explorer):
As you cannot colour the space in the same way as you can colour the plane, you have to colour these solids in the same way as the fractal landscapes, namely by means of the distance and the slope of the tangent plane. The quaternion Julia sets seem always to be casual, that is, constructed without a Mandelbrot set. A Mandelbrot set can of course be constructed, and when you zoom in you will find the well known fractal shapes in a three-dimensional version:
With a Mandelbrot set you can find the attractive Julia sets. The non-attractive Julia sets are those having a copious interior, there is not much to see in this interior, unless it is decorated with field lines:
The field line technique is a way of colouring a Fatou domain such that the colours lie orthogonally to the usual direction. This demands nothing special of the Julia set: you can almost always create interesting and (by colour mixing) beautiful pictures. In this picture (made with RatioField) of a casual Julia set, the two Fatou domains are coloured as well as the boundary (the Julia set itself), and the field line colouring is mixed with the usual:
This technique appeals particularly to artistic utilization. At iteration towards infinity, it is not possible to draw the field lines correctly, but you can easily colour the bands of iteration in a way that shows the courses of the field lines, and this technique is very common (but not very aesthetic). At iteration towards a cycle of finite points you have to know its "angle of rotation", and you colour on the basis of angle calculations. I have not found any picture where the field lines are correctly drawn.
In this picture (by Kerry Mitchell) it looks as if the boundary were drawn:
But there is no question of differentiation and distance estimation here, only that the usually too vigorous changes of the colours near the boundary are lessened by using lighting-effect: the calculation of the real iteration number is extended to two extra points near the point and the slope of the resulting triangle in the space is used instead of the real iteration number. Incidentally, this picture is one of those you sometimes meet, where you wonder which function has been used - you have not run into it yourself and you would like to get hold of it.
What is almost the most important aspect in appreciating a picture, is the colour scheme. The colouring is normally performed by a cyclic colour scale, and the choice of the colours in this and the way in which it is used, tell very much about culture and personality. I will spare the reader an example of the many repulsive pictures, and instead point out a fractal artist who must be praised without reservation, namely Janet Parke. All her pictures are (I suppose) created with Ultra Fractal. Thus the Mandelbrot set ought to be presented in the textbooks of mathematics:
In this Julia set there is obviously a lot of image treatment in play, but the picture is really graceful (a candidate to the best ever made?):
Now look at pictures made with juliasets.dk. Look at these sites with descriptions of the programs and a lot of pictures:
Ratio RatioField Landscape Quaternion Attractor
You can learn to master this little Mandelbrot program completely within few minutes, and you will be surprised by the pictures. Find a nice motif, give it nice colouring and press key F9, then your picture is produced in poster size - of course, it takes some time.
After this you should spend an hour or so on the Julia program, which is an introduction to the main programs.
The theory material, which fills 200 pages and contains 200 illustrations, has not yet been translated into English, but you can find it via the main site:
As explained above, by taking recourse to some sort of artifice, it is possible to make many of these pictures with Ultra Fractal. If you are an Ultra Fractal user, see this site:
Make attractive pictures of Mandelbrot and Julia sets with Ultra Fractal
Produced by Gert Buschmann
Revised: December 8th, 2009
This site is a subsection of juliasets.dk